annotate variant_effect_predictor/Bio/Variation/SeqDiff.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: SeqDiff.pm,v 1.16 2002/10/22 07:38:49 lapp Exp $
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
2 # bioperl module for Bio::Variation::SeqDiff
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
3 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
4 # Cared for by Heikki Lehvaslaiho <heikki@ebi.ac.uk>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
5 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
6 # Copyright Heikki Lehvaslaiho
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
7 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
9 #
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
10 # POD documentation - main docs before the code
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
11
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
12 # cds_end definition?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
13
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
14 =head1 NAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
15
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
16 Bio::Variation::SeqDiff - Container class for mutation/variant descriptions
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
17
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
18 =head1 SYNOPSIS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
19
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
20 $seqDiff = Bio::Variation::SeqDiff->new (
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
21 -id => $M20132,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
22 -alphabet => 'rna',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
23 -gene_symbol => 'AR'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
24 -chromosome => 'X',
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
25 -numbering => 'coding'
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
26 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
27 # get a DNAMutation object somehow
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
28 $seqDiff->add_Variant($dnamut);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
29 print $seqDiff->sys_name(), "\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
30
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
31 =head1 DESCRIPTION
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
32
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
33 SeqDiff stores Bio::Variation::VariantI object references and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
34 descriptive information common to all changes in a sequence. Mutations
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
35 are understood to be any kind of sequence markers and are expected to
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
36 occur in the same chromosome. See L<Bio::Variation::VariantI> for details.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
37
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
38 The methods of SeqDiff are geared towards describing mutations in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
39 human genes using gene-based coordinate system where 'A' of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
40 initiator codon has number 1 and the one before it -1. This is
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
41 according to conventions of human genetics.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
42
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
43 There will be class Bio::Variation::Genotype to describe markers in
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
44 different chromosomes and diploid genototypes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
45
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
46 Classes implementing Bio::Variation::VariantI interface are
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
47 Bio::Variation::DNAMutation, Bio::Variation::RNAChange, and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
48 Bio::Variation::AAChange. See L<Bio::Variation::VariantI>,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
49 L<Bio::Variation::DNAMutation>, L<Bio::Variation::RNAChange>, and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
50 L<Bio::Variation::AAChange> for more information.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
51
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
52 Variant objects can be added using two ways: an array passed to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
53 constructor or as individual Variant objects with add_Variant
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
54 method.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
55
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
56
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
57 =head1 FEEDBACK
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
58
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
59 =head2 Mailing Lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
60
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
61 User feedback is an integral part of the evolution of this and other
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
62 Bioperl modules. Send your comments and suggestions preferably to the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
63 Bioperl mailing lists Your participation is much appreciated.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
64
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
65 bioperl-l@bioperl.org - General discussion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
66 http://bio.perl.org/MailList.html - About the mailing lists
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
67
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
68 =head2 Reporting Bugs
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
69
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
70 report bugs to the Bioperl bug tracking system to help us keep track
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
71 the bugs and their resolution. Bug reports can be submitted via
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
72 email or the web:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
73
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
74 bioperl-bugs@bio.perl.org
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
75 http://bugzilla.bioperl.org/
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
76
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
77 =head1 AUTHOR - Heikki Lehvaslaiho
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
78
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
79 Email: heikki@ebi.ac.uk
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
80 Address:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
81
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
82 EMBL Outstation, European Bioinformatics Institute
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
83 Wellcome Trust Genome Campus, Hinxton
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
84 Cambs. CB10 1SD, United Kingdom
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
85
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
86 =head1 CONTRIBUTORS
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
87
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
88 Eckhard Lehmann, ecky@e-lehmann.de
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
89
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
90 =head1 APPENDIX
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
91
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
92 The rest of the documentation details each of the object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
93 methods. Internal methods are usually preceded with a _
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
94
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
95 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
96
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
97 # Let the code begin...
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
98
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
99 package Bio::Variation::SeqDiff;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
100 my $VERSION=1.0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
101
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
102 use strict;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
103 use vars qw($VERSION @ISA);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
104 use Bio::Root::Root;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
105 use Bio::Tools::CodonTable;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
106 use Bio::PrimarySeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
107
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
108 @ISA = qw( Bio::Root::Root );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
109
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
110
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
111 =head2 new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
112
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
113 Title : new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
114 Usage : $seqDiff = Bio::Variation::SeqDiff->new;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
115 Function: generates a new Bio::Variation::SeqDiff
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
116 Returns : reference to a new object of class SeqDiff
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
117 Args :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
118
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
119 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
120
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
121 sub new {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
122 my($class,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
123 my $self = $class->SUPER::new(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
124
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
125 my($id, $sysname, $trivname, $chr, $gene_symbol,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
126 $desc, $alphabet, $numbering, $offset, $rna_offset, $rna_id, $cds_end,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
127 $dna_ori, $dna_mut, $rna_ori, $rna_mut, $aa_ori, $aa_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
128 #@variants, @genes
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
129 ) =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
130 $self->_rearrange([qw(ID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
131 SYSNAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
132 TRIVNAME
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
133 CHR
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
134 GENE_SYMBOL
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
135 DESC
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
136 ALPHABET
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
137 NUMBERING
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
138 OFFSET
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
139 RNA_OFFSET
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
140 RNA_ID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
141 CDS_END
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
142 DNA_ORI
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
143 DNA_MUT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
144 RNA_ORI
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
145 AA_ORI
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
146 AA_MUT
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
147 )],
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
148 @args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
149
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
150 #my $make = $self->SUPER::_initialize(@args);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
151
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
152 $id && $self->id($id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
153 $sysname && $self->sysname($sysname);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
154 $trivname && $self->trivname($trivname);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
155 $chr && $self->chromosome($chr);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
156 $gene_symbol && $self->gene_symbol($chr);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
157 $desc && $self->description($desc);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
158 $alphabet && $self->alphabet($alphabet);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
159 $numbering && $self->numbering($numbering);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
160 $offset && $self->offset($offset);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
161 $rna_offset && $self->rna_offset($rna_offset);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
162 $rna_id && $self->rna_id($rna_id);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
163 $cds_end && $self->cds_end($cds_end);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
164
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
165 $dna_ori && $self->dna_ori($dna_ori);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
166 $dna_mut && $self->dna_mut($dna_mut);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
167 $rna_ori && $self->rna_ori($rna_ori);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
168 $rna_mut && $self->rna_mut($rna_mut);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
169 $aa_ori && $self->aa_ori ($aa_ori);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
170 $aa_mut && $self->aa_mut ($aa_mut);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
171
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
172 $self->{ 'variants' } = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
173 #@variants && push(@{$self->{'variants'}},@variants);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
174
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
175 $self->{ 'genes' } = [];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
176 #@genes && push(@{$self->{'genes'}},@genes);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
177
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
178 return $self; # success - we hope!
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
179 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
180
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
181
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
182 =head2 id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
183
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
184 Title : id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
185 Usage : $obj->id(H0001); $id = $obj->id();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
186 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
187
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
188 Sets or returns the id of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
189 Should be used to give the collection of variants a UID
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
190 without semantic associations.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
191
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
192 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
193 Returns : value of id, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
194 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
195
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
196 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
197
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
198
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
199 sub id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
200 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
201 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
202 $self->{'id'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
203 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
204 # unless (exists $self->{'id'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
205 # return "undefined";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
206 # }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
207 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
208 return $self->{'id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
209 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
210 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
211
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
212
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
213 =head2 sysname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
214
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
215 Title : sysname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
216 Usage : $obj->sysname('5C>G'); $sysname = $obj->sysname();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
217 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
218
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
219 Sets or returns the systematic name of the seqDiff. The
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
220 name should follow the HUGO Mutation Database Initiative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
221 approved nomenclature. If called without first setting the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
222 value, will generate it from L<Bio::Variation::DNAMutation>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
223 objects attached.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
224
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
225 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
226 Returns : value of sysname, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
227 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
228
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
229 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
230
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
231
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
232 sub sysname {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
233 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
234 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
235 $self->{'sysname'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
236 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
237 elsif (not defined $self->{'sysname'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
238
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
239 my $sysname = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
240 my $c = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
241 foreach my $mut ($self->each_Variant) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
242 if( $mut->isa('Bio::Variation::DNAMutation') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
243 $c++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
244 if ($c == 1 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
245 $sysname = $mut->sysname ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
246 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
247 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
248 $sysname .= ";". $mut->sysname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
249 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
250 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
251 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
252 $sysname = "[". $sysname. "]" if $c > 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
253 $self->{'sysname'} = $sysname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
254 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
255 return $self->{'sysname'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
256 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
257
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
258
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
259 =head2 trivname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
260
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
261 Title : trivname
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
262 Usage : $obj->trivname('[A2G;T56G]'); $trivname = $obj->trivname();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
263 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
264
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
265 Sets or returns the trivial name of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
266 The name should follow the HUGO Mutation Database Initiative
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
267 approved nomenclature. If called without first setting the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
268 value, will generate it from L<Bio::Variation::AAChange>
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
269 objects attached.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
270
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
271 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
272 Returns : value of trivname, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
273 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
274
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
275 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
276
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
277
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
278 sub trivname {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
279 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
280 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
281 $self->{'trivname'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
282 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
283 elsif (not defined $self->{'trivname'}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
284
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
285 my $trivname = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
286 my $c = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
287 foreach my $mut ($self->each_Variant) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
288 if( $mut->isa('Bio::Variation::AAChange') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
289 $c++;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
290 if ($c == 1 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
291 $trivname = $mut->trivname ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
292 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
293 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
294 $trivname .= ";". $mut->trivname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
295 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
296 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
297 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
298 $trivname = "[". $trivname. "]" if $c > 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
299 $self->{'trivname'} = $trivname;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
300 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
301
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
302 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
303 return $self->{'trivname'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
304 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
305 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
306
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
307
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
308 =head2 chromosome
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
309
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
310 Title : chromosome
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
311 Usage : $obj->chromosome('X'); $chromosome = $obj->chromosome();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
312 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
313
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
314 Sets or returns the chromosome ("linkage group") of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
315
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
316 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
317 Returns : value of chromosome, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
318 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
319
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
320 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
321
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
322
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
323 sub chromosome {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
324 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
325 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
326 $self->{'chromosome'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
327 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
328 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
329 return $self->{'chromosome'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
330 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
331 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
332
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
333
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
334 =head2 gene_symbol
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
335
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
336 Title : gene_symbol
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
337 Usage : $obj->gene_symbol('FOS'); $gene_symbol = $obj->gene_symbol;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
338 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
339
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
340 Sets or returns the gene symbol for the studied CDS.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
341
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
342 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
343 Returns : value of gene_symbol, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
344 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
345
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
346 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
347
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
348
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
349 sub gene_symbol {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
350 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
351 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
352 $self->{'gene_symbol'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
353 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
354 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
355 return $self->{'gene_symbol'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
356 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
357 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
358
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
359
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
360
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
361 =head2 description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
362
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
363 Title : description
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
364 Usage : $obj->description('short description'); $descr = $obj->description();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
365 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
366
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
367 Sets or returns the short description of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
368
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
369 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
370 Returns : value of description, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
371 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
372
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
373 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
374
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
375
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
376 sub description {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
377 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
378 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
379 $self->{'description'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
380 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
381 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
382 return $self->{'description'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
383 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
384 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
385
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
386
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
387 =head2 alphabet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
388
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
389 Title : alphabet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
390 Usage : if( $obj->alphabet eq 'dna' ) { /Do Something/ }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
391 Function: Returns the type of primary reference sequence being one of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
392 'dna', 'rna' or 'protein'. This is case sensitive.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
393
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
394 Returns : a string either 'dna','rna','protein'.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
395 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
396
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
397
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
398 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
399
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
400 sub alphabet {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
401 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
402 my %type = (dna => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
403 rna => 1,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
404 protein => 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
405 if( defined $value ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
406 if ($type{$value}) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
407 $self->{'alphabet'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
408 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
409 $self->throw("$value is not valid alphabet value!");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
410 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
411 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
412 return $self->{'alphabet'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
413 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
414
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
415
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
416 =head2 numbering
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
417
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
418 Title : numbering
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
419 Usage : $obj->numbering('coding'); $numbering = $obj->numbering();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
420 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
421
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
422 Sets or returns the string giving the numbering schema used
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
423 to describe the variants.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
424
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
425 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
426 Returns : value of numbering, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
427 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
428
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
429 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
430
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
431
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
432
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
433 sub numbering {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
434 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
435 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
436 $self->{'numbering'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
437 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
438 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
439 return $self->{'numbering'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
440 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
441 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
442
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
443
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
444 =head2 offset
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
445
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
446 Title : offset
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
447 Usage : $obj->offset(124); $offset = $obj->offset();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
448 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
449
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
450 Sets or returns the offset from the beginning of the DNA sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
451 to the coordinate start used to describe variants. Typically
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
452 the beginning of the coding region of the gene.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
453 The cds_start should be 1 + offset.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
454
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
455 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
456 Returns : value of offset, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
457 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
458
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
459 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
460
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
461
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
462
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
463 sub offset {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
464 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
465 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
466 $self->{'offset'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
467 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
468 elsif (not defined $self->{'offset'} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
469 return $self->{'offset'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
470 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
471 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
472 return $self->{'offset'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
473 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
474 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
475
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
476
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
477 =head2 cds_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
478
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
479 Title : cds_start
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
480 Usage : $obj->cds_start(123); $cds_start = $obj->cds_start();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
481 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
482
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
483 Sets or returns the cds_start from the beginning of the DNA
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
484 sequence to the coordinate start used to describe
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
485 variants. Typically the beginning of the coding region of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
486 the gene. Needs to be and is implemented as 1 + offset.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
487
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
488 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
489 Returns : value of cds_start, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
490 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
491
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
492 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
493
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
494
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
495
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
496 sub cds_start {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
497 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
498 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
499 $self->{'offset'} = $value - 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
500 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
501 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
502 return $self->{'offset'} + 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
503 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
504 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
505
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
506
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
507 =head2 cds_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
508
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
509 Title : cds_end
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
510 Usage : $obj->cds_end(321); $cds_end = $obj->cds_end();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
511 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
512
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
513 Sets or returns the position of the last nucleotitide of the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
514 termination codon. The coordinate system starts from cds_start.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
515
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
516 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
517 Returns : value of cds_end, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
518 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
519
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
520 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
521
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
522
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
523
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
524 sub cds_end {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
525 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
526 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
527 $self->{'cds_end'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
528 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
529 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
530 return $self->{'cds_end'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
531 #$self->{'cds_end'} = CORE::length($self->SeqDiff->rna_ori)/3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
532 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
533 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
534
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
535
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
536 =head2 rna_offset
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
537
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
538 Title : rna_offset
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
539 Usage : $obj->rna_offset(124); $rna_offset = $obj->rna_offset();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
540 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
541
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
542 Sets or returns the rna_offset from the beginning of the RNA sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
543 to the coordinate start used to describe variants. Typically
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
544 the beginning of the coding region of the gene.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
545
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
546 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
547 Returns : value of rna_offset, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
548 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
549
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
550 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
551
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
552
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
553
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
554 sub rna_offset {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
555 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
556 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
557 $self->{'rna_offset'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
558 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
559 elsif (not defined $self->{'rna_offset'} ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
560 return $self->{'rna_offset'} = 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
561 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
562 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
563 return $self->{'rna_offset'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
564 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
565 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
566
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
567
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
568 =head2 rna_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
569
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
570 Title : rna_id
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
571 Usage : $obj->rna_id('transcript#3'); $rna_id = $obj->rna_id();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
572 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
573
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
574 Sets or returns the ID for original RNA sequence of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
575
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
576 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
577 Returns : value of rna_id, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
578 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
579
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
580 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
581
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
582
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
583 sub rna_id {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
584 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
585 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
586 $self->{'rna_id'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
587 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
588 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
589 return $self->{'rna_id'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
590 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
591 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
592
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
593
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
594
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
595 =head2 add_Variant
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
596
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
597 Title : add_Variant
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
598 Usage : $obj->add_Variant($variant)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
599 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
600
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
601 Pushes one Bio::Variation::Variant into the list of variants.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
602 At the same time, creates a link from the Variant to SeqDiff
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
603 using its SeqDiff method.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
604
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
605 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
606 Returns : 1 when succeeds, 0 for failure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
607 Args : Variant object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
608
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
609 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
610
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
611 sub add_Variant {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
612 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
613 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
614 if( ! $value->isa('Bio::Variation::VariantI') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
615 $self->throw("Is not a VariantI complying object but a [$self]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
616 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
617 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
618 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
619 push(@{$self->{'variants'}},$value);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
620 $value->SeqDiff($self);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
621 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
622 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
623 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
624 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
625 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
626 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
627 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
628
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
629
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
630 =head2 each_Variant
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
631
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
632 Title : each_Variant
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
633 Usage : $obj->each_Variant();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
634 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
635
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
636 Returns a list of Variants.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
637
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
638 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
639 Returns : list of Variants
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
640 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
641
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
642 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
643
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
644 sub each_Variant{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
645 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
646
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
647 return @{$self->{'variants'}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
648 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
649
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
650
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
651
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
652 =head2 add_Gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
653
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
654 Title : add_Gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
655 Usage : $obj->add_Gene($gene)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
656 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
657
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
658 Pushes one L<Bio::LiveSeq::Gene> into the list of genes.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
659
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
660 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
661 Returns : 1 when succeeds, 0 for failure.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
662 Args : Bio::LiveSeq::Gene object
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
663
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
664 See L<Bio::LiveSeq::Gene> for more information.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
665
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
666 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
667
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
668
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
669 sub add_Gene {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
670 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
671 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
672 if( ! $value->isa('Bio::LiveSeq::Gene') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
673 $value->throw("Is not a Bio::LiveSeq::Gene object but a [$value]");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
674 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
675 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
676 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
677 push(@{$self->{'genes'}},$value);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
678 return 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
679 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
680 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
681 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
682 return 0;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
683 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
684 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
685
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
686
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
687 =head2 each_Gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
688
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
689 Title : each_Gene
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
690 Usage : $obj->each_Gene();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
691 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
692
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
693 Returns a list of L<Bio::LiveSeq::Gene>s.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
694
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
695 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
696 Returns : list of Genes
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
697 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
698
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
699 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
700
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
701 sub each_Gene{
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
702 my ($self,@args) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
703
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
704 return @{$self->{'genes'}};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
705 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
706
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
707
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
708 =head2 dna_ori
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
709
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
710 Title : dna_ori
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
711 Usage : $obj->dna_ori('atgctgctgctgct'); $dna_ori = $obj->dna_ori();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
712 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
713
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
714 Sets or returns the original DNA sequence string of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
715
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
716 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
717 Returns : value of dna_ori, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
718 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
719
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
720 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
721
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
722
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
723 sub dna_ori {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
724 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
725 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
726 $self->{'dna_ori'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
727 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
728 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
729 return $self->{'dna_ori'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
730 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
731 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
732
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
733
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
734 =head2 dna_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
735
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
736 Title : dna_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
737 Usage : $obj->dna_mut('atgctggtgctgct'); $dna_mut = $obj->dna_mut();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
738 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
739
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
740 Sets or returns the mutated DNA sequence of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
741 If sequence has not been set generates it from the
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
742 original sequence and DNA mutations.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
743
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
744 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
745 Returns : value of dna_mut, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
746 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
747
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
748 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
749
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
750
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
751 sub dna_mut {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
752 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
753 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
754 $self->{'dna_mut'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
755 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
756 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
757 $self->_set_dnamut() unless $self->{'dna_mut'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
758 return $self->{'dna_mut'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
759 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
760 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
761
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
762 sub _set_dnamut {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
763 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
764
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
765 return undef unless $self->{'dna_ori'} && $self->each_Variant;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
766
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
767 $self->{'dna_mut'} = $self->{'dna_ori'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
768 foreach ($self->each_Variant) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
769 next unless $_->isa('Bio::Variation::DNAMutation');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
770 next unless $_->isMutation;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
771
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
772 my ($s, $la, $le);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
773 #lies the mutation less than 25 bases after the start of sequence?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
774 if ($_->start < 25) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
775 $s = 0; $la = $_->start - 1;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
776 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
777 $s = $_->start - 25; $la = 25;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
778 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
779
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
780 #is the mutation an insertion?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
781 $_->end($_->start) unless $_->allele_ori->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
782
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
783 #does the mutation end greater than 25 bases before the end of
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
784 #sequence?
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
785 if (($_->end + 25) > length($self->{'dna_mut'})) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
786 $le = length($self->{'dna_mut'}) - $_->end;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
787 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
788 $le = 25;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
789 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
790
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
791 $_->dnStreamSeq(substr($self->{'dna_mut'}, $s, $la));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
792 $_->upStreamSeq(substr($self->{'dna_mut'}, $_->end, $le));
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
793
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
794 my $s_ori = $_->dnStreamSeq . $_->allele_ori->seq . $_->upStreamSeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
795 my $s_mut = $_->dnStreamSeq . $_->allele_mut->seq . $_->upStreamSeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
796
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
797 (my $str = $self->{'dna_mut'}) =~ s/$s_ori/$s_mut/;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
798 $self->{'dna_mut'} = $str;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
799 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
800 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
801
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
802
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
803 =head2 rna_ori
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
804
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
805 Title : rna_ori
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
806 Usage : $obj->rna_ori('atgctgctgctgct'); $rna_ori = $obj->rna_ori();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
807 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
808
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
809 Sets or returns the original RNA sequence of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
810
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
811 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
812 Returns : value of rna_ori, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
813 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
814
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
815 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
816
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
817
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
818 sub rna_ori {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
819 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
820 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
821 $self->{'rna_ori'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
822 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
823 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
824 return $self->{'rna_ori'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
825 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
826 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
827
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
828
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
829 =head2 rna_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
830
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
831 Title : rna_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
832 Usage : $obj->rna_mut('atgctggtgctgct'); $rna_mut = $obj->rna_mut();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
833 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
834
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
835 Sets or returns the mutated RNA sequence of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
836
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
837 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
838 Returns : value of rna_mut, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
839 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
840
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
841 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
842
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
843
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
844 sub rna_mut {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
845 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
846 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
847 $self->{'rna_mut'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
848 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
849 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
850 return $self->{'rna_mut'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
851 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
852 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
853
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
854
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
855 =head2 aa_ori
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
856
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
857 Title : aa_ori
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
858 Usage : $obj->aa_ori('MAGVLL*'); $aa_ori = $obj->aa_ori();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
859 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
860
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
861 Sets or returns the original protein sequence of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
862
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
863 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
864 Returns : value of aa_ori, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
865 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
866
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
867 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
868
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
869
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
870 sub aa_ori {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
871 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
872 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
873 $self->{'aa_ori'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
874 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
875 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
876 return $self->{'aa_ori'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
877 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
878 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
879
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
880
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
881 =head2 aa_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
882
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
883 Title : aa_mut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
884 Usage : $obj->aa_mut('MA*'); $aa_mut = $obj->aa_mut();
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
885 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
886
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
887 Sets or returns the mutated protein sequence of the seqDiff.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
888
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
889 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
890 Returns : value of aa_mut, a scalar
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
891 Args : newvalue (optional)
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
892
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
893 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
894
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
895
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
896 sub aa_mut {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
897 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
898 if (defined $value) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
899 $self->{'aa_mut'} = $value;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
900 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
901 else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
902 return $self->{'aa_mut'};
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
903 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
904 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
905
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
906
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
907 =head2 seqobj
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
908
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
909 Title : seqobj
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
910 Usage : $dnaobj = $obj->seqobj('dna_mut');
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
911 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
912
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
913 Returns the any original or mutated sequences as a
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
914 Bio::PrimarySeq object.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
915
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
916 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
917 Returns : Bio::PrimarySeq object for the requested sequence
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
918 Args : string, method name for the sequence requested
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
919
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
920 See L<Bio::PrimarySeq> for more information.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
921
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
922 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
923
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
924 sub seqobj {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
925 my ($self,$value) = @_;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
926 my $out;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
927 my %valid_obj =
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
928 map {$_, 1} qw(dna_ori rna_ori aa_ori dna_mut rna_mut aa_mut);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
929 $valid_obj{$value} ||
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
930 $self->throw("Sequence type '$value' is not a valid type (".
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
931 join(',', map "'$_'", sort keys %valid_obj) .") lowercase");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
932 my ($alphabet) = $value =~ /([^_]+)/;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
933 my $id = $self->id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
934 $id = $self->rna_id if $self->rna_id;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
935 $alphabet = 'protein' if $alphabet eq 'aa';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
936 $out = Bio::PrimarySeq->new
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
937 ( '-seq' => $self->{$value},
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
938 '-display_id' => $id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
939 '-accession_number' => $self->id,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
940 '-alphabet' => $alphabet
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
941 ) if $self->{$value} ;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
942 return $out;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
943 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
944
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
945 =head2 alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
946
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
947 Title : alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
948 Usage : $obj->alignment
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
949 Function:
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
950
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
951 Returns a pretty RNA/AA sequence alignment from linked
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
952 objects. Under construction: Only simple coding region
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
953 point mutations work.
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
954
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
955 Example :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
956 Returns :
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
957 Args : none
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
958
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
959 =cut
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
960
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
961
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
962 sub alignment {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
963 my $self = shift;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
964 my (@entry, $text);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
965
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
966 my $maxflanklen = 12;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
967
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
968 foreach my $mut ($self->each_Variant) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
969 if( $mut->isa('Bio::Variation::RNAChange') ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
970
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
971 my $upflank = $mut->upStreamSeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
972 my $dnflank = $mut->dnStreamSeq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
973 my $cposd = $mut->codon_pos;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
974 my $rori = $mut->allele_ori->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
975 my $rmut = $mut->allele_mut->seq;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
976 my $rseqoriu = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
977 my $rseqmutu = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
978 my $rseqorid = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
979 my $rseqmutd = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
980 my $aaseqmutu = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
981 my (@rseqori, @rseqmut );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
982
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
983 # point
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
984 if ($mut->DNAMutation->label =~ /point/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
985 if ($cposd == 1 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
986 my $nt2d = substr($dnflank, 0, 2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
987 push @rseqori, $rori. $nt2d;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
988 push @rseqmut, uc ($rmut). $nt2d;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
989 $dnflank = substr($dnflank, 2);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
990 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
991 elsif ($cposd == 2) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
992 my $ntu = chop $upflank;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
993 my $ntd = substr($dnflank, 0, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
994 push @rseqori, $ntu. $rori. $ntd;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
995 push @rseqmut, $ntu. uc ($rmut). $ntd;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
996 $dnflank = substr($dnflank, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
997 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
998 elsif ($cposd == 3) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
999 my $ntu1 = chop $upflank;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1000 my $ntu2 = chop $upflank;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1001 push (@rseqori, $ntu2. $ntu1. $rori);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1002 push (@rseqmut, $ntu2. $ntu1. uc $rmut);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1003 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1004 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1005 #deletion
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1006 elsif ($mut->DNAMutation->label =~ /deletion/) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1007 if ($cposd == 2 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1008 $rseqorid = chop $upflank;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1009 $rseqmutd = $rseqorid;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1010 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1011 for (my $i=1; $i<=$mut->length; $i++) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1012 my $ntd .= substr($mut->allele_ori, $i-1, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1013 $rseqorid .= $ntd;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1014 if (length($rseqorid) == 3 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1015 push (@rseqori, $rseqorid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1016 push (@rseqmut, " ");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1017 $rseqorid = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1018 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1019 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1020
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1021 if ($rseqorid) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1022 $rseqorid .= substr($dnflank, 0, 3-$rseqorid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1023 push (@rseqori, $rseqorid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1024 push (@rseqmut, " ");
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1025 $dnflank = substr($dnflank,3-$rseqorid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1026 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1027 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1028 $upflank = reverse $upflank;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1029 # loop throught the flanks
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1030 for (my $i=1; $i<=length($dnflank); $i++) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1031
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1032 last if $i > $maxflanklen;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1033
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1034 my $ntd .= substr($dnflank, $i-1, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1035 my $ntu .= substr($upflank, $i-1, 1);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1036
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1037 $rseqmutd .= $ntd;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1038 $rseqorid .= $ntd;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1039 $rseqmutu = $ntu. $rseqmutu;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1040 $rseqoriu = $ntu. $rseqoriu;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1041
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1042 if (length($rseqorid) == 3 and length($rseqorid) == 3) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1043 push (@rseqori, $rseqorid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1044 push (@rseqmut, $rseqmutd);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1045 $rseqorid = $rseqmutd ='';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1046 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1047 if (length($rseqoriu) == 3 and length($rseqoriu) == 3) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1048 unshift (@rseqori, $rseqoriu);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1049 unshift (@rseqmut, $rseqmutu);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1050 $rseqoriu = $rseqmutu ='';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1051 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1052
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1053 #print "|i=$i, $cposd, $rseqmutd, $rseqorid\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1054 #print "|i=$i, $cposu, $rseqmutu, $rseqoriu\n\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1055
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1056 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1057
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1058 push (@rseqori, $rseqorid);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1059 unshift (@rseqori, $rseqoriu);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1060 push (@rseqmut, $rseqmutd);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1061 unshift (@rseqmut, $rseqmutu);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1062
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1063 return unless $mut->AAChange;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1064 #translate
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1065 my $tr = new Bio::Tools::CodonTable ('-id' => $mut->codon_table);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1066 my $apos = $mut->AAChange->start;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1067 my $aposmax = CORE::length($self->aa_ori); #terminator codon no
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1068 my $rseqori;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1069 my $rseqmut;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1070 my $aaseqori;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1071 my $aaseqmut = "";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1072 for (my $i = 0; $i <= $#rseqori; $i++) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1073 my $a = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1074
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1075 $a = $tr->translate($rseqori[$i]) if length($rseqori[$i]) == 3;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1076
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1077 if (length($a) != 1 or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1078 $apos - ( $maxflanklen/2 -1) + $i < 1 or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1079 $apos - ( $maxflanklen/2 -1) + $i > $aposmax ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1080 $aaseqori .= " ";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1081 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1082 $aaseqori .= " ". $a. " ";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1083 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1084 my $b = '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1085 if (length($rseqmut[$i]) == 3) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1086 if ($rseqmut[$i] eq ' ') {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1087 $b = "_";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1088 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1089 $b = $tr->translate($rseqmut[$i]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1090 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1091 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1092 if (( $b ne $a and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1093 length($b) == 1 and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1094 $apos - ( $maxflanklen/2 -1) + $i >= 1 ) or
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1095 ( $apos - ( $maxflanklen/2 -1) + $i >= $aposmax and
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1096 $mut->label =~ 'termination')
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1097 ) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1098 $aaseqmut .= " ". $b. " ";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1099 } else {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1100 $aaseqmut .= " ";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1101 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1102
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1103 if ($i == 0 and length($rseqori[$i]) != 3) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1104 my $l = 3 - length($rseqori[$i]);
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1105 $rseqori[$i] = (" " x $l). $rseqori[$i];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1106 $rseqmut[$i] = (" " x $l). $rseqmut[$i];
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1107 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1108 $rseqori .= $rseqori[$i]. " " if $rseqori[$i] ne '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1109 $rseqmut .= $rseqmut[$i]. " " if $rseqmut[$i] ne '';
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1110 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1111
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1112 # collect the results
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1113 push (@entry,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1114 "\n"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1115 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1116 $text = " ". $aaseqmut;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1117 push (@entry,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1118 $text
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1119 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1120 $text = "Variant : ". $rseqmut;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1121 push (@entry,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1122 $text
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1123 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1124 $text = "Reference: ". $rseqori;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1125 push (@entry,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1126 $text
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1127 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1128 $text = " ". $aaseqori;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1129 push (@entry,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1130 $text
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1131 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1132 push (@entry,
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1133 "\n"
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1134 );
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1135 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1136
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1137 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1138
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1139 my $res;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1140 foreach my $line (@entry) {
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1141 $res .= "$line\n";
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1142 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1143 return $res;
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1144 }
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1145
21066c0abaf5 Uploaded
willmclaren
parents:
diff changeset
1146 1;