annotate variant_effect_predictor/Bio/Variation/IO/flat.pm @ 3:d30fa12e4cc5 default tip

Merge heads 2:a5976b2dce6f and 1:09613ce8151e which were created as a result of a recently fixed bug.
author devteam <devteam@galaxyproject.org>
date Mon, 13 Jan 2014 10:38:30 -0500
parents 1f6dce3d34e0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
1 # $Id: flat.pm,v 1.12 2002/10/22 07:38:50 lapp Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 # BioPerl module for Bio::Variation::IO::flat
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 # Cared for by Heikki Lehvaslaiho <Heikki@ebi.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # Copyright Heikki Lehvaslaiho
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 Bio::Variation::IO::flat - flat file sequence variation input/output stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 Do not use this module directly. Use it via the Bio::Variation::IO class.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 This object can transform Bio::Variation::SeqDiff objects to and from
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 flat file databases. The format used is EMBL like extension of what is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 used by the "EBI Mutation Checker" at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 http://www.ebi.ac.uk/cgi-bin/mutations/check.cgi and will eventually
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 replace it.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 More information of the attributes and values use can be found at
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 http://www.ebi.ac.uk/mutations/recommendations/.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 Bioperl modules. Send your comments and suggestions preferably to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 Bioperl mailing lists Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 =head1 AUTHOR - Heikki Lehvaslaiho
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 Email: heikki@ebi.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 Address:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 EMBL Outstation, European Bioinformatics Institute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Wellcome Trust Genome Campus, Hinxton
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 Cambs. CB10 1SD, United Kingdom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 package Bio::Variation::IO::flat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 my $VERSION=1.0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77 use Text::Wrap;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use Bio::Variation::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use Bio::Variation::SeqDiff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use Bio::Variation::DNAMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use Bio::Variation::RNAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 use Bio::Variation::AAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::Variation::Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 @ISA = qw(Bio::Variation::IO);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 my($class, @args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 my $self = bless {}, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 $self->_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 my($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 return unless $self->SUPER::_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 =head2 next
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Title : next
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 Usage : $haplo = $stream->next()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 Function: returns the next seqDiff in the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Returns : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Args : NONE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 sub next {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 my( $self ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 local $/ = '//';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114 return unless my $entry = $self->_readline;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 return if $entry =~ /^\s+$/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $entry =~ /\s*ID\s+\S+/ || $self->throw("We do need an ID!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 my ($id, $offset, $alphabet) = $entry =~ /\s*ID +([^:]+)..(\d+)[^\)]*.\[?([cg])?/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 or $self->throw("Can't parse ID line");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 # $self->throw("$1|$2|$3");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 my $h =Bio::Variation::SeqDiff->new(-id => $id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 -offset => $offset,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 if ($alphabet) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 if ($alphabet eq 'g') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 $alphabet = 'dna';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 elsif ($alphabet eq 'c') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 $alphabet = 'rna';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $h->alphabet($alphabet);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 # DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my @dna = split ( / DNA;/, $entry );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 shift @dna;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 my $prevdnaobj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 foreach my $dna (@dna) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $dna =~ s/Feature[ \t]+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 ($dna) = split "RNA; ", $dna;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 #$self->warn("|$dna|") ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 #exit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 my ($mut_number, $proof, $location, $upflank, $change, $dnflank) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 $dna =~ m|\W+([\d\.]+).+/proof: (\w+).+/location: ([^ \n]+).+/upflank: ([ \n\w]+).+/change: ([^ /]+).+/dnflank: ([ \n\w]+)|s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 $change =~ s/[ \n]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 my ($ori, $mut) = split /[>\|]/, $change;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 my ($variation_number, $change_number) = split /\./, $mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 #$self->warn("|$mut_number|>|$variation_number|$change_number|");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 my $dnamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 if ($change_number and $change_number > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 my $a3 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $a3->seq($mut) if $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 #$dnamut->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $prevdnaobj->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $upflank =~ s/[ \n]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $dnflank =~ s/[ \n]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 my ($region, $junk, $region_value, $junk2, $region_dist) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $dna =~ m|.+/region: ([\w\']+)(; )?(\w+)?( ?\(\+?)?(-?\d+)?|s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 #my $s = join ("|", $mut_number, $proof, $location, $upflank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164 # $change, $dnflank, $region, $region_value, $region_dist, $1,$2,$3,$4,$5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 #$self->warn($s);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 #exit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 my ($start, $sep, $end) = $location =~ /(-?\d+)(.)?\D?(-?\d+)?/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 $end = $start if not $end ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my ($len) = $end - $start +1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $len = 0, $start = $end if defined $sep and $sep eq '^';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 my $ismut = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $ismut = 1 if $change =~ m/>/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 $dnamut = Bio::Variation::DNAMutation->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 ('-start' => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 '-end' => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 '-length' => $len,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 '-upStreamSeq' => $upflank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 '-dnStreamSeq' => $dnflank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 '-proof' => $proof,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 '-mut_number' => $mut_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 $prevdnaobj = $dnamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 my $a1 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $a1->seq($ori) if $ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 $dnamut->allele_ori($a1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 my $a2 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 $a2->seq($mut) if $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 $dnamut->add_Allele($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 if ($ismut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $dnamut->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $dnamut->allele_mut($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $dnamut->region($region) if defined $region;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 $dnamut->region_value($region_value) if defined $region_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 $dnamut->region_dist($region_dist) if defined $region_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $h->add_Variant($dnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $dnamut->SeqDiff($h);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 # RNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 my @rna = split ( / RNA;/, $entry );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 shift @rna;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my $prevrnaobj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 foreach my $rna (@rna) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 $rna = substr ($rna, 0, index($rna, 'Feature AA'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 $rna =~ s/Feature[ \t]+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 ($rna) = split "DNA; ", $rna;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 #$self->warn("|$rna|") ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 my ($mut_number, $proof, $location, $upflank, $change, $dnflank) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $rna =~ m|\W+([\d\.]+).+/proof: (\w+).+/location: ([^ \n]+).+/upflank: (\w+).+/change: ([^/]+).+/dnflank: (\w+)|s ;#'
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 my ($region, $junk, $region_value, $junk2, $region_dist) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 $rna =~ m|.+/region: ([\w\']+)(; )?(\w+)?( ?\(\+?)?(-?\d+)?|s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 #my $s = join ("|", $mut_number, $proof, $location, $upflank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 # $change, $dnflank, $region, $region_value, $region_dist, $1,$2,$3,$4,$5);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 #$self->warn($s);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 #exit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $change =~ s/[ \n]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 my ($ori, $mut) = split /[>\|]/, $change;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 my $rnamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my ($variation_number, $change_number) = split /\./, $mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 if ($change_number and $change_number > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 my $a3 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $a3->seq($mut) if $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 #$rnamut->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $prevrnaobj->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 my ($start, $sep, $end) = $location =~ /(-?\d+)(.)?\D?(-?\d+)?/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 $end = $start if not $end ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 my ($len) = $end - $start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 $len = 0, $start = $end if defined $sep and $sep eq '^';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 my $ismut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 $ismut = 1 if $change =~ m/>/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 my ($codon_table) = $rna =~ m|.+/codon_table: (\d+)|s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 my ($codon_pos) = $rna =~ m|.+/codon:[^;]+; ([123])|s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $rnamut = Bio::Variation::RNAChange->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 ('-start' => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 '-end' => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 '-length' => $len,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 '-upStreamSeq' => $upflank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 '-dnStreamSeq' => $dnflank,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 '-proof' => $proof,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 '-mut_number' => $mut_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 $prevrnaobj = $rnamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 my $a1 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 $a1->seq($ori) if $ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $rnamut->allele_ori($a1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 my $a2 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $a2->seq($mut) if $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 $rnamut->add_Allele($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 if ($ismut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $rnamut->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 $rnamut->allele_mut($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $rnamut->region($region) if defined $region;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 $rnamut->region_value($region_value) if defined $region_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 $rnamut->region_dist($region_dist) if defined $region_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $rnamut->codon_table($codon_table) if $codon_table;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $rnamut->codon_pos($codon_pos) if $codon_pos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $h->add_Variant($rnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 foreach my $mut ($h->each_Variant) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 if ($mut->isa('Bio::Variation::DNAMutation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 if ($mut->mut_number == $rnamut->mut_number) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 $rnamut->DNAMutation($mut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 $mut->RNAChange($rnamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 # AA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 my @aa = split ( / AA;/, $entry );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 shift @aa;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 my $prevaaobj;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 foreach my $aa (@aa) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 $aa = substr ($aa, 0, index($aa, 'Feature AA'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 $aa =~ s/Feature[ \t]+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 ($aa) = split "DNA; ", $aa;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 #$self->warn("|$aa|") ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 my ($mut_number, $proof, $location, $change) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $aa =~ m|\W+([\d\.]+).+/proof: (\w+).+/location: ([^ \n]+)./change: ([^/;]+)|s;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 $change =~ s/[ \n]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 #my $s = join ("|", $mut_number, $proof, $location, $change);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 #$self->warn($s);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 #exit;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $change =~ s/[ \n]//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 $change =~ s/DNA$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 my ($ori, $mut) = split /[>\|]/, $change;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 #print "------$location----$ori-$mut-------------\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 my ($variation_number, $change_number) = split /\./, $mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my $aamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 if ($change_number and $change_number > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 my $a3 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $a3->seq($mut) if $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 $prevaaobj->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 my ($start, $sep, $end) = $location =~ /(-?\d+)(.)?\D?(-?\d+)?/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 $end = $start if not $end ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 my ($len) = $end - $start + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $len = 0, $start = $end if defined $sep and $sep eq '^';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 my $ismut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $ismut = 1 if $change =~ m/>/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 my ($region) = $aa =~ m|.+/region: (\w+)|s ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 $aamut = Bio::Variation::AAChange->new
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 ('-start' => $start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 '-end' => $end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 '-length' => $len,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 '-proof' => $proof,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 '-mut_number' => $mut_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $prevaaobj = $aamut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 my $a1 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $a1->seq($ori) if $ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 $aamut->allele_ori($a1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 my $a2 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $a2->seq($mut) if $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 $aamut->add_Allele($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 if ($ismut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 $aamut->isMutation(1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 $aamut->allele_mut($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $region && $aamut->region($region);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 $h->add_Variant($aamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 foreach my $mut ($h->each_Variant) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 if ($mut->isa('Bio::Variation::RNAChange') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 if ($mut->mut_number == $aamut->mut_number) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 $aamut->RNAChange($mut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 $mut->AAChange($aamut);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 return $h;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 =head2 write
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 Title : write
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 Usage : $stream->write(@seqDiffs)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 Function: writes the $seqDiff object into the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 Returns : 1 for success and 0 for error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 Args : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 sub write {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 my ($self,@h) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 #$columns = 75; #default for Text::Wrap
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 my %tag =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 'ID' => 'ID ',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 'Description' => 'Description ',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 'FeatureKey' => 'Feature ',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 'FeatureQual' => "Feature ",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 'FeatureWrap' => "Feature ",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 'ErrorComment' => 'Comment '
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 #'Comment' => 'Comment -!-',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 #'CommentLine' => 'Comment ',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 if( !defined $h[0] ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 $self->throw("Attempting to write with no information!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 foreach my $h (@h) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 my @entry =();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 my ($text, $tmp, $tmp2, $sep);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my ($count) = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 $text = $tag{ID};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 $text .= $h->id;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 $text .= ":(". $h->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 $text .= "+1" if $h->sysname =~ /-/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $text .= ")". $h->sysname;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 $text .= "; ". $h->trivname if $h->trivname;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 #Variants need to be ordered accoding to mutation_number attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 #put them into a hash of arrays holding the Variant objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 #This is necessary for cases like several distict mutations present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 # in the same sequence.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 my @allvariants = $h->each_Variant;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 my %variants = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 foreach my $mut ($h->each_Variant) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 push @{$variants{$mut->mut_number} }, $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 #my ($variation_number, $change_number) = split /\./, $mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 foreach my $var (sort keys %variants) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 #print $var, ": ", join (" ", @{$variants{$var}}), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 foreach my $mut (@{$variants{$var}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 # DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 if ( $mut->isa('Bio::Variation::DNAMutation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 #collect all non-reference alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $self->throw("allele_ori needs to be defined in [$mut]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 if not $mut->allele_ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 if ($mut->isMutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $sep = '>';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $sep = '|';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 my @alleles = $mut->each_Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 #push @alleles, $mut->allele_mut if $mut->allele_mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 my $count = 0; # two alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 my ($variation_number, $change_number) = split /\./, $mut->mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 if ($change_number and $change_number != $count){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 $mut->mut_number("$change_number.$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 $mut->allele_mut($allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 $tag{FeatureKey}. 'DNA'. "; ". $mut->mut_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 #label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 $text=$tag{FeatureQual}. '/label: '. $mut->label;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 #proof
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 if ($mut->proof) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $text = $tag{FeatureQual}. '/proof: '. $mut->proof;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 push (@entry, $text) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 #location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $text = $tag{FeatureQual}. '/location: ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 #$mut->id. '; '. $mut->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 if ($mut->length > 1 ) {# if ($mut->end - $mut->start ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448 my $l = $mut->start + $mut->length -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 $text .= $mut->start. '..'. $l;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 elsif ($mut->length == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 my $tmp_start = $mut->start - 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 $tmp_start-- if $tmp_start == 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 $text .= $tmp_start. '^'. $mut->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $text .= $mut->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 if ($h->alphabet && $h->alphabet eq 'dna') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 $tmp = $mut->start + $h->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 $tmp-- if $tmp <= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $mut->start < 1 && $tmp++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 #$text.= ' ('. $h->id. '::'. $tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 $tmp2 = $mut->end + $h->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 if ( $mut->length > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 $mut->end < 1 && $tmp2++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $text.= ' ('. $h->id. '::'. $tmp. "..". $tmp2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 elsif ($mut->length == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 $tmp--;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 $tmp-- if $tmp == 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 $text .= ' ('. $h->id. '::'. $tmp. '^'. $tmp2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 $text.= ' ('. $h->id. '::'. $tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $text .= ')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 #sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 $tag{FeatureQual}. '/upflank: '. $mut->upStreamSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $text = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 $text = $mut->allele_ori->seq if $mut->allele_ori->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 $text .= $sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 $text .= $mut->allele_mut->seq if $mut->allele_mut->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 wrap($tag{FeatureQual}. '/change: ', $tag{FeatureWrap},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 $text)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 $tag{FeatureQual}. '/dnflank: '. $mut->dnStreamSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 #restriction enzyme
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 if ($mut->restriction_changes ne '') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 $text = $mut->restriction_changes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 $text = wrap($tag{FeatureQual}. '/re_site: ', $tag{FeatureWrap}, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500 $text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 #region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 if ($mut->region ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $text = $tag{FeatureQual}. '/region: '. $mut->region;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 $text .= ';' if $mut->region_value or $mut->region_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 $text .= ' '. $mut->region_value if $mut->region_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 if ($mut->region_dist ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 $tmp = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 $tmp = '+' if $mut->region_dist > 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 $text .= " (". $tmp. $mut->region_dist. ')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 #CpG
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 if ($mut->CpG) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 $tag{FeatureQual}. "/CpG"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 # RNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 elsif ($mut->isa('Bio::Variation::RNAChange') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 #collect all non-reference alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 $self->throw("allele_ori needs to be defined in [$mut]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 if not $mut->allele_ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 my @alleles = $mut->each_Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 #push @alleles, $mut->allele_mut if $mut->allele_mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 if ($mut->isMutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 $sep = '>';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 $sep = '|';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 my $count = 0; # two alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 my ($variation_number, $change_number) = split /\./, $mut->mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 if ($change_number and $change_number != $count){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 $mut->mut_number("$change_number.$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 $mut->allele_mut($allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $tag{FeatureKey}. 'RNA'. "; ". $mut->mut_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 #label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 $text=$tag{FeatureQual}. '/label: '. $mut->label;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 #proof
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 if ($mut->proof) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554 $text = $tag{FeatureQual}. '/proof: '. $mut->proof;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 push (@entry, $text) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 #location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 $text = $tag{FeatureQual}. '/location: ' ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 if ($mut->length > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560 $text .= $mut->start. '..'. $mut->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 $tmp2 = $mut->end + $h->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
562 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
563 elsif ($mut->length == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
564 my $tmp_start = $mut->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
565 $tmp_start--;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
566 $tmp_start-- if $tmp_start == 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
567 $text .= $tmp_start. '^'. $mut->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
568 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
569 $text .= $mut->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
570 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
571
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
572 if ($h->alphabet && $h->alphabet eq 'rna') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
573 $tmp = $mut->start + $h->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
574 $tmp-- if $tmp <= 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
575 #$mut->start < 1 && $tmp++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
576 #$text.= ' ('. $h->id. '::'. $tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
577 $tmp2 = $mut->end + $h->offset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
578 #$mut->end < 1 && $tmp2++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
579 if ( $mut->length > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
580 $text.= ' ('. $h->id. '::'. $tmp. "..". $tmp2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
581 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
582 elsif ($mut->length == 0) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
583 $tmp--;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
584 $text .= ' ('. $h->id. '::'. $tmp. '^'. $tmp2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
585 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
586 $text.= ' ('. $h->id. '::'. $tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
587 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
588
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
589 $text .= ')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
590 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
591 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
592
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
593 #sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
594 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
595 $tag{FeatureQual}. '/upflank: '. $mut->upStreamSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
596 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
597 $text = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
598 $text = $mut->allele_ori->seq if $mut->allele_ori->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
599 $text .= $sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
600 $text .= $mut->allele_mut->seq if $mut->allele_mut->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
601 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
602 wrap($tag{FeatureQual}. '/change: ', $tag{FeatureWrap},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
603 $text)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
604 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
605 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
606 $tag{FeatureQual}. '/dnflank: '. $mut->dnStreamSeq
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
607 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
608 #restriction
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
609 if ($mut->restriction_changes ne '') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
610 $text = $mut->restriction_changes;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
611 $text = wrap($tag{FeatureQual}. '/re_site: ', $tag{FeatureWrap}, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
612 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
613 $text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
614 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
615 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
616 #coding
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
617 if ($mut->region eq 'coding') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
618 #codon table
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
619 $text = $tag{FeatureQual}. '/codon_table: ';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
620 $text .= $mut->codon_table;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
621 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
622 #codon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
623
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
624 $text = $tag{FeatureQual}. '/codon: '. $mut->codon_ori. $sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
625 if ($mut->DNAMutation->label =~ /.*point/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
626 $text .= $mut->codon_mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
627 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
628 else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
629 $text .= '-';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
630 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
631 $text .= "; ". $mut->codon_pos;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
632 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
633 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
634 #region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
635 if ($mut->region ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
636 $text = $tag{FeatureQual}. '/region: '. $mut->region;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
637 $text .= ';' if $mut->region_value or $mut->region_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
638 $text .= ' '. $mut->region_value if $mut->region_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
639 if ($mut->region_dist ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
640 $tmp = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
641 $tmp = '+' if $mut->region_dist > 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
642 $text .= " (". $tmp. $mut->region_dist. ')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
643 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
644 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
645 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
646 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
647 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
648 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
649 # AA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
650 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
651 elsif ($mut->isa('Bio::Variation::AAChange')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
652 #collect all non-reference alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
653 $self->throw("allele_ori needs to be defined in [$mut]")
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
654 if not $mut->allele_ori;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
655 if ($mut->isMutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
656 $sep = '>';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
657 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
658 $sep = '|';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
659 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
660 my @alleles = $mut->each_Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
661 #push @alleles, $mut->allele_mut if $mut->allele_mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
662 my $count = 0; # two alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
663 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
664 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
665 my ($variation_number, $change_number) = split /\./, $mut->mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
666 if ($change_number and $change_number != $count){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
667 $mut->mut_number("$change_number.$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
668 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
669 $mut->allele_mut($allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
670 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
671 $tag{FeatureKey}. 'AA'. "; ". $mut->mut_number
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
672 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
673 #label
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
674 $text=$tag{FeatureQual}. '/label: '. $mut->label;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
675 push (@entry, $text) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
676 #proof
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
677 if ($mut->proof) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
678 $text = $tag{FeatureQual}. '/proof: '. $mut->proof;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
679 push (@entry, $text) ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
680 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
681 #location
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
682 $text = $tag{FeatureQual}. '/location: '.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
683 #$mut->id. '; '. $mut->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
684 $mut->start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
685 if ($mut->length > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
686 $tmp = $mut->start + $mut->length -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
687 $text .= '..'. $tmp;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
688 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
689 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
690 #sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
691 $text = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
692 $text = $mut->allele_ori->seq if $mut->allele_ori->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
693 $text .= $sep;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
694 $text .= $mut->allele_mut->seq if $mut->allele_mut->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
695 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
696 wrap($tag{FeatureQual}. '/change: ', $tag{FeatureWrap},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
697 $text)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
698 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
699 #region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
700 if ($mut->region ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
701 $text = $tag{FeatureQual}. '/region: '. $mut->region;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
702 $text .= ';' if $mut->region_value or $mut->region_dist;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
703 $text .= ' '. $mut->region_value if $mut->region_value;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
704 if ($mut->region_dist ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
705 $tmp = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
706 $tmp = '+' if $mut->region_dist > 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
707 $text .= " (". $tmp. $mut->region_dist. ')';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
708 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
709 push (@entry, $text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
710 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
711 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
712 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
713 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
714 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
715 push (@entry,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
716 "//"
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
717 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
718 my $str = join ("\n", @entry). "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
719 $str =~ s/\t/ /g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
720 $self->_print($str);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
721 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
722 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
723 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
724
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
725 1;