annotate variant_effect_predictor/Bio/LiveSeq/Mutator.pm @ 0:1f6dce3d34e0

Uploaded
author mahtabm
date Thu, 11 Apr 2013 02:01:53 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: Mutator.pm,v 1.26 2002/10/22 07:38:34 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # bioperl module for Bio::LiveSeq::Mutator
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 Joseph Insana
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::LiveSeq::Mutator - Package mutating LiveSequences
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 # $gene is a Bio::LiveSeq::Gene object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 my $mutate = Bio::LiveSeq::Mutator->new('-gene' => $gene,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 '-numbering' => "coding"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 # $mut is a Bio::LiveSeq::Mutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 $mutate->add_Mutation($mut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 # $results is a Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 my $results=$mutate->change_gene();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 if ($results) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 my $out = Bio::Variation::IO->new( '-format' => 'flat');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 $out->write($results);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 This class mutates Bio::LiveSeq::Gene objects and returns a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 Bio::Variation::SeqDiff object. Mutations are described as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 Bio::LiveSeq::Mutation objects. See L<Bio::LiveSeq::Gene>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 L<Bio::Variation::SeqDiff>, and L<Bio::LiveSeq::Mutation> for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 Bioperl modules. Send your comments and suggestions preferably to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 Bioperl mailing lists Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 =head1 AUTHOR - Heikki Lehvaslaiho & Joseph A.L. Insana
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 Email: heikki@ebi.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 insana@ebi.ac.uk, jinsana@gmx.net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 Address:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 EMBL Outstation, European Bioinformatics Institute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 Wellcome Trust Genome Campus, Hinxton
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 Cambs. CB10 1SD, United Kingdom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 package Bio::LiveSeq::Mutator;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 use vars qw($VERSION @ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::Variation::SeqDiff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::Variation::DNAMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::Variation::RNAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use Bio::Variation::AAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 use Bio::Variation::Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 use Bio::LiveSeq::Mutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 #use integer;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 # Object preamble - inheritance
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 @ISA = qw( Bio::Root::Root );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 my($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 my $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 $self = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 bless $self, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 my ($gene, $numbering) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 $self->_rearrange([qw(GENE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 NUMBERING
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 )],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 $self->{ 'mutations' } = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 $gene && $self->gene($gene);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 $numbering && $self->numbering($numbering);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 #class constant;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 $self->{'flanklen'} = 25;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 return $self; # success - we hope!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 =head2 gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 Title : gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 Usage : $mutobj = $obj->gene;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 : $mutobj = $obj->gene($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 Returns or sets the link-reference to a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 Bio::LiveSeq::Gene object. If no value has ben set, it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 will return undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 Returns : an object reference or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 Args : a Bio::LiveSeq::Gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 See L<Bio::LiveSeq::Gene> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 sub gene {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 if( ! $value->isa('Bio::LiveSeq::Gene') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $self->throw("Is not a Bio::LiveSeq::Gene object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 $self->{'gene'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 unless (exists $self->{'gene'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 return $self->{'gene'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 =head2 numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 Title : numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 Usage : $obj->numbering();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 Sets and returns coordinate system used in positioning the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 mutations. See L<change_gene> for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Returns : string
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Args : string (coding [transcript number] | gene | entry)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 sub numbering {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 if( defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 if ($value =~ /(coding)( )?(\d+)?/ or $value eq 'entry' or $value eq 'gene') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 $self->{'numbering'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 } else { # defaulting to 'coding'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $self->{'numbering'} = 'coding';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 unless (exists $self->{'numbering'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 return 'coding';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 return $self->{'numbering'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 =head2 add_Mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 Title : add_Mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 Usage : $self->add_Mutation($ref)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 Function: adds a Bio::LiveSeq::Mutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Args : a Bio::LiveSeq::Mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 See L<Bio::LiveSeq::Mutation> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 sub add_Mutation{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 if( $value->isa('Bio::Liveseq::Mutation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 my $com = ref $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $self->throw("Is not a Mutation object but a [$com]" );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 if (! $value->pos) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $self->warn("No value for mutation position in the sequence!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 if (! $value->seq && ! $value->len) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 $self->warn("Either mutated sequence or length of the deletion must be given!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 push(@{$self->{'mutations'}},$value);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 =head2 each_Mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 Title : each_Mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 Usage : foreach $ref ( $a->each_Mutation )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 Function: gets an array of Bio::LiveSeq::Mutation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 Returns : array of Mutations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 See L<Bio::LiveSeq::Mutation> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 sub each_Mutation{
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 return @{$self->{'mutations'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 =head2 mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 Title : mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 Usage : $mutobj = $obj->mutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 : $mutobj = $obj->mutation($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 Returns or sets the link-reference to the current mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 object. If the value is not set, it will return undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 Returns : an object reference or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 sub mutation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 if( ! $value->isa('Bio::LiveSeq::Mutation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 $self->throw("Is not a Bio::LiveSeq::Mutation object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $self->{'mutation'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 unless (exists $self->{'mutation'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 return $self->{'mutation'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 =head2 DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 Title : DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 Usage : $mutobj = $obj->DNA;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 : $mutobj = $obj->DNA($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 Returns or sets the reference to the LiveSeq object holding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 the reference sequence. If there is no link, it will return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Returns : an object reference or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 sub DNA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 if( ! $value->isa('Bio::LiveSeq::DNA') and ! $value->isa('Bio::LiveSeq::Transcript') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 $self->throw("Is not a Bio::LiveSeq::DNA/Transcript object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $self->{'DNA'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 unless (exists $self->{'DNA'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 return $self->{'DNA'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 =head2 RNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 Title : RNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 Usage : $mutobj = $obj->RNA;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 : $mutobj = $obj->RNA($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 Returns or sets the reference to the LiveSeq object holding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 the reference sequence. If the value is not set, it will return
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 Returns : an object reference or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 sub RNA {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 if( ! $value->isa('Bio::LiveSeq::Transcript') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $self->throw("Is not a Bio::LiveSeq::RNA/Transcript object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $self->{'RNA'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 unless (exists $self->{'RNA'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 return $self->{'RNA'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 =head2 dnamut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 Title : dnamut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 Usage : $mutobj = $obj->dnamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 : $mutobj = $obj->dnamut($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Returns or sets the reference to the current DNAMutation object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 If the value is not set, it will return undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Returns : a Bio::Variation::DNAMutation object or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 See L<Bio::Variation::DNAMutation> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 sub dnamut {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 if( ! $value->isa('Bio::Variation::DNAMutation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 $self->throw("Is not a Bio::Variation::DNAMutation object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 $self->{'dnamut'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 unless (exists $self->{'dnamut'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 return $self->{'dnamut'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 =head2 rnachange
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 Title : rnachange
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 Usage : $mutobj = $obj->rnachange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 : $mutobj = $obj->rnachange($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 Returns or sets the reference to the current RNAChange object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 If the value is not set, it will return undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 Returns : a Bio::Variation::RNAChange object or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 See L<Bio::Variation::RNAChange> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 sub rnachange {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 if( ! $value->isa('Bio::Variation::RNAChange') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $self->throw("Is not a Bio::Variation::RNAChange object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 $self->{'rnachange'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 unless (exists $self->{'rnachange'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 return $self->{'rnachange'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 =head2 aachange
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 Title : aachange
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 Usage : $mutobj = $obj->aachange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 : $mutobj = $obj->aachange($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 Returns or sets the reference to the current AAChange object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 If the value is not set, it will return undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 Returns : a Bio::Variation::AAChange object or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 See L<Bio::Variation::AAChange> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 sub aachange {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 if( ! $value->isa('Bio::Variation::AAChange') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 $self->throw("Is not a Bio::Variation::AAChange object but a [$value]");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 return undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 $self->{'aachange'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 unless (exists $self->{'aachange'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 return $self->{'aachange'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 =head2 exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 Title : exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 Usage : $mutobj = $obj->exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 : $mutobj = $obj->exons($objref);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 Returns or sets the reference to a current array of Exons.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 If the value is not set, it will return undef.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 Internal method.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 Returns : an array of Bio::LiveSeq::Exon objects or undef
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 See L<Bio::LiveSeq::Exon> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 sub exons {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 my ($self,$value) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 if (defined $value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 $self->{'exons'} = $value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 unless (exists $self->{'exons'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 return (undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 return $self->{'exons'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 =head2 change_gene_with_alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 Title : change_gene_with_alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 Usage : $results=$mutate->change_gene_with_alignment($aln);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 Returns a Bio::Variation::SeqDiff object containing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 results of the changes in the alignment. The alignment has
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 to be pairwise and have one sequence named 'QUERY', the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 other one is assumed to be a part of the sequence from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 $gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 This method offers a shortcut to change_gene and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 automates the creation of Bio::LiveSeq::Mutation objects.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 Use it with almost identical sequnces, e.g. to locate a SNP.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 Args : Bio::SimpleAlign object representing a short local alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 Returns : Bio::Variation::SeqDiff object or 0 on error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 See L<Bio::LiveSeq::Mutation>, L<Bio::SimpleAlign>, and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 L<Bio::Variation::SeqDiff> for more information.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 sub change_gene_with_alignment {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 my ($self, $aln) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 # Sanity checks
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 $self->throw("Argument is not a Bio::SimpleAlign object but a [$aln]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 unless $aln->isa('Bio::SimpleAlign');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 $self->throw("'Pairwise alignments only, please")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 if $aln->no_sequences != 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 # find out the order the two sequences are given
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 my $queryseq_pos = 1; #default
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 my $refseq_pos = 2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 unless ($aln->get_seq_by_pos(1)->id eq 'QUERY') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 carp('Query sequence has to be named QUERY')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 if $aln->get_seq_by_pos(2)->id ne 'QUERY';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 $queryseq_pos = 2; # alternative
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 $refseq_pos = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 # trim the alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 my $start = $aln->column_from_residue_number('QUERY', 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 my $end = $aln->column_from_residue_number('QUERY',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 $aln->get_seq_by_pos($queryseq_pos)->end );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 my $aln2 = $aln->slice($start, $end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 # extracting mutations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 my $cs = $aln2->consensus_string(51);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 my $queryseq = $aln2->get_seq_by_pos($queryseq_pos);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 my $refseq = $aln2->get_seq_by_pos($refseq_pos);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 while ( $cs =~ /(\?+)/g) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 # pos in local coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 my $pos = pos($cs) - length($1) + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 my $mutation = create_mutation($self,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $refseq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 $queryseq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 $pos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 CORE::length($1)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 # reset pos to refseq coordinates
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $pos += $refseq->start - 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 $mutation->pos($pos);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 $self->add_Mutation($mutation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 return $self->change_gene();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 =head2 create_mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 Title : create_mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 Formats sequence differences from two sequences into
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571 Bio::LiveSeq::Mutation objects which can be applied to a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 gene.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 To keep it generic, sequence arguments need not to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 Bio::LocatableSeq. Coordinate change to parent sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 numbering needs to be done by the calling code.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 Called from change_gene_with_alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 Args : Bio::PrimarySeqI inheriting object for the reference sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 Bio::PrimarySeqI inheriting object for the query sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 integer for the start position of the local sequence difference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 integer for the length of the sequence difference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 Returns : Bio::LiveSeq::Mutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588 sub create_mutation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 my ($self, $refseq, $queryseq, $pos, $len) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 $self->throw("Is not a Bio::PrimarySeqI object but a [$refseq]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592 unless $refseq->isa('Bio::PrimarySeqI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 $self->throw("Is not a Bio::PrimarySeqI object but a [$queryseq]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 unless $queryseq->isa('Bio::PrimarySeqI');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $self->throw("Position is not a positive integer but [$pos]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 unless $pos =~ /^\+?\d+$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 $self->throw("Length is not a positive integer but [$len]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 unless $len =~ /^\+?\d+$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 my $mutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 my $refstring = $refseq->subseq($pos, $pos + $len - 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 my $varstring = $queryseq->subseq($pos, $pos + $len - 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 if ($len == 1 and $refstring =~ /[^\.\-\*\?]/ and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 $varstring =~ /[^\.\-\*\?]/ ) { #point
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 $mutation = new Bio::LiveSeq::Mutation (-seq => $varstring,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 -pos => $pos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 elsif ( $refstring =~ /^[^\.\-\*\?]+$/ and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 $varstring !~ /^[^\.\-\*\?]+$/ ) { # deletion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 $mutation = new Bio::LiveSeq::Mutation (-pos => $pos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 -len => $len
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 elsif ( $refstring !~ /^[^\.\-\*\?]+$/ and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 $varstring =~ /^[^\.\-\*\?]+$/ ) { # insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 $mutation = new Bio::LiveSeq::Mutation (-seq => $varstring,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 -pos => $pos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 -len => 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 } else { # complex
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623 $mutation = new Bio::LiveSeq::Mutation (-seq => $varstring,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 -pos => $pos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 -len => $len
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 return $mutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 =head2 change_gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 Title : change_gene
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 Usage : my $mutate = Bio::LiveSeq::Mutator->new(-gene => $gene,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 numbering => "coding"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 # $mut is Bio::LiveSeq::Mutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 $mutate->add_Mutation($mut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 my $results=$mutate->change_gene();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 Returns a Bio::Variation::SeqDiff object containing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 results of the changes performed according to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 instructions present in Mutation(s). The -numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 argument decides what molecule is being changed and what
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 numbering scheme being used:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 -numbering => "entry"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 determines the DNA level, using the numbering from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 beginning of the sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 -numbering => "coding"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 determines the RNA level, using the numbering from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 beginning of the 1st transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 Alternative transcripts can be used by specifying
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 "coding 2" or "coding 3" ...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 -numbering => "gene"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 determines the DNA level, using the numbering from the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 beginning of the 1st transcript and inluding introns.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 The meaning equals 'coding' if the reference molecule
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 is cDNA.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 Args : Bio::LiveSeq::Gene object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 Bio::LiveSeq::Mutation object(s)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 string specifying a numbering scheme (defaults to 'coding')
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 Returns : Bio::Variation::SeqDiff object or 0 on error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 sub change_gene {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 # Sanity check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 unless ($self->gene) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 $self->warn("Input object Bio::LiveSeq::Gene is not given");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 # Setting the reference sequence based on -numbering
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 my @transcripts=@{$self->gene->get_Transcripts};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 my $refseq; # will hold Bio::LiveSeq:Transcript object or Bio::LiveSeq::DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 # 'gene' eq 'coding' if reference sequence is cDNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 $self->numbering ('coding') if $self->gene->get_DNA->alphabet eq 'rna' and $self->numbering eq 'gene';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 if ($self->numbering =~ /(coding)( )?(\d+)?/ ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 $self->numbering($1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 my $transnumber = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 $transnumber-- if $3; # 1 -> 0, 2 -> 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 if ($transnumber && $transnumber >= 0 && $transnumber <= $#transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 $refseq=$transcripts[$transnumber];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 $transnumber && $self->warn("The alternative transcript number ". $transnumber+1 .
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 "- does not exist. Reverting to the 1st transcript\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $refseq=$transcripts[0];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 $refseq=$transcripts[0]->{'seq'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 # Recording the state: SeqDiff object creation ?? transcript no.??
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 my $seqDiff = Bio::Variation::SeqDiff->new();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 $seqDiff->alphabet($self->gene->get_DNA->alphabet);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 $seqDiff->numbering($self->numbering);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 my ($DNAobj, $RNAobj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 if ($refseq->isa("Bio::LiveSeq::Transcript")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 $self->RNA($refseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 $self->DNA($refseq->{'seq'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 $seqDiff->rna_ori($refseq->seq );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 $seqDiff->aa_ori($refseq->get_Translation->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 $self->DNA($refseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724 $self->RNA($transcripts[0]);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 $seqDiff->rna_ori($self->RNA->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
726 $seqDiff->aa_ori($self->RNA->get_Translation->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
727 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
728 $seqDiff->dna_ori($self->DNA->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
729 # put the accession number into the SeqDiff object ID
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
730 $seqDiff->id($self->DNA->accession_number);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
731
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
732 # the atg_offset takes in account that DNA object could be a subset of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
733 # whole entry (via the light_weight loader)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
734 my $atg_label=$self->RNA->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
735 my $atg_offset=$self->DNA->position($atg_label)+($self->DNA->start)-1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
736 $seqDiff->offset($atg_offset - 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
737 $self->DNA->coordinate_start($atg_label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
738
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
739 my @exons = $self->RNA->all_Exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
740 $seqDiff->cds_end($exons[$#exons]->end);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
741
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
742 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
743 # Converting mutation positions to labels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
744 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
745 $self->warn("no mutations"), return 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
746 unless $self->_mutationpos2label($refseq, $seqDiff);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
747
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
748 # need to add more than one rna & aa
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
749 #foreach $transcript (@transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
750 # $seqDiff{"ori_transcript_${i}_seq"}=$transcript->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
751 # $seqDiff{"ori_translation_${i}_seq"}=$transcript->get_Translation->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
752 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
753
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
754 # do changes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
755 my $k;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
756 foreach my $mutation ($self->each_Mutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
757 next unless $mutation->label > 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
758 $self->mutation($mutation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
759
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
760 $mutation->issue(++$k);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
761 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
762 # current position on the transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
763 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
764 if ($self->numbering =~ /coding/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
765 $mutation->transpos($mutation->pos); # transpos given by user
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
766 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
767 #transpos of label / It will be 0 if mutating an intron, negative if upstream of ATG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
768 $mutation->transpos($self->RNA->position($mutation->label,$atg_label));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
769 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
770 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
771 # Calculate adjacent labels based on the position on the current sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
772 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
773 $mutation->prelabel($self->DNA->label(-1, $mutation->label)); # 1 before label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
774 if ($mutation->len == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
775 $mutation->postlabel($mutation->label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
776 $mutation->lastlabel($mutation->label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
777 } elsif ($mutation->len == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
778 $mutation->lastlabel($mutation->label); # last nucleotide affected
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
779 $mutation->postlabel($self->DNA->label(2,$mutation->lastlabel)); # $len after label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
780 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
781 $mutation->lastlabel($self->DNA->label($mutation->len,$mutation->label));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
782 $mutation->postlabel($self->DNA->label(2,$mutation->lastlabel));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
783 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
784 my $dnamut = $self->_set_DNAMutation($seqDiff);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
785 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
786 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
787 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
788 if ($self->_rnaAffected) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
789 $self->_set_effects($seqDiff, $dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
790 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
791 elsif ($seqDiff->offset != 0 and $dnamut->region ne 'intron') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
792 $self->_untranslated ($seqDiff, $dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
793 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
794 #$self->warn("Mutation starts outside coding region, RNAChange object not created");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
795 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
796
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
797 #########################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
798 # Mutations are done here! #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
799 $refseq->labelchange($mutation->seq, $mutation->label, $mutation->len); #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
800 #########################################################################
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
801
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
802 $self->_post_mutation ($seqDiff);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
803
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
804 $self->dnamut(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
805 $self->rnachange(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
806 $self->aachange(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
807 $self->exons(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
808 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
809 # record the final state of all three sequences
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
810 $seqDiff->dna_mut($self->DNA->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
811 $seqDiff->rna_mut($self->RNA->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
812 if ($refseq->isa("Bio::LiveSeq::Transcript")) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
813 $seqDiff->aa_mut($refseq->get_Translation->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
814 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
815 $seqDiff->aa_mut($self->RNA->get_Translation->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
816 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
817
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
818 #$seqDiff{mut_dna_seq}=$gene->get_DNA->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
819 #my $i=1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
820 #foreach $transcript (@transcripts) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
821 # $seqDiff{"mut_transcript_${i}_seq"}=$transcript->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
822 # $seqDiff{"mut_translation_${i}_seq"}=$transcript->get_Translation->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
823 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
824 return $seqDiff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
825 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
826
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
827 =head2 _mutationpos2label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
828
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
829 Title : _mutationpos2label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
830 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
831 Function: converts mutation positions into labels
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
832 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
833 Returns : number of valid mutations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
834 Args : LiveSeq sequence object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
835
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
836 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
837
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
838 sub _mutationpos2label {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
839 my ($self, $refseq, $SeqDiff) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
840 my $count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
841 my @bb = @{$self->{'mutations'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
842 my $cc = scalar @bb;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
843 foreach my $mut (@{$self->{'mutations'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
844 # if ($self->numbering eq 'gene' and $mut->pos < 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
845 # my $tmp = $mut->pos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
846 # print STDERR "pos: ", "$tmp\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
847 # $tmp++ if $tmp < 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
848 # $tmp += $SeqDiff->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
849 # print STDERR "pos2: ", "$tmp\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
850 # $mut->pos($tmp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
851 # }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
852 # elsif ($self->numbering eq 'entry') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
853 if ($self->numbering eq 'entry') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
854 my $tmp = $mut->pos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
855 $tmp -= $SeqDiff->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
856 $tmp-- if $tmp < 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
857 $mut->pos($tmp);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
858 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
859
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
860 my $label = $refseq->label($mut->pos); # get the label for the position
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
861 $mut->label($label), $count++ if $label > 0 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
862 #print STDERR "x", $mut->pos,'|' ,$mut->label, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
863 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
864 return $count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
865 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
866
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
867 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
868 # Calculate labels around mutated nucleotide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
869 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
870
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
871 =head2 _set_DNAMutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
872
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
873 Title : _set_DNAMutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
874 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
875 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
876
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
877 Stores DNA level mutation attributes before mutation into
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
878 Bio::Variation::DNAMutation object. Links it to SeqDiff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
879 object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
880
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
881 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
882 Returns : Bio::Variation::DNAMutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
883 Args : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
884
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
885 See L<Bio::Variation::DNAMutation> and L<Bio::Variation::SeqDiff>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
886
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
887 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
888
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
889 sub _set_DNAMutation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
890 my ($self, $seqDiff) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
891
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
892 my $dnamut_start = $self->mutation->label - $seqDiff->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
893 # if negative DNA positions (before ATG)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
894 $dnamut_start-- if $dnamut_start <= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
895 my $dnamut_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
896 ($self->mutation->len == 0 or $self->mutation->len == 1) ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
897 ($dnamut_end = $dnamut_start) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
898 ($dnamut_end = $dnamut_start+$self->mutation->len);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
899 #print "start:$dnamut_start, end:$dnamut_end\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
900 my $dnamut = Bio::Variation::DNAMutation->new(-start => $dnamut_start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
901 -end => $dnamut_end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
902 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
903 $dnamut->mut_number($self->mutation->issue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
904 $dnamut->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
905 my $da_m = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
906 $da_m->seq($self->mutation->seq) if $self->mutation->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
907 $dnamut->allele_mut($da_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
908 $dnamut->add_Allele($da_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
909 # allele_ori
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
910 my $allele_ori = $self->DNA->labelsubseq($self->mutation->prelabel,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
911 undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
912 $self->mutation->postlabel); # get seq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
913 chop $allele_ori; # chop the postlabel nucleotide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
914 $allele_ori=substr($allele_ori,1); # away the prelabel nucleotide
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
915 my $da_o = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
916 $da_o->seq($allele_ori) if $allele_ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
917 $dnamut->allele_ori($da_o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
918 ($self->mutation->len == 0) ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
919 ($dnamut->length($self->mutation->len)) : ($dnamut->length(CORE::length $allele_ori));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
920 #print " --------------- $dnamut_start -$len- $dnamut_end -\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
921 $seqDiff->add_Variant($dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
922 $self->dnamut($dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
923 $dnamut->mut_number($self->mutation->issue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
924 # setting proof
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
925 if ($seqDiff->numbering eq "entry" or $seqDiff->numbering eq "gene") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
926 $dnamut->proof('experimental');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
927 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
928 $dnamut->proof('computed');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
929 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
930 # how many nucleotides to store upstream and downstream of the change
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
931 my $flanklen = $self->{'flanklen'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
932 #print `date`, " flanking sequences start\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
933 my $uplabel = $self->DNA->label(1-$flanklen,$self->mutation->prelabel); # this could be unavailable!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
934
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
935 my $upstreamseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
936 if ($uplabel > 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
937 $upstreamseq =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
938 $self->DNA->labelsubseq($uplabel, undef, $self->mutation->prelabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
939 } else { # from start (less than $flanklen nucleotides)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
940 $upstreamseq =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
941 $self->DNA->labelsubseq($self->DNA->start, undef, $self->mutation->prelabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
942 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
943 $dnamut->upStreamSeq($upstreamseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
944 my $dnstreamseq = $self->DNA->labelsubseq($self->mutation->postlabel, $flanklen);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
945 $dnamut->dnStreamSeq($dnstreamseq); # $flanklen or less nucleotides
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
946 return $dnamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
947 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
948
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
949
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
950 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
951 ### Check if mutation propagates to RNA (and AA) level
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
952 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
953 # side effect: sets intron/exon information
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
954 # returns a boolean value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
955 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
956
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
957 sub _rnaAffected {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
958 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
959 my @exons=$self->RNA->all_Exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
960 my $RNAstart=$self->RNA->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
961 my $RNAend=$self->RNA->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
962 my ($firstexon,$before,$after,$i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
963 my ($rnaAffected) = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
964
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
965 # check for inserted labels (that require follows instead of <,>)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
966 my $DNAend=$self->RNA->{'seq'}->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
967 if ($self->mutation->prelabel > $DNAend or $self->mutation->postlabel > $DNAend) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
968 #this means one of the two labels is an inserted one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
969 #(coming from a previous mutation. This would falsify all <,>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
970 #checks, so the follow() has to be used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
971 $self->warn("Attention, workaround not fully tested yet! Expect unpredictable results.\n");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
972 if (($self->mutation->postlabel==$RNAstart) or (follows($self->mutation->postlabel,$RNAstart))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
973 $self->warn("RNA not affected because change occurs before RNAstart");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
974 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
975 elsif (($RNAend==$self->mutation->prelabel) or (follows($RNAend,$self->mutation->prelabel))) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
976 $self->warn("RNA not affected because change occurs after RNAend");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
977 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
978 elsif (scalar @exons == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
979 #no introns, just one exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
980 $rnaAffected = 1; # then RNA is affected!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
981 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
982 # otherwise check for change occurring inside an intron
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
983 $firstexon=shift(@exons);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
984 $before=$firstexon->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
985
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
986 foreach $i (0..$#exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
987 $after=$exons[$i]->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
988 if (follows($self->mutation->prelabel,$before) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
989 ($after==$self->mutation->prelabel) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
990 follows($after,$self->mutation->prelabel) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
991 follows($after,$self->mutation->postlabel)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
992
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
993 $rnaAffected = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
994 # $i is number of exon and can be used for proximity check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
995 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
996 $before=$exons[$i]->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
997 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
998
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
999 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1000 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1001 my $strand = $exons[0]->strand;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1002 if (($strand == 1 and $self->mutation->postlabel <= $RNAstart) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1003 ($strand != 1 and $self->mutation->postlabel >= $RNAstart)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1004 #$self->warn("RNA not affected because change occurs before RNAstart");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1005 $rnaAffected = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1006 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1007 elsif (($strand == 1 and $self->mutation->prelabel >= $RNAend) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1008 ($strand != 1 and $self->mutation->prelabel <= $RNAend)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1009 #$self->warn("RNA not affected because change occurs after RNAend");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1010 $rnaAffected = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1011 my $dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1012 if ($strand == 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1013 $dist = $self->mutation->prelabel - $RNAend;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1014 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1015 $dist = $RNAend - $self->mutation->prelabel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1016 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1017 $self->dnamut->region_dist($dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1018 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1019 elsif (scalar @exons == 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1020 #if just one exon -> no introns,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1021 $rnaAffected = 1; # then RNA is affected!
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1022 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1023 # otherwise check for mutation occurring inside an intron
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1024 $firstexon=shift(@exons);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1025 $before=$firstexon->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1026 if ( ($strand == 1 and $self->mutation->prelabel < $before) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1027 ($strand == -1 and $self->mutation->prelabel > $before)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1028 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1029 $rnaAffected = 1 ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1030
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1031 #print "Exon 1 : ", $firstexon->start, " - ", $firstexon->end, "<br>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1032 my $afterdist = $self->mutation->prelabel - $firstexon->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1033 my $beforedist = $firstexon->end - $self->mutation->postlabel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1034 my $exonvalue = $i + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1035 $self->dnamut->region('exon');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1036 $self->dnamut->region_value($exonvalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1037 if ($afterdist < $beforedist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1038 $afterdist++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1039 $afterdist++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1040 $self->dnamut->region_dist($afterdist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1041 #print "splice site $afterdist nt upstream!<br>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1042 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1043 $self->dnamut->region_dist($beforedist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1044 #print "splice site $beforedist nt downstream!<br>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1045 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1046 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1047 #print "first exon : ", $firstexon->start, " - ", $firstexon->end, "<br>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1048 foreach $i (0..$#exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1049 $after=$exons[$i]->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1050 #proximity test for intronic mutations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1051 if ( ($strand == 1 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1052 $self->mutation->prelabel >= $before and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1053 $self->mutation->postlabel <= $after)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1054 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1055 ($strand == -1 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1056 $self->mutation->prelabel <= $before and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1057 $self->mutation->postlabel >= $after) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1058 $self->dnamut->region('intron');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1059 #$self->dnamut->region_value($i);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1060 my $afterdist = $self->mutation->prelabel - $before;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1061 my $beforedist = $after - $self->mutation->postlabel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1062 my $intronvalue = $i + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1063 if ($afterdist < $beforedist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1064 $afterdist++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1065 $self->dnamut->region_value($intronvalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1066 $self->dnamut->region_dist($afterdist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1067 #print "splice site $afterdist nt upstream!<br>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1068 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1069 $self->dnamut->region_value($intronvalue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1070 $self->dnamut->region_dist($beforedist * -1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1071 #print "splice site $beforedist nt downstream!<br>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1072 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1073 $self->rnachange(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1074 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1075 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1076 #proximity test for exon mutations
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1077 elsif ( ( $strand == 1 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1078 $exons[$i]->start <= $self->mutation->prelabel and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1079 $exons[$i]->end >= $self->mutation->postlabel) or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1080 ( $strand == -1 and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1081 $exons[$i]->start >= $self->mutation->prelabel and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1082 $exons[$i]->end <= $self->mutation->postlabel) ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1083 $rnaAffected = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1084
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1085 my $afterdist = $self->mutation->prelabel - $exons[$i]->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1086 my $beforedist = $exons[$i]->end - $self->mutation->postlabel;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1087 my $exonvalue = $i + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1088 $self->dnamut->region('exon');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1089 if ($afterdist < $beforedist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1090 $afterdist++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1091 $self->dnamut->region_value($exonvalue+1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1092 $self->dnamut->region_dist($afterdist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1093 #print "splice site $afterdist nt upstream!<br>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1094 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1095 #$beforedist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1096 $self->dnamut->region_value($exonvalue+1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1097 $self->dnamut->region_dist($beforedist * -1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1098 #print "splice site $beforedist nt downstream!<br>";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1099 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1100 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1101 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1102 $before=$exons[$i]->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1103 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1104 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1105 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1106 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1107 #$self->warn("RNA not affected because change occurs inside an intron");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1108 #return(0); # if still not returned, then not affected, return 0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1109 return $rnaAffected;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1110 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1112 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1113 # ### Creation of RNA and AA variation objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1114 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1116 =head2 _set_effects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1118 Title : _set_effects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1119 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1120 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1122 Stores RNA and AA level mutation attributes before mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1123 into Bio::Variation::RNAChange and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1124 Bio::Variation::AAChange objects. Links them to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1125 SeqDiff object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1127 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1128 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1129 Args : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1130 Bio::Variation::DNAMutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1132 See L<Bio::Variation::RNAChange>, L<Bio::Variation::RNAChange>,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1133 L<Bio::Variation::SeqDiff>, and L<Bio::Variation::DNAMutation>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1135 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1137 sub _set_effects {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1138 my ($self, $seqDiff, $dnamut) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1139 my ($rnapos_end, $upstreamseq, $dnstreamseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1140 my $flanklen = $self->{'flanklen'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1141
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1142 ($self->mutation->len == 0) ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1143 ($rnapos_end = $self->mutation->transpos) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1144 ($rnapos_end = $self->mutation->transpos + $self->mutation->len -1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1145 my $rnachange = Bio::Variation::RNAChange->new(-start => $self->mutation->transpos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1146 -end => $rnapos_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1147 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1148 $rnachange->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1149
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1150 # setting proof
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1151 if ($seqDiff->numbering eq "coding") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1152 $rnachange->proof('experimental');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1153 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1154 $rnachange->proof('computed');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1155 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1156
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1157 $seqDiff->add_Variant($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1158 $self->rnachange($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1159 $rnachange->DNAMutation($dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1160 $dnamut->RNAChange($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1161 $rnachange->mut_number($self->mutation->issue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1163 # setting the codon_position of the "start" nucleotide of the change
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1164 $rnachange->codon_pos(($self->RNA->frame($self->mutation->label))+1); # codon_pos=frame+1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1165
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1166 my @exons=$self->RNA->all_Exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1167 $self->exons(\@exons);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1168 #print `date`, " before flank, after exons. RNAObj query\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1169 # if cannot retrieve from Transcript, Transcript::upstream_seq will be used
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1170 # before "fac7 g 65" bug discovered
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1171 # $uplabel=$self->RNA->label(1-$flanklen,$prelabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1172 my $RNAprelabel=$self->RNA->label(-1,$self->mutation->label); # to fix fac7g65 bug
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1173 # for the fix, all prelabel used in the next block have been changed to RNAprelabel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1174 my $uplabel=$self->RNA->label(1-$flanklen,$RNAprelabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1175 if ($self->RNA->valid($uplabel)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1176 $upstreamseq = $self->RNA->labelsubseq($uplabel, undef, $RNAprelabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1177 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1178 $upstreamseq = $self->RNA->labelsubseq($self->RNA->start, undef, $RNAprelabel)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1179 if $self->RNA->valid($RNAprelabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1180 my $lacking=$flanklen-length($upstreamseq); # how many missing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1181 my $upstream_atg=$exons[0]->subseq(-$lacking,-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1182 $upstreamseq=$upstream_atg . $upstreamseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1183 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1184
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1185 $rnachange->upStreamSeq($upstreamseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1187 # won't work OK if postlabel NOT in Transcript
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1188 # now added RNApostlabel but this has to be /fully tested/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1189 # for the fix, all postlabel used in the next block have been changed to RNApostlabel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1190 my $RNApostlabel; # to fix fac7g64 bug
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1191 if ($self->mutation->len == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1192 $RNApostlabel=$self->mutation->label;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1193 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1194 my $mutlen = 1 + $self->mutation->len;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1195 $RNApostlabel=$self->RNA->label($mutlen,$self->mutation->label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1196 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1197 $dnstreamseq=$self->RNA->labelsubseq($RNApostlabel, $flanklen);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1198 if ($dnstreamseq eq '-1') { # if out of transcript was requested
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1199 my $lastexon=$exons[-1];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1200 my $lastexonlength=$lastexon->length;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1201 $dnstreamseq=$self->RNA->labelsubseq($RNApostlabel); # retrieves till RNAend
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1202 my $lacking=$flanklen-length($dnstreamseq); # how many missing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1203 my $downstream_stop=$lastexon->subseq($lastexonlength+1,undef,$lacking);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1204 $dnstreamseq .= $downstream_stop;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1205 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1206 $rnachange->dnStreamSeq($dnstreamseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1207 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1208 # AAChange creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1209 my $AAobj=$self->RNA->get_Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1210 # storage of prelabel here, to be used in create_mut_objs_after
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1211 my $aachange = Bio::Variation::AAChange->new(-start => $RNAprelabel
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1212 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1213 $aachange->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1214 $aachange->proof('computed');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1215
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1216 $seqDiff->add_Variant($aachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1217 $self->aachange($aachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1218 $rnachange->AAChange($aachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1219 $aachange->RNAChange($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1220
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1221 $aachange->mut_number($self->mutation->issue);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1222 # $before_mutation{aachange}=$aachange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1224 my $ra_o = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1225 $ra_o->seq($dnamut->allele_ori->seq) if $dnamut->allele_ori->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1226 $rnachange->allele_ori($ra_o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1227
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1228 $rnachange->length(CORE::length $rnachange->allele_ori->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1230 my $ra_m = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1231 $ra_m->seq($self->mutation->seq) if $self->mutation->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1232 $rnachange->allele_mut($ra_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1233 $rnachange->add_Allele($ra_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1235 #$rnachange->allele_mut($seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1236 $rnachange->end($rnachange->start) if $rnachange->length == 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1238 # this holds the aminoacid sequence that will be affected by the mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1239 my $aa_allele_ori=$AAobj->labelsubseq($self->mutation->label,undef,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1240 $self->mutation->lastlabel);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1241
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1242 my $aa_o = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1243 $aa_o->seq($aa_allele_ori) if $aa_allele_ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1244 $aachange->allele_ori($aa_o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1245 #$aachange->allele_ori($aa_allele_ori);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1246
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1247 my $aa_length_ori = length($aa_allele_ori);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1248 $aachange->length($aa_length_ori); #print "==========$aa_length_ori\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1249 $aachange->end($aachange->start + $aa_length_ori - 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1250 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1251
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1252 =head2 _untranslated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1253
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1254 Title : _untranslated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1255 Usage :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1256 Function:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1257
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1258 Stores RNA change attributes before mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1259 into Bio::Variation::RNAChange object. Links it to
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1260 SeqDiff object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1261
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1262 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1263 Returns :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1264 Args : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1265 Bio::Variation::DNAMutation object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1267 See L<Bio::Variation::RNAChange>, L<Bio::Variation::SeqDiff> and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1268 L<Bio::Variation::DNAMutation> for details.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1269
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1270 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1271
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1272 sub _untranslated {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1273 my ($self, $seqDiff, $dnamut) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1274 my $rnapos_end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1275 ($self->mutation->len == 0) ?
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1276 ($rnapos_end = $self->mutation->transpos) :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1277 ($rnapos_end = $self->mutation->transpos + $self->mutation->len -1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1278 my $rnachange = Bio::Variation::RNAChange->new(-start => $self->mutation->transpos,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1279 -end => $rnapos_end
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1280 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1281 #my $rnachange = Bio::Variation::RNAChange->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1282
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1283 $rnachange->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1284 my $ra_o = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1285 $ra_o->seq($dnamut->allele_ori->seq) if $dnamut->allele_ori->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1286 $rnachange->allele_ori($ra_o);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1287 my $ra_m = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1288 $ra_m->seq($dnamut->allele_mut->seq) if $dnamut->allele_mut->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1289 $rnachange->allele_mut($ra_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1290 $rnachange->add_Allele($ra_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1291 $rnachange->upStreamSeq($dnamut->upStreamSeq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1292 $rnachange->dnStreamSeq($dnamut->dnStreamSeq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1293 $rnachange->length($dnamut->length);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1294 $rnachange->mut_number($dnamut->mut_number);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1295 # setting proof
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1296 if ($seqDiff->numbering eq "coding") {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1297 $rnachange->proof('experimental');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1298 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1299 $rnachange->proof('computed');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1300 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1301
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1302 my $dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1303 if ($rnachange->end < 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1304 $rnachange->region('5\'UTR');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1305 $dnamut->region('5\'UTR');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1306 my $dist = $dnamut->end ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1307 $dnamut->region_dist($dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1308 $dist = $seqDiff->offset - $self->gene->maxtranscript->start + 1 + $dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1309 $rnachange->region_dist($dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1310 return if $dist < 1; # if mutation is not in mRNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1311 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1312 $rnachange->region('3\'UTR');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1313 $dnamut->region('3\'UTR');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1314 my $dist = $dnamut->start - $seqDiff->cds_end + $seqDiff->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1315 $dnamut->region_dist($dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1316 $dist = $seqDiff->cds_end - $self->gene->maxtranscript->end -1 + $dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1317 $rnachange->region_dist($dist);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1318 return if $dist > 0; # if mutation is not in mRNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1320 $seqDiff->add_Variant($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1321 $self->rnachange($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1322 $rnachange->DNAMutation($dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1323 $dnamut->RNAChange($rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1326 # args: reference to label changearray, reference to position changearray
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1327 # Function: take care of the creation of mutation objects, with
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1328 # information AFTER the change takes place
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1329 sub _post_mutation {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1330 my ($self, $seqDiff) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1332 if ($self->rnachange and $self->rnachange->region eq 'coding') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1333
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1334 #$seqDiff->add_Variant($self->rnachange);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1336 my $aachange=$self->aachange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1337 my ($AAobj,$aa_start_prelabel,$aa_start,$mut_translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1338 $AAobj=$self->RNA->get_Translation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1339 $aa_start_prelabel=$aachange->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1340 $aa_start=$AAobj->position($self->RNA->label(2,$aa_start_prelabel));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1341 $aachange->start($aa_start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1342 $mut_translation=$AAobj->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1343
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1344 # this now takes in account possible preinsertions
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1345 my $aa_m = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1346 $aa_m->seq(substr($mut_translation,$aa_start-1)) if substr($mut_translation,$aa_start-1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1347 $aachange->allele_mut($aa_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1348 $aachange->add_Allele($aa_m);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1349 #$aachange->allele_mut(substr($mut_translation,$aa_start-1));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1350 #$aachange->allele_mut($mut_translation);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1351 my ($rlenori, $rlenmut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1352 $rlenori = CORE::length($aachange->RNAChange->allele_ori->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1353 $rlenmut = CORE::length($aachange->RNAChange->allele_mut->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1354 #point mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1356 if ($rlenori == 1 and $rlenmut == 1 and $aachange->allele_ori->seq ne '*') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1357 my $alleleseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1358 if ($aachange->allele_mut->seq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1359 $alleleseq = substr($aachange->allele_mut->seq, 0, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1360 $aachange->allele_mut->seq($alleleseq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1361 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1362 $aachange->end($aachange->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1363 $aachange->length(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1364 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1365 elsif ( $rlenori == $rlenmut and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1366 $aachange->allele_ori->seq ne '*' ) { #complex inframe mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1367 $aachange->allele_mut->seq(substr $aachange->allele_mut->seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1368 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1369 length($aachange->allele_ori->seq));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1370 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1371 #inframe mutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1372 elsif ((int($rlenori-$rlenmut))%3 == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1373 if ($aachange->RNAChange->allele_mut->seq and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1374 $aachange->RNAChange->allele_ori->seq ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1375 # complex
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1376 my $rna_len = length ($aachange->RNAChange->allele_mut->seq);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1377 my $len = $rna_len/3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1378 $len++ unless $rna_len%3 == 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1379 $aachange->allele_mut->seq(substr $aachange->allele_mut->seq, 0, $len );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1380 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1381 elsif ($aachange->RNAChange->codon_pos == 1){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1382 # deletion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1383 if ($aachange->RNAChange->allele_mut->seq eq '') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1384 $aachange->allele_mut->seq('');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1385 $aachange->end($aachange->start + $aachange->length - 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1386 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1387 # insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1388 elsif ($aachange->RNAChange->allele_ori->seq eq '' ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1389 $aachange->allele_mut->seq(substr $aachange->allele_mut->seq, 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1390 length ($aachange->RNAChange->allele_mut->seq) / 3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1391 $aachange->allele_ori->seq('');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1392 $aachange->end($aachange->start + $aachange->length - 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1393 $aachange->length(0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1394 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1395 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1396 #elsif ($aachange->RNAChange->codon_pos == 2){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1397 # deletion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1398 if (not $aachange->RNAChange->allele_mut->seq ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1399 $aachange->allele_mut->seq(substr $aachange->allele_mut->seq, 0, 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1400 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1401 # insertion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1402 elsif (not $aachange->RNAChange->allele_ori->seq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1403 $aachange->allele_mut->seq(substr $aachange->allele_mut->seq, 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1404 length ($aachange->RNAChange->allele_mut->seq) / 3 +1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1406 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1407 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1408 #frameshift
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1409 #my $pos = index $aachange->allele_mut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1410 #$aachange->allele_mut(substr($aachange->allele_mut, 0, 1));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1411 $aachange->length(CORE::length($aachange->allele_ori->seq));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1412 my $aaend = $aachange->start + $aachange->length -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1413 $aachange->end($aachange->start);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1414 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1416 # splicing site deletion check
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1417 my @beforeexons=@{$self->exons};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1418 my @afterexons=$self->RNA->all_Exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1419 my $i;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1420 if (scalar(@beforeexons) ne scalar(@afterexons)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1421 my $mut_number = $self->mutation->issue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1422 $self->warn("Exons have been modified at mutation n.$mut_number!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1423 $self->rnachange->exons_modified(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1424 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1425 EXONCHECK:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1426 foreach $i (0..$#beforeexons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1427 if ($beforeexons[$i] ne $afterexons[$i]) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1428 my $mut_number = $self->mutation->issue;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1429 $self->warn("Exons have been modified at mutation n.$mut_number!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1430 $self->rnachange->exons_modified(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1431 last EXONCHECK;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1432 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1433 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1434 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1435 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1436 #$seqDiff->rnachange(undef);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1437 #print "getting here?";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1438 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1439 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1440 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1441
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1442 1;