annotate variant_effect_predictor/Bio/EnsEMBL/Variation/TranscriptVariation.pm @ 1:d6778b5d8382 draft default tip

Deleted selected files
author willmclaren
date Fri, 03 Aug 2012 10:05:43 -0400
parents 21066c0abaf5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1 =head1 LICENSE
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 Copyright (c) 1999-2012 The European Bioinformatics Institute and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 Genome Research Limited. All rights reserved.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 This software is distributed under a modified Apache license.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 For license details, please see
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 http://www.ensembl.org/info/about/code_licence.html
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11 =head1 CONTACT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13 Please email comments or questions to the public Ensembl
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 developers list at <dev@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Questions may also be sent to the Ensembl help desk at
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17 <helpdesk@ensembl.org>.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 Bio::EnsEMBL::Variation::TranscriptVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 use Bio::EnsEMBL::Variation::TranscriptVariation;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 my $tv = Bio::EnsEMBL::Variation::TranscriptVariation->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30 -transcript => $transcript,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 -variation_feature => $var_feat
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 print "consequence type: ", (join ",", @{$tv->consequence_type}), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 print "cdna coords: ", $tv->cdna_start, '-', $tv->cdna_end, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 print "cds coords: ", $tv->cds_start, '-', $tv->cds_end, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37 print "pep coords: ", $tv->translation_start, '-',$tv->translation_end, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 print "amino acid change: ", $tv->pep_allele_string, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 print "codon change: ", $tv->codons, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 print "allele sequences: ", (join ",", map { $_->variation_feature_seq }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 @{ $tv->get_all_TranscriptVariationAlleles }, "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45 A TranscriptVariation object represents a variation feature which is in close
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 proximity to an Ensembl transcript. A TranscriptVariation object has several
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 attributes which define the relationship of the variation to the transcript.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51 package Bio::EnsEMBL::Variation::TranscriptVariation;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 use warnings;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56 use Bio::EnsEMBL::Utils::Scalar qw(assert_ref check_ref);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 use Bio::EnsEMBL::Variation::TranscriptVariationAllele;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58 use Bio::EnsEMBL::Variation::Utils::VariationEffect qw(overlap within_cds);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 use Bio::EnsEMBL::Variation::BaseTranscriptVariation;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 use base qw(Bio::EnsEMBL::Variation::BaseTranscriptVariation Bio::EnsEMBL::Variation::VariationFeatureOverlap);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 Arg [-TRANSCRIPT] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 The Bio::EnsEMBL::Transcript associated with the given VariationFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 Arg [-VARIATION_FEATURE] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69 The Bio::EnsEMBL::VariationFeature associated with the given Transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 Arg [-ADAPTOR] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 A Bio::EnsEMBL::Variation::DBSQL::TranscriptVariationAdaptor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 Arg [-DISAMBIGUATE_SINGLE_NUCLEOTIDE_ALLELES] :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 A flag indiciating if ambiguous single nucleotide alleles should be disambiguated
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76 when constructing the TranscriptVariationAllele objects, e.g. a Variationfeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 with an allele string like 'T/M' would be treated as if it were 'T/A/C'. We limit
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78 ourselves to single nucleotide alleles to avoid the combinatorial explosion if we
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 allowed longer alleles with potentially many ambiguous bases.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 my $tv = Bio::EnsEMBL::Variation::TranscriptVariation->new(
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 -transcript => $transcript,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 -variation_feature => $var_feat
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87 Description: Constructs a new TranscriptVariation instance given a VariationFeature
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 and a Transcript, most of the work is done in the VariationFeatureOverlap
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89 superclass - see there for more documentation.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 Returntype : A new Bio::EnsEMBL::Variation::TranscriptVariation instance
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91 Exceptions : throws unless both VARIATION_FEATURE and TRANSCRIPT are supplied
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 my $class = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 my %args = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101 # swap a '-transcript' argument for a '-feature' one for the superclass
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 for my $arg (keys %args) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 if (lc($arg) eq '-transcript') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 $args{'-feature'} = delete $args{$arg};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109 # call the superclass constructor
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110 my $self = $class->SUPER::new(%args) || return undef;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112 # rebless the alleles from vfoas to tvas
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 map { bless $_, 'Bio::EnsEMBL::Variation::TranscriptVariationAllele' }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 @{ $self->get_all_TranscriptVariationAlleles };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 return $self;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 sub get_TranscriptVariationAllele_for_allele_seq {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120 my ($self, $allele_seq) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 return $self->SUPER::get_VariationFeatureOverlapAllele_for_allele_seq($allele_seq);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124 =head2 add_TranscriptVariationAllele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 Arg [1] : A Bio::EnsEMBL::Variation::TranscriptVariationAllele instance
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 Description: Add an allele to this TranscriptVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 Returntype : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 Exceptions : throws if the argument is not the expected type
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 sub add_TranscriptVariationAllele {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 my ($self, $tva) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 assert_ref($tva, 'Bio::EnsEMBL::Variation::TranscriptVariationAllele');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 return $self->SUPER::add_VariationFeatureOverlapAllele($tva);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 =head2 get_reference_TranscriptVariationAllele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 Description: Get the object representing the reference allele of this TranscriptVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 Returntype : Bio::EnsEMBL::Variation::TranscriptVariationAllele instance
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149 sub get_reference_TranscriptVariationAllele {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151 return $self->SUPER::get_reference_VariationFeatureOverlapAllele(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 =head2 get_all_alternate_TranscriptVariationAlleles
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 Description: Get a list of the alternate alleles of this TranscriptVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 Returntype : listref of Bio::EnsEMBL::Variation::TranscriptVariationAllele objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 sub get_all_alternate_TranscriptVariationAlleles {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 return $self->SUPER::get_all_alternate_VariationFeatureOverlapAlleles(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 =head2 get_all_TranscriptVariationAlleles
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 Description: Get a list of the all the alleles, both reference and alternate, of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171 this TranscriptVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 Returntype : listref of Bio::EnsEMBL::Variation::TranscriptVariationAllele objects
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 sub get_all_TranscriptVariationAlleles {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180 return $self->SUPER::get_all_VariationFeatureOverlapAlleles(@_);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 =head2 cdna_allele_string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Description: Return a '/' delimited string of the alleles of this variation with respect
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187 to the associated transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195 sub cdna_allele_string {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198 unless ($self->{_cdna_allele_string}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 $self->{_cdna_allele_string} = join '/', map { $_->feature_seq } @{ $self->get_all_TranscriptVariationAlleles };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 return $self->{_cdna_allele_string};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 =head2 pep_allele_string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 Description: Return a '/' delimited string of amino acid codes representing
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 all the possible changes made to the peptide by this variation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 sub pep_allele_string {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 unless ($self->{_pep_allele_string}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 my @peptides = grep { defined } map { $_->peptide } @{ $self->get_all_TranscriptVariationAlleles };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 $self->{_pep_allele_string} = join '/', @peptides;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 return $self->{_pep_allele_string};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 =head2 codons
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231 Description: Return a '/' delimited string of all possible codon sequences.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 The variant sequence within the codon will be capitalised while
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 the rest of the codon sequence will be in lower case
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 Returntype : string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 Status : Stable
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 sub codons {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 unless ($self->{_display_codon_allele_string}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 my @display_codons = grep { defined } map { $_->display_codon } @{ $self->get_all_TranscriptVariationAlleles };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 $self->{_display_codon_allele_string} = join '/', @display_codons;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 return $self->{_display_codon_allele_string};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 =head2 codon_position
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 Description: For variations that fall in the CDS, returns the base in the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257 codon that this variation falls in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258 Returntype : int - 1, 2 or 3
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 sub codon_position {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 unless ($self->{_codon_position}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270 my $cdna_start = $self->cdna_start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 my $tran_cdna_start = $self->transcript->cdna_coding_start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274 # we need to take into account the exon phase
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 my $exon_phase = $self->transcript->start_Exon->phase;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277 my $phase_offset = $exon_phase > 0 ? $exon_phase : 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 if (defined $cdna_start && defined $tran_cdna_start) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 $self->{_codon_position} = (($cdna_start - $tran_cdna_start + $phase_offset) % 3) + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284 return $self->{_codon_position};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 =head2 affects_cds
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 Description: Check if any of this TranscriptVariation's alleles lie within
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 the CDS of the Transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 Returntype : boolean
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 sub affects_cds {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 return scalar grep { within_cds($_) } @{ $self->get_all_alternate_TranscriptVariationAlleles };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 =head2 affects_peptide
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 Description: Check if any of this TranscriptVariation's alleles change the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306 resultant peptide sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307 Returntype : boolean
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 Exceptions : None
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309 Caller : general
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 sub affects_peptide {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 return scalar grep { $_->SO_term =~ /stop|non_syn|frameshift|inframe|initiator/ } map {@{$_->get_all_OverlapConsequences}} @{ $self->get_all_alternate_TranscriptVariationAlleles };
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 sub _protein_function_predictions {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322 my ($self, $analysis) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 my $tran = $self->transcript;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 my $matrix = $tran->{_variation_effect_feature_cache}->{protein_function_predictions}->{$analysis};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 unless ($matrix || exists($tran->{_variation_effect_feature_cache}->{protein_function_predictions}->{$analysis})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 my $pfpma = $self->{adaptor}->db->get_ProteinFunctionPredictionMatrixAdaptor;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 $matrix = $pfpma->fetch_by_analysis_translation_md5($analysis, $self->_translation_md5);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333 $tran->{_variation_effect_feature_cache}->{protein_function_predictions}->{$analysis} = $matrix;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 return $matrix;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339 =head2 hgvs_genomic
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341 Description: Return the strings representing the genomic-level effect of each of the alleles
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 of this variation in HGVS format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 Returntype : hashref where the key is the allele sequence and then value is the HGVS string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 sub hgvs_genomic {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 return _hgvs_generic(@_,'genomic');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 =head2 hgvs_coding
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 Description: Return the strings representing the CDS-level effect of each of the alleles
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 of this variation in HGVS format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 Returntype : hashref where the key is the allele sequence and then value is the HGVS string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 sub hgvs_coding {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 deprecate('HGVS coding support has been moved to hgvs_transcript. This method will be removed in the next release.');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 return _hgvs_generic(@_,'transcript');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368 =head2 hgvs_transcript
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 Description: Return the strings representing the CDS-level effect of each of the alleles
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 of this variation in HGVS format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372 Returntype : hashref where the key is the allele sequence and then value is the HGVS string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 sub hgvs_transcript {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 return _hgvs_generic(@_,'transcript');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 =head2 hgvs_protein
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 Description: Return the strings representing the protein-level effect of each of the alleles
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385 of this variation in HGVS format
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386 Returntype : hashref where the key is the allele sequence and then value is the HGVS string
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 Exceptions : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388 Status : At Risk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 sub hgvs_protein {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393 return _hgvs_generic(@_,'protein');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396 =head
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 # We haven't implemented support for these methods yet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 sub hgvs_rna {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 return _hgvs_generic(@_,'rna');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 sub hgvs_mitochondrial {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 return _hgvs_generic(@_,'mitochondrial');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 sub _hgvs_generic {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 my $reference = pop;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 my $hgvs = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414 #ÊThe rna and mitochondrial modes have not yet been implemented, so return undef in case we get a call to these
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415 return undef if ($reference =~ m/rna|mitochondrial/);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417 # The HGVS subroutine
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 my $sub = qq{hgvs_$reference};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 # Loop over the TranscriptVariationAllele objects associated with this TranscriptVariation
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421 foreach my $tv_allele (@{ $self->get_all_alternate_TranscriptVariationAlleles }) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 #ÊIf an HGVS hash was supplied and the allele exists as key, set the HGVS notation for this allele
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424 if (defined($hgvs)) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 my $notation = $hgvs->{$tv_allele->variation_feature_seq()};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 $tv_allele->$sub($notation) if defined $notation;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428 # Else, add the HGVS notation for this allele to the HGVS hash
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430 $hgvs->{$tv_allele->variation_feature_seq()} = $tv_allele->$sub();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 return $hgvs;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 sub _prefetch_for_vep {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 $self->cdna_coords;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 $self->cds_coords;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442 $self->translation_coords;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443 $self->pep_allele_string;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 1;