annotate variant_effect_predictor/Bio/Variation/RNAChange.pm @ 3:d30fa12e4cc5 default tip

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