annotate variant_effect_predictor/Bio/Variation/RNAChange.pm @ 0:2bc9b66ada89 draft default tip

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: RNAChange.pm,v 1.10 2002/10/22 07:38:49 lapp Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Variation::RNAChange
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Heikki Lehvaslaiho <heikki@ebi.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Heikki Lehvaslaiho
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Variation::RNAChange - Sequence change class for RNA level
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 $rnachange = Bio::Variation::RNAChange->new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 ('-start' => $start,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 '-end' => $end,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 '-length' => $len,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 '-codon_pos' => $cp,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 '-upStreamSeq' => $upflank,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 '-dnStreamSeq' => $dnflank,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 '-proof' => $proof,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 '-isMutation' => 1,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 '-mut_number' => $mut_number
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 $a1 = Bio::Variation::Allele->new;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 $a1->seq('a');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 $rnachange->allele_ori($a1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 my $a2 = Bio::Variation::Allele->new;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 $a2->seq('t');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35 $rnachange->add_Allele($a2);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 $rnachange->allele_mut($a2);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 print "The codon change is ", $rnachange->codon_ori,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 ">", $rnachange->codon_mut, "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41 # add it to a SeqDiff container object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 $seqdiff->add_Variant($rnachange);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 # and create links to and from DNA level mutation objects
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 $rnachange->DNAMutation($dnamut);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 $dnamut->RNAChange($rnachange);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 The instantiable class Bio::Variation::DNAMutation describes basic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 sequence changes at RNA molecule level. It uses methods defined in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52 superclass Bio::Variation::VariantI. See L<Bio::Variation::VariantI>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 for details.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 You are normally expected to create a corresponding
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56 Bio::Variation::DNAMutation object even if mutation is defined at
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 RNA level. The numbering follows then cDNA numbering. Link the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 DNAMutation object to the RNAChange object using the method
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 DNAMutation(). If the variation described by a RNAChange object is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60 translated, link the corresponding Bio::Variation::AAChange object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 to it using method AAChange(). See L<Bio::Variation::DNAMutation> and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 L<Bio::Variation::AAChange> for more information.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 Bioperl modules. Send your comments and suggestions preferably to the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 Bioperl mailing lists Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 the bugs and their resolution. Bug reports can be submitted via
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 email or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 =head1 AUTHOR - Heikki Lehvaslaiho
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 Email: heikki@ebi.ac.uk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88 Address:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 EMBL Outstation, European Bioinformatics Institute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91 Wellcome Trust Genome Campus, Hinxton
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92 Cambs. CB10 1SD, United Kingdom
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 package Bio::Variation::RNAChange;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 # Object preamble - inheritance
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 my $VERSION=1.0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 use Bio::Variation::VariantI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 use Bio::Tools::CodonTable;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 @ISA = qw( Bio::Variation::VariantI );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 my($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 my ($start, $end, $length, $strand, $primary, $source,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 $frame, $score, $gff_string,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 $allele_ori, $allele_mut, $upstreamseq, $dnstreamseq,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 $label, $status, $proof, $region, $region_value, $region_dist, $numbering,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 $mut_number, $isMutation,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 $codon_ori, $codon_mut, $codon_pos, $codon_table, $cds_end) =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 $self->_rearrange([qw(START
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 END
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 LENGTH
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 STRAND
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 PRIMARY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 SOURCE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 FRAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 SCORE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 GFF_STRING
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 ALLELE_ORI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 ALLELE_MUT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137 UPSTREAMSEQ
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 DNSTREAMSEQ
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139 LABEL
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 STATUS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141 PROOF
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 REGION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 REGION_VALUE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 REGION_DIST
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 NUMBERING
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 MUT_NUMBER
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 ISMUTATION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 CODON_ORI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 CODON_MUT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 CODON_POS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151 TRANSLATION_TABLE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 CDS_END
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 )],@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 $self->primary_tag("Variation");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 $self->{ 'alleles' } = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 $start && $self->start($start);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 $end && $self->end($end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 $length && $self->length($length);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 $strand && $self->strand($strand);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 $primary && $self->primary_tag($primary);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 $source && $self->source_tag($source);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 $frame && $self->frame($frame);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166 $score && $self->score($score);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 $gff_string && $self->_from_gff_string($gff_string);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 $allele_ori && $self->allele_ori($allele_ori);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 $allele_mut && $self->allele_mut($allele_mut);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171 $upstreamseq && $self->upStreamSeq($upstreamseq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172 $dnstreamseq && $self->dnStreamSeq($dnstreamseq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174 $label && $self->label($label);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 $status && $self->status($status);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 $proof && $self->proof($proof);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 $region && $self->region($region);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 $region_value && $self->region_value($region_value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 $region_dist && $self->region_dist($region_dist);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 $numbering && $self->numbering($numbering);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 $mut_number && $self->mut_number($mut_number);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182 $isMutation && $self->isMutation($isMutation);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 $codon_ori && $self->codon_ori($codon_ori);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185 $codon_mut && $self->codon_mut($codon_mut);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186 $codon_pos && $self->codon_pos($codon_pos);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 $codon_table && $self->codon_table($codon_table);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 $cds_end && $self->cds_end($cds_end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 return $self; # success - we hope!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 =head2 codon_ori
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 Title : codon_ori
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 Usage : $obj->codon_ori();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 Sets and returns codon_ori triplet. If value is not set,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200 creates the codon triplet from the codon position and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201 flanking sequences. The string has to be three characters
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202 long. The character content is not checked.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206 Args : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 sub codon_ori {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 if (length $value != 3) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 $self->warn("Codon string \"$value\" is not three characters long");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 $self->{'codon_ori'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 elsif (! $self->{'codon_ori'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 my $codon_ori = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 if ($self->region eq 'coding' && $self->start && $self->start >= 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 $self->warn('Codon position is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224 if not defined $self->codon_pos;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225 $self->warn('Upstream flanking sequence is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 if not defined $self->upStreamSeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227 $self->warn('Downstream flanking sequence is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 if not defined $self->dnStreamSeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 my $cpos = $self->codon_pos;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 $codon_ori = substr($self->upStreamSeq, -$cpos +1 , $cpos-1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 $codon_ori .= substr($self->allele_ori->seq, 0, 4-$cpos)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 if $self->allele_ori and $self->allele_ori->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234 $codon_ori .= substr($self->dnStreamSeq, 0, 3-length($codon_ori));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236 $self->{'codon_ori'} = lc $codon_ori;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 return $self->{'codon_ori'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 =head2 codon_mut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 Title : codon_mut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 Usage : $obj->codon_mut();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 Sets and returns codon_mut triplet. If value is not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 set, creates the codon triplet from the codon position and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 flanking sequences. Return undef for other than point mutations.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 Args : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259 sub codon_mut {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262 if (length $value != 3 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 $self->warn("Codon string \"$value\" is not three characters long");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 $self->{'codon_mut'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 my $codon_mut = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269 if ($self->allele_ori->seq and $self->allele_mut->seq and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 CORE::length($self->allele_ori->seq) == 1 and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 CORE::length($self->allele_mut->seq) == 1 and
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 $self->region eq 'coding' and $self->start >= 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 $self->warn('Codon position is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275 if not defined $self->codon_pos;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276 $self->warn('Upstream flanking sequnce is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 if not defined $self->upStreamSeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 $self->warn('Downstream flanking sequnce is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 if not defined $self->dnStreamSeq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 $self->throw('Mutated allele is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 if not defined $self->allele_mut;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 my $cpos = $self->codon_pos;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 $codon_mut = substr($self->upStreamSeq, -$cpos +1 , $cpos-1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 $codon_mut .= substr($self->allele_mut->seq, 0, 4-$cpos)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 if $self->allele_mut and $self->allele_mut->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 $codon_mut .= substr($self->dnStreamSeq, 0, 3-length($codon_mut));
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 $self->{'codon_mut'} = lc $codon_mut;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 return $self->{'codon_mut'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 =head2 codon_pos
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 Title : codon_pos
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 Usage : $obj->codon_pos();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 Sets and returns the position of the mutation start in the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303 codon. If value is not set, returns false.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 Returns : 1,2,3
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 Args : none if get, the new value if set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 sub codon_pos {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 if ( $value !~ /[123]/ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 $self->throw("'$value' is not a valid codon position");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 $self->{'codon_pos'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 return $self->{'codon_pos'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324 =head2 codon_table
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 Title : codon_table
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327 Usage : $obj->codon_table();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 Sets and returns the codon table id of the RNA
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331 If value is not set, returns 1, 'universal' code, as the default.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 Returns : integer
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 Args : none if get, the new value if set
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340 sub codon_table {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 if ( not $value =~ /^\d$/ ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 $self->throw("'$value' is not a valid codon table ID\n".
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 "Has to be a positive integer. Defaulting to 1\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 $self->{'codon_table'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350 if( ! exists $self->{'codon_table'} ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 return $self->{'codon_table'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 =head2 DNAMutation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 Title : DNAMutation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 Usage : $mutobj = $obj->DNAMutation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 : $mutobj = $obj->DNAMutation($objref);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 Function: Returns or sets the link-reference to a mutation/change object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 If there is no link, it will return undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 Returns : an obj_ref or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 sub DNAMutation {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 if( ! $value->isa('Bio::Variation::DNAMutation') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 $self->throw("Is not a Bio::Variation::DNAMutation object but a [$self]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375 return (undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 $self->{'DNAMutation'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 unless (exists $self->{'DNAMutation'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 return (undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 return $self->{'DNAMutation'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 =head2 AAChange
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 Title : AAChange
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
392 Usage : $mutobj = $obj->AAChange;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
393 : $mutobj = $obj->AAChange($objref);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
394 Function: Returns or sets the link-reference to a mutation/change object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
395 If there is no link, it will return undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
396 Returns : an obj_ref or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
397
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
398 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
399
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
400 sub AAChange {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
401 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
402 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
403 if( ! $value->isa('Bio::Variation::AAChange') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
404 $self->throw("Is not a Bio::Variation::AAChange object but a [$self]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
405 return (undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
406 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
407 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
408 $self->{'AAChange'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
409 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
410 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
411 unless (exists $self->{'AAChange'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
412 return (undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
413 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
414 return $self->{'AAChange'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
415 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
416 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
417
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
418
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
419 =head2 exons_modified
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
420
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
421 Title : exons_modified
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
422 Usage : $modified = $obj->exons_modified;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
423 : $modified = $obj->exons_modified(1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
424 Function: Returns or sets information (example: a simple boolean flag) about
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
425 the modification of exons as a result of a mutation.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
426
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
427 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
428
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
429 sub exons_modified {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
430 my ($self,$value)=@_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
431 if (defined($value)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
432 $self->{'exons_modified'}=$value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
433 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
434 return ($self->{'exons_modified'});
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
435 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
436
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
437 =head2 region
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
438
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
439 Title : region
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
440 Usage : $obj->region();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
441 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
442
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
443 Sets and returns the name of the sequence region type or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
444 protein domain at this location. If value is not set,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
445 returns false.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
446
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
447 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
448 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
449 Args : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
450
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
451 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
452
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
453
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
454
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
455 sub region {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
456 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
457 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
458 $self->{'region'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
459 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
460 elsif (not defined $self->{'region'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
461
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
462 $self->warn('Mutation start position is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
463 if not defined $self->start and $self->verbose;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
464 $self->warn('Mutation end position is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
465 if not defined $self->end and $self->verbose;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
466 $self->warn('Length of the CDS is not defined, the mutation can be beyond coding region!')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
467 if not defined $self->cds_end and $self->verbose;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
468
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
469 $self->region('coding');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
470 if ($self->end && $self->end < 0 ){
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
471 $self->region('5\'UTR');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
472 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
473 elsif ($self->start && $self->cds_end && $self->start > $self->cds_end ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
474 $self->region('3\'UTR');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
475 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
476 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
477 return $self->{'region'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
478 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
479
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
480 =head2 cds_end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
481
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
482 Title : cds_end
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
483 Usage : $cds_end = $obj->get_cds_end();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
484 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
485
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
486 Sets or returns the cds_end from the beginning of the DNA sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
487 to the coordinate start used to describe variants.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
488 Should be the location of the last nucleotide of the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
489 terminator codon of the gene.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
490
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
491 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
492 Returns : value of cds_end, a scalar
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
493 Args :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
494
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
495 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
496
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
497
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
498
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
499 sub cds_end {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
500 my ($self, $value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
501 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
502 $self->warn("[$value] is not a good value for sequence position")
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
503 if not $value =~ /^\d+$/ ;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
504 $self->{'cds_end'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
505 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
506 $self->{'cds_end'} = $self->SeqDiff->cds_end if $self->SeqDiff;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
507 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
508 return $self->{'cds_end'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
509 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
510
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
511
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
512 =head2 label
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
513
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
514 Title : label
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
515 Usage : $obj->label();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
516 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
517
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
518 Sets and returns mutation event label(s). If value is not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
519 set, or no argument is given returns false. Each
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
520 instantiable subclass of L<Bio::Variation::VariantI> needs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
521 to implement this method. Valid values are listed in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
522 'Mutation event controlled vocabulary' in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
523 http://www.ebi.ac.uk/mutations/recommendations/mutevent.html.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
524
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
525 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
526 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
527 Args : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
528
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
529 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
530
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
531 sub label {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
532 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
533 my ($o, $m, $type);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
534 $o = $self->allele_ori->seq if $self->allele_ori and $self->allele_ori->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
535 $m = $self->allele_mut->seq if $self->allele_mut and $self->allele_mut->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
536
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
537 my $ct = Bio::Tools::CodonTable -> new ( -id => $self->codon_table );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
538 if ($o and $m and CORE::length($o) == 1 and CORE::length($m) == 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
539 if (defined $self->AAChange) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
540 if ($self->start > 0 and $self->start < 4 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
541 $type = 'initiation codon';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
542 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
543 elsif ($self->codon_ori && $ct->is_ter_codon($self->codon_ori) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
544 #AAChange->allele_ori and $self->AAChange->allele_ori->seq eq '*' ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
545 $type = 'termination codon';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
546 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
547 elsif ($self->codon_mut && $ct->is_ter_codon($self->codon_mut) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
548 #elsif ($self->AAChange->allele_mut and $self->AAChange->allele_mut->seq eq "*") {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
549 $type = 'nonsense';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
550 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
551 elsif ($o and $m and ($o eq $m or
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
552 $self->AAChange->allele_ori->seq eq
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
553 $self->AAChange->allele_mut->seq)) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
554 $type = 'silent';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
555 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
556 $type = 'missense';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
557 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
558 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
559 $type = 'unknown';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
560 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
561 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
562 my $len = 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
563 $len = CORE::length($o) if $o;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
564 $len -= CORE::length($m) if $m;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
565 if ($len%3 == 0 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
566 $type = 'inframe';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
567 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
568 $type = 'frameshift';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
569 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
570 if (not $m ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
571 $type .= ', '. 'deletion';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
572 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
573 elsif (not $o ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
574 $type .= ', '. 'insertion';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
575 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
576 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
577 $type .= ', '. 'complex';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
578 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
579 if ($self->codon_ori && $ct->is_ter_codon($self->codon_ori) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
580 $type .= ', '. 'termination codon';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
581 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
582 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
583
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
584 $self->{'label'} = $type;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
585 return $self->{'label'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
586 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
587
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
588
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
589 =head2 _change_codon_pos
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
590
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
591 Title : _change_codon_pos
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
592 Usage : $newCodonPos = _change_codon_pos($myCodonPos, 5)
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
593 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
594
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
595 Keeps track of the codon position in a changeing sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
596
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
597 Returns : codon_pos = integer 1, 2 or 3
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
598 Args : valid codon position
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
599 signed integer offset to a new location in sequence
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
600
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
601 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
602
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
603
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
604 sub _change_codon_pos ($$) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
605 my ($cpos, $i) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
606
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
607 $cpos = ($cpos + $i%3)%3;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
608 if ($cpos > 3 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
609 $cpos = $cpos - 3;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
610 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
611 elsif ($cpos < 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
612 $cpos = $cpos + 3;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
613 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
614 return $cpos;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
615 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
616
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
617 1;