annotate variant_effect_predictor/Bio/Variation/IO/xml.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: xml.pm,v 1.12.2.1 2003/03/01 17:23:43 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 # BioPerl module for Bio::Variation::IO::xml
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::xml - XML 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 XML
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 file databases.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 The XML format, although consistent, is still evolving. The current
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 DTD for it is at L<http:E<sol>E<sol>www.ebi.ac.ukE<sol>mutationsE<sol>DTDE<sol>seqDiff.dtd>.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 =head1 REQUIREMENTS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 To use this code you need the module XML::Twig which creates an
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 interface to XML::Parser to read XML and modules XML::Writer and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 IO::String to write XML out.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 Bioperl modules. Send your comments and suggestions preferably to the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 Bioperl mailing lists Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 the bugs and their resolution. Bug reports can be submitted via
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 email or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55 =head1 AUTHOR - Heikki Lehvaslaiho
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 Email: heikki@ebi.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 Address:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60 EMBL Outstation, European Bioinformatics Institute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 Wellcome Trust Genome Campus, Hinxton
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 Cambs. CB10 1SD, United Kingdom
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 package Bio::Variation::IO::xml;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 my $VERSION=1.1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 use vars qw(@ISA $seqdiff $var $prevdnaobj $prevrnaobj $prevaaobj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 use XML::Twig;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 use XML::Writer 0.4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 use IO::String;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 use Bio::Variation::IO;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 use Bio::Variation::SeqDiff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 use Bio::Variation::DNAMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 use Bio::Variation::RNAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 use Bio::Variation::AAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 use Bio::Variation::Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 # new() is inherited from Bio::Root::Object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 @ISA = qw( Bio::Variation::IO );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 # _initialize is where the heavy stuff will happen when new is called
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 my ($class,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 my $self = bless {}, $class;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 $self->_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 sub _initialize {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 my($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 return unless $self->SUPER::_initialize(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105 =head2 next
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 Title : next
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 Usage : $haplo = $stream->next()
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 Function: returns the next seqDiff in the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 Returns : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 Args : NONE
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 sub _seqDiff {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 my ($t, $term)= @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 $seqdiff->id( $term->att('id') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 $seqdiff->alphabet( $term->att('moltype') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 $seqdiff->offset( $term->att('offset') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 foreach my $child ($term->children) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 _variant($t, $child);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 sub _variant {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128 my ($t, $term)= @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 my $var;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 my $att = $term->atts();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 my ($variation_number, $change_number) = split /\./, $att->{number};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 # if more than two alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 if ($variation_number and $change_number and $change_number > 1 ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 my $a3 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 $a3->seq( $term->first_child_text('allele_mut') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137 if $term->first_child_text('allele_mut');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 if ($term->gi eq 'DNA') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $prevdnaobj->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 elsif ($term->gi eq 'RNA') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $prevrnaobj->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 } else { # AA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 $prevaaobj->add_Allele($a3);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 } else { # create new variants
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 if ($term->gi eq 'DNA') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 $var = new Bio::Variation::DNAMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 elsif ($term->gi eq 'RNA') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 $var = new Bio::Variation::RNAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 } else { # AA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 $var = new Bio::Variation::AAChange;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 # these are always present
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $var->start( $att->{start} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 $var->end( $att->{end});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 $var->length($att->{len});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $var->mut_number( $att->{number});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 $var->upStreamSeq($term->first_child_text('upFlank'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 $var->dnStreamSeq($term->first_child_text('dnFlank'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 $var->proof($term->first_child_text('proof'));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 # region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 my $region = $term->first_child('region');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 if ($region) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 $var->region($region->text);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 my $region_atts = $region->atts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 $var->region_value( $region_atts->{value} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 if $region_atts->{value};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 $var->region_dist( $region_atts->{dist} )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 if $region_atts->{dist};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 # alleles
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 my $a1 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $a1->seq($term->first_child_text('allele_ori') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 if $term->first_child_text('allele_ori');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 $var->allele_ori($a1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 my $a2 = Bio::Variation::Allele->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 $a2->seq($term->first_child_text('allele_mut') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 if $term->first_child_text('allele_mut');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 $var->isMutation(1) if $term->att('isMutation');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $var->allele_mut($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 $var->add_Allele($a2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $var->length( $term->att('length') );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 $seqdiff->add_Variant($var);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 # variant specific code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 if ($term->gi eq 'DNA') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $prevdnaobj = $var;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 elsif ($term->gi eq 'RNA') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 my $codon = $term->first_child('codon');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 if ($codon) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 my $codon_atts = $codon->atts;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $var->codon_table( $codon->att('codon_table') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 if $codon_atts->{codon_table} and $codon_atts->{codon_table} != 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $var->codon_pos( $codon->att('codon_pos') )
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 if $codon_atts->{codon_pos};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 $prevdnaobj->RNAChange($var);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 $var->DNAMutation($prevdnaobj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $prevrnaobj = $var;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $prevrnaobj->AAChange($var);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 $var->RNAChange($prevrnaobj);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 $prevaaobj = $var;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 sub next {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 my( $self ) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 local $/ = "</seqDiff>\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 return unless my $entry = $self->_readline;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 # print STDERR "|$entry|";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 return unless $entry =~ /^\W*<seqDiff/;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $seqdiff = Bio::Variation::SeqDiff->new;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 # create new parser object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 my $twig_handlers = {'seqDiff' => \&_seqDiff };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 my $t = new XML::Twig ( TwigHandlers => $twig_handlers,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 KeepEncoding => 1 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 $t->parse($entry);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 return $seqdiff;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 =head2 write
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 Title : write
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 Usage : $stream->write(@haplos)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 Function: writes the $seqDiff objects into the stream
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 Returns : 1 for success and 0 for error
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 Args : Bio::Variation::SeqDiff object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 sub write {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 my ($self,@h) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 if( ! defined $h[0] ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 $self->throw("Attempting to write with no information!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 my $str;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 my $output = IO::String->new($str);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 my $w = new XML::Writer(OUTPUT => $output, DATA_MODE => 1, DATA_INDENT => 4 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 foreach my $h (@h) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 # seqDiff
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 $h->alphabet || $self->throw("Moltype of the reference sequence is not set!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 my $hasAA = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 foreach my $mut ($h->each_Variant) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $hasAA = 1 if $mut->isa('Bio::Variation::AAChange');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 if ($hasAA) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 $w->startTag("seqDiff",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 "id" => $h->id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 "moltype" => $h->alphabet,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 "offset" => $h->offset,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 "sysname" => $h->sysname,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 "trivname" => $h->trivname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 $w->startTag("seqDiff",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 "id" => $h->id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 "moltype" => $h->alphabet,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 "offset" => $h->offset,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 "sysname" => $h->sysname
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 my @allvariants = $h->each_Variant;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 #print "allvars:", scalar @allvariants, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 my %variants = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 foreach my $mut ($h->each_Variant) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 #print STDERR $mut->mut_number, "\t", $mut, "\t",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 #$mut->proof, "\t", scalar $mut->each_Allele, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 push @{$variants{$mut->mut_number} }, $mut;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 foreach my $var (sort keys %variants) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 foreach my $mut (@{$variants{$var}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 # DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 if( $mut->isa('Bio::Variation::DNAMutation') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 $mut->isMutation(0) if not $mut->isMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 my @alleles = $mut->each_Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 my ($variation_number, $change_number) = split /\./, $mut->mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 if ($change_number and $change_number != $count){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 $mut->mut_number("$change_number.$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 $mut->allele_mut($allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 $w->startTag("DNA",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 "number" => $mut->mut_number,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 "start" => $mut->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 "end" => $mut->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 "length" => $mut->length,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 "isMutation" => $mut->isMutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 if ($mut->label) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 foreach my $label (split ', ', $mut->label) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 $w->startTag("label");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 $w->characters($label);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 if ($mut->proof) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $w->startTag("proof");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 $w->characters($mut->proof );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 if ($mut->upStreamSeq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 $w->startTag("upFlank");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 $w->characters($mut->upStreamSeq );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 #if ( $mut->isMutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 #if ($mut->allele_ori) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 $w->startTag("allele_ori");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 $w->characters($mut->allele_ori->seq) if $mut->allele_ori->seq ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 #if ($mut->allele_mut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 $w->startTag("allele_mut");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 $w->characters($mut->allele_mut->seq) if $mut->allele_mut->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 if ($mut->dnStreamSeq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 $w->startTag("dnFlank");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 $w->characters($mut->dnStreamSeq );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 if ($mut->restriction_changes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $w->startTag("restriction_changes");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 $w->characters($mut->restriction_changes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 if ($mut->region) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 if($mut->region_value and $mut->region_dist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 "value" => $mut->region_value,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 "dist" => $mut->region_dist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 elsif($mut->region_value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 "value" => $mut->region_value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359 elsif($mut->region_dist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 "dist" => $mut->region_dist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 $w->startTag("region");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 $w->characters($mut->region );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 $w->endTag; #DNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 # RNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375 elsif( $mut->isa('Bio::Variation::RNAChange') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 $mut->isMutation(0) if not $mut->isMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 my @alleles = $mut->each_Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 my ($variation_number, $change_number) = split /\./, $mut->mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382 if ($change_number and $change_number != $count){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 $mut->mut_number("$change_number.$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 $mut->allele_mut($allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386 $w->startTag("RNA",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 "number" => $mut->mut_number,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 "start" => $mut->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 "end" => $mut->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 "length" => $mut->length,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 "isMutation" => $mut->isMutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 if ($mut->label) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 foreach my $label (split ', ', $mut->label) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 $w->startTag("label");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 $w->characters($label );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 if ($mut->proof) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 $w->startTag("proof");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 $w->characters($mut->proof );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 if ($mut->upStreamSeq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407 $w->startTag("upFlank");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 $w->characters($mut->upStreamSeq );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 #if ( $mut->isMutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 if ($mut->allele_ori) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 $w->startTag("allele_ori");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 $w->characters($mut->allele_ori->seq) if $mut->allele_ori->seq ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 if ($mut->allele_mut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 $w->startTag("allele_mut");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 $w->characters($mut->allele_mut->seq) if $mut->allele_mut->seq ;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 if ($mut->dnStreamSeq) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424 $w->startTag("dnFlank");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 $w->characters($mut->dnStreamSeq );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 if ($mut->region eq 'coding') {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 if (! $mut->codon_mut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 $w->startTag("codon",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 "codon_ori" => $mut->codon_ori,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 "codon_pos" => $mut->codon_pos
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 $w->startTag("codon",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
436 "codon_ori" => $mut->codon_ori,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
437 "codon_mut" => $mut->codon_mut,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
438 "codon_pos" => $mut->codon_pos
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
439 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
440 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
441 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
442 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
443 if ($mut->codon_table != 1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
444 $w->startTag("codon_table");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
445 $w->characters($mut->codon_table);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
446 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
447 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
448
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
449 if ($mut->restriction_changes) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
450 $w->startTag("restriction_changes");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
451 $w->characters($mut->restriction_changes);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
452 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
453 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
454 if ($mut->region) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
455 if($mut->region_value and $mut->region_dist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
456 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
457 "value" => $mut->region_value,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
458 "dist" => $mut->region_dist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
459 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
460 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
461 elsif($mut->region_value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
462 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
463 "value" => $mut->region_value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
464 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
465 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
466 elsif($mut->region_dist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
467 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
468 "dist" => $mut->region_dist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
469 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
470 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
471 $w->startTag("region");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
472 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
473 $w->characters($mut->region );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
474 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
475 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
476 $w->endTag; #RNA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
477 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
478 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
479 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
480 # AA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
481 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
482 elsif( $mut->isa('Bio::Variation::AAChange') ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
483 $mut->isMutation(0) if not $mut->isMutation;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
484 my @alleles = $mut->each_Allele;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
485 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
486 foreach my $allele (@alleles) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
487 $count++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
488 my ($variation_number, $change_number) = split /\./, $mut->mut_number;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
489 if ($change_number and $change_number != $count){
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
490 $mut->mut_number("$change_number.$count");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
491 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
492 $mut->allele_mut($allele);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
493 $w->startTag("AA",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
494 "number" => $mut->mut_number,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
495 "start" => $mut->start,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
496 "end" => $mut->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
497 "length" => $mut->length,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
498 "isMutation" => $mut->isMutation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
499 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
500
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
501 if ($mut->label) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
502 foreach my $label (split ', ', $mut->label) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
503 $w->startTag("label");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
504 $w->characters($label );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
505 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
506 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
507 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
508 if ($mut->proof) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
509 $w->startTag("proof");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
510 $w->characters($mut->proof );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
511 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
512 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
513 #if ( $mut->isMutation) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
514 if ($mut->allele_ori) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
515 $w->startTag("allele_ori");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
516 $w->characters($mut->allele_ori->seq) if $mut->allele_ori->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
517 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
518 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
519 if ($mut->allele_mut) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
520 $w->startTag("allele_mut");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
521 $w->characters($mut->allele_mut->seq) if $mut->allele_mut->seq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
522 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
523 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
524 #}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
525 if ($mut->region) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
526 if($mut->region_value and $mut->region_dist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
527 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
528 "value" => $mut->region_value,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
529 "dist" => $mut->region_dist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
530 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
531 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
532 elsif($mut->region_value) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
533 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
534 "value" => $mut->region_value
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
535 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
536 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
537 elsif($mut->region_dist) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
538 $w->startTag("region",
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
539 "dist" => $mut->region_dist
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
540 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
541 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
542 $w->startTag("region");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
543 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
544 $w->characters($mut->region );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
545 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
546 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
547 $w->endTag; #AA
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
548 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
549 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
550 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
551 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
552 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
553 $w->endTag;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
554
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
555 $w->end;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
556 $self->_print($str);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
557 $output = undef;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
558 return 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
559 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
560
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
561 1;