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

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