annotate variant_effect_predictor/Bio/Variation/DNAMutation.pm @ 2:a5976b2dce6f

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