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

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