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

Uploaded
author mahtabm
date Thu, 11 Apr 2013 06:29:17 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: DNAMutation.pm,v 1.11 2002/10/22 07:38:49 lapp Exp $
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
2 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Variation::DNAMutation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
4 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Heikki Lehvaslaiho <heikki@ebi.ac.uk>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
6 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Heikki Lehvaslaiho
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
8 #
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
10
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
12
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
14
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Variation::DNAMutation - DNA level mutation class
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
16
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
18
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
19 $dnamut = Bio::Variation::DNAMutation->new
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
20 ('-start' => $start,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
21 '-end' => $end,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
22 '-length' => $len,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
23 '-upStreamSeq' => $upflank,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
24 '-dnStreamSeq' => $dnflank,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
25 '-proof' => $proof,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
26 '-isMutation' => 1,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
27 '-mut_number' => $mut_number
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
28 );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
29 $a1 = Bio::Variation::Allele->new;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
30 $a1->seq('a');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
31 $dnamut->allele_ori($a1);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
32 my $a2 = Bio::Variation::Allele->new;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
33 $a2->seq('t');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
34 $dnamut->add_Allele($a2);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
35
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
36 print "Restriction changes are ", $dnamut->restriction_changes, "\n";
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
37
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
38 # add it to a SeqDiff container object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
39 $seqdiff->add_Variant($dnamut);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
40
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
41
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
42 =head1 DESCRIPTION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
43
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
44 The instantiable class Bio::Variation::DNAMutation describes basic
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
45 sequence changes in genomic DNA level. It uses methods defined in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
46 superclass Bio::Variation::VariantI. See L<Bio::Variation::VariantI>
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
47 for details.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
48
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
49 If the variation described by a DNAMutation object is transcibed, link
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
50 the corresponding Bio::Variation::RNAChange object to it using
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
51 method RNAChange(). See L<Bio::Variation::RNAChange> for more information.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
52
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
53 =head1 FEEDBACK
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
54
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
55 =head2 Mailing Lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
56
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
57 User feedback is an integral part of the evolution of this and other
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
58 Bioperl modules. Send your comments and suggestions preferably to the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
59 Bioperl mailing lists Your participation is much appreciated.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
60
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
61 bioperl-l@bioperl.org - General discussion
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
62 http://bio.perl.org/MailList.html - About the mailing lists
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
63
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
64 =head2 Reporting Bugs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
65
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
66 report bugs to the Bioperl bug tracking system to help us keep track
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
67 the bugs and their resolution. Bug reports can be submitted via
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
68 email or the web:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
69
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
70 bioperl-bugs@bio.perl.org
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
71 http://bugzilla.bioperl.org/
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
72
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
73 =head1 AUTHOR - Heikki Lehvaslaiho
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
74
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
75 Email: heikki@ebi.ac.uk
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
76 Address:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
77
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
78 EMBL Outstation, European Bioinformatics Institute
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
79 Wellcome Trust Genome Campus, Hinxton
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
80 Cambs. CB10 1SD, United Kingdom
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
81
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
82 =head1 APPENDIX
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
83
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
84 The rest of the documentation details each of the object
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
85 methods. Internal methods are usually preceded with a _
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
86
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
87 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
88
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
89
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
90 # Let the code begin...
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
91
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
92
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
93 package Bio::Variation::DNAMutation;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
94 my $VERSION=1.0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
95 use vars qw(@ISA);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
96 use strict;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
97
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
98 # Object preamble - inheritance
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
99 use Bio::Variation::VariantI;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
100
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
101 @ISA = qw( Bio::Variation::VariantI );
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
102
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
103 sub new {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
104 my($class,@args) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
105 my $self = $class->SUPER::new(@args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
106
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
107 my ($start, $end, $length, $strand, $primary, $source,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
108 $frame, $score, $gff_string,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
109 $allele_ori, $allele_mut, $upstreamseq, $dnstreamseq,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
110 $label, $status, $proof, $region, $region_value, $region_dist, $numbering,
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
111 $cpg, $mut_number, $ismutation) =
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
112 $self->_rearrange([qw(START
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
113 END
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
114 LENGTH
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
115 STRAND
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
116 PRIMARY
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
117 SOURCE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
118 FRAME
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
119 SCORE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
120 GFF_STRING
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
121 ALLELE_ORI
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
122 ALLELE_MUT
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
123 UPSTREAMSEQ
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
124 DNSTREAMSEQ
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
125 LABEL
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
126 STATUS
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
127 PROOF
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
128 REGION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
129 REGION_VALUE
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
130 REGION_DIST
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
131 NUMBERING
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
132 CPG
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
133 MUT_NUMBER
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
134 ISMUTATION
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
135 )],
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
136 @args);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
137
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
138 $self->primary_tag("Variation");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
139
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
140 $self->{ 'alleles' } = [];
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
141
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
142 $start && $self->start($start);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
143 $end && $self->end($end);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
144 $length && $self->length($length);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
145 $strand && $self->strand($strand);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
146 $primary && $self->primary_tag($primary);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
147 $source && $self->source_tag($source);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
148 $frame && $self->frame($frame);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
149 $score && $self->score($score);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
150 $gff_string && $self->_from_gff_string($gff_string);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
151
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
152 $allele_ori && $self->allele_ori($allele_ori);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
153 $allele_mut && $self->allele_mut($allele_mut);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
154 $upstreamseq && $self->upStreamSeq($upstreamseq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
155 $dnstreamseq && $self->dnStreamSeq($dnstreamseq);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
156
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
157 $label && $self->label($label);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
158 $status && $self->status($status);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
159 $proof && $self->proof($proof);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
160 $region && $self->region($region);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
161 $region_value && $self->region_value($region_value);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
162 $region_dist && $self->region_dist($region_dist);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
163 $numbering && $self->numbering($numbering);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
164 $mut_number && $self->mut_number($mut_number);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
165 $ismutation && $self->isMutation($ismutation);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
166
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
167 $cpg && $self->CpG($cpg);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
168
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
169 return $self; # success - we hope!
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
170 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
171
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
172
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
173 =head2 CpG
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
174
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
175 Title : CpG
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
176 Usage : $obj->CpG()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
177 Function: sets and returns boolean values for variation
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
178 hitting a CpG site. Unset value return -1.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
179 Example : $obj->CpG()
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
180 Returns : boolean
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
181 Args : optional true of false value
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
182
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
183
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
184 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
185
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
186
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
187 sub CpG {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
188 my ($obj,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
189 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
190 $value ? ($value = 1) : ($value = 0);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
191 $obj->{'cpg'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
192 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
193 elsif (not defined $obj->{'label'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
194 $obj->{'cpg'} = $obj->_CpG_value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
195 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
196 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
197 return $obj->{'cpg'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
198 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
199 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
200
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
201
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
202
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
203 sub _CpG_value {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
204 my ($self) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
205 if ($self->allele_ori eq $self->allele_mut and length ($self->allele_ori) == 1 ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
206
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
207 # valid only for point mutations
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
208 # CpG methylation-mediated deamination:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
209 # CG -> TG | CG -> CA substitutions
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
210 # implementation here is less strict: if CpG dinucleotide was hit
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
211
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
212 if ( ( ($self->allele_ori eq 'c') && (substr($self->upStreamSeq, 0, 1) eq 'g') ) ||
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
213 ( ($self->allele_ori eq 'g') && (substr($self->dnStreamSeq, -1, 1) eq 'c') ) ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
214 return 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
215 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
216 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
217 return 0;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
218 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
219 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
220 $self->warn('CpG makes sense only in the context of point mutation');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
221 return undef;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
222 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
223 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
224
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
225
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
226 =head2 RNAChange
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
227
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
228 Title : RNAChange
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
229 Usage : $mutobj = $obj->RNAChange;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
230 : $mutobj = $obj->RNAChange($objref);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
231 Function: Returns or sets the link-reference to a mutation/change object.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
232 If there is no link, it will return undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
233 Returns : an obj_ref or undef
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
234
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
235 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
236
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
237
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
238 sub RNAChange {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
239 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
240 if (defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
241 if( ! $value->isa('Bio::Variation::RNAChange') ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
242 $self->throw("Is not a Bio::Variation::RNAChange object but a [$self]");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
243 return (undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
244 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
245 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
246 $self->{'RNAChange'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
247 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
248 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
249 unless (exists $self->{'RNAChange'}) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
250 return (undef);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
251 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
252 return $self->{'RNAChange'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
253 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
254 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
255
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
256
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
257 =head2 label
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
258
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
259 Title : label
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
260 Usage : $obj->label();
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
261 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
262
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
263 Sets and returns mutation event label(s). If value is not
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
264 set, or no argument is given returns false. Each
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
265 instantiable subclass of L<Bio::Variation::VariantI> needs
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
266 to implement this method. Valid values are listed in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
267 'Mutation event controlled vocabulary' in
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
268 http://www.ebi.ac.uk/mutations/recommendations/mutevent.html.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
269
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
270 Example :
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
271 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
272 Args : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
273
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
274 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
275
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
276
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
277 sub label {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
278 my ($self, $value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
279 my ($o, $m, $type);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
280 $o = $self->allele_ori->seq if $self->allele_ori and $self->allele_ori->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
281 $m = $self->allele_mut->seq if $self->allele_mut and $self->allele_mut->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
282
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
283 if (not $o and not $m ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
284 $self->warn("[DNAMutation, label] Both alleles should not be empty!\n");
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
285 $type = 'no change'; # is this enough?
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
286 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
287 elsif ($o && $m && length($o) == length($m) && length($o) == 1) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
288 $type = 'point';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
289 $type .= ", ". _point_type_label($o, $m);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
290 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
291 elsif (not $o ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
292 $type = 'insertion';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
293 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
294 elsif (not $m ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
295 $type = 'deletion';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
296 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
297 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
298 $type = 'complex';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
299 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
300 $self->{'label'} = $type;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
301 return $self->{'label'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
302 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
303
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
304
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
305 sub _point_type_label {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
306 my ($o, $m) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
307 my ($type);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
308 my %transition = ('a' => 'g',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
309 'g' => 'a',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
310 'c' => 't',
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
311 't' => 'c');
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
312 $o = lc $o;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
313 $m = lc $m;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
314 if ($o eq $m) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
315 $type = 'no change';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
316 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
317 elsif ($transition{$o} eq $m ) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
318 $type = 'transition';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
319 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
320 else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
321 $type = 'transversion';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
322 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
323 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
324
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
325
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
326 =head2 sysname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
327
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
328 Title : sysname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
329 Usage : $self->sysname
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
330 Function:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
331
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
332 This subroutine creates a string corresponding to the
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
333 'systematic name' of the mutation. Systematic name is
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
334 specified in Antonorakis & MDI Nomenclature Working Group:
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
335 Human Mutation 11:1-3, 1998.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
336 http://www.interscience.wiley.com/jpages/1059-7794/nomenclature.html
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
337 Returns : string
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
338
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
339 =cut
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
340
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
341
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
342 sub sysname {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
343 my ($self,$value) = @_;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
344 if( defined $value) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
345 $self->{'sysname'} = $value;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
346 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
347 $self->warn('Mutation start position is not defined')
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
348 if not defined $self->start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
349 my $sysname = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
350 # show the alphabet only if $self->SeqDiff->alphabet is set;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
351 my $mol = '';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
352 if ($self->SeqDiff->alphabet && $self->SeqDiff->alphabet eq 'dna') {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
353 $mol = 'g.';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
354 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
355 elsif ($self->SeqDiff->alphabet && $self->SeqDiff->alphabet eq 'rna') {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
356 $mol = 'c.';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
357 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
358 my $sep;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
359 if ($self->isMutation) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
360 $sep = '>';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
361 } else {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
362 $sep = '|';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
363 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
364 my $sign = '+';
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
365 $sign = '' if $self->start < 1;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
366 $sysname .= $mol ;#if $mol;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
367 $sysname .= $sign. $self->start;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
368
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
369 my @alleles = $self->each_Allele;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
370 $self->allele_mut($alleles[0]);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
371
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
372 $sysname .= 'del' if $self->label =~ /deletion/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
373 $sysname .= 'ins' if $self->label =~ /insertion/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
374 $sysname .= uc $self->allele_ori->seq if $self->allele_ori->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
375
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
376
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
377
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
378 #push @alleles, $self->allele_mut if $self->allele_mut;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
379 foreach my $allele (@alleles) {
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
380 $self->allele_mut($allele);
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
381 $sysname .= $sep if $self->label =~ /point/ or $self->label =~ /complex/;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
382 $sysname .= uc $self->allele_mut->seq if $self->allele_mut->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
383 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
384 $self->{'sysname'} = $sysname;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
385 #$self->{'sysname'} = $sign. $self->start.
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
386 # uc $self->allele_ori->seq. $sep. uc $self->allele_mut->seq;
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
387 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
388 return $self->{'sysname'};
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
389 }
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
390
2bc9b66ada89 Uploaded
mahtabm
parents:
diff changeset
391 1;