annotate variant_effect_predictor/Bio/SeqIO/game/featureHandler.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: featureHandler.pm,v 1.9 2002/06/04 02:54:48 jason Exp $
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::SeqIO::game::featureHandler
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Brad Marshall <bradmars@yahoo.com>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 # Copyright Brad Marshall
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 # _history
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11 # June 25, 2000 written by Brad Marshall
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17 Bio::SeqIO::game::featureHandler - GAME helper via PerlSAX helper.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 GAME helper for parsing new Feature objects from GAME XML. Do not use directly.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 User feedback is an integral part of the evolution of this and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28 other Bioperl modules. Send your comments and suggestions preferably
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 to one of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 bioperl-l@bioperl.org - Bioperl list
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 bioxml-dev@bioxml.org - Technical discussion - Moderate volume
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 bioxml-announce@bioxml.org - General Announcements - Pretty dead
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 http://www.bioxml.org/MailingLists/ - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 =head1 AUTHOR - Brad Marshall
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 Email: bradmars@yahoo.com
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 The rest of the documentation details each of the object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # This template file is in the Public Domain.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 # You may do anything you want with this file.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51 package Bio::SeqIO::game::featureHandler;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 use Bio::SeqFeature::Generic;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 use XML::Handler::Subs;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 use vars qw{ $AUTOLOAD @ISA };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 @ISA = qw(XML::Handler::Subs);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 sub new {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62 my ($caller,$seq,$length,$type) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 my $class = ref($caller) || $caller;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 my $self = bless ({
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 seq => $seq,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66 type => $type,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 length => $length,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 string => '',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69 feat => {},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 feats => [],
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 comp_id => 1,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 }, $class);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 return $self;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 =head2 start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 Title : start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 Usage : $obj->start_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80 Function: PerlSAX method called when a new document is initialized
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 Returns : nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82 Args : document name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 # Basic PerlSAX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 sub start_document {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88 my ($self, $document) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 $self->{'Names'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91 $self->{'Nodes'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 $self->{'feats'} = [];
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 =head2 end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 Title : end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 Usage : $obj->end_document
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100 Function: PerlSAX method called when a document is finished for cleaning up
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 Returns : list of features seen
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102 Args : document name
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 sub end_document {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107 my ($self, $document) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109 delete $self->{'Names'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 return $self->{'feats'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113 =head2 start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 Title : start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116 Usage : $obj->start_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117 Function: PerlSAX method called when a new element is reached
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 Returns : nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 Args : element object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123 sub start_element {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 my ($self, $element) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 push @{$self->{'Names'}}, $element->{'Name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 $self->{'string'} = '';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 if ($self->in_element('bx-feature:seq_relationship')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130 if (defined $element->{'Attributes'}->{'bx-feature:seq'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131 defined $self->{'seq'} &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 $element->{'Attributes'}->{'bx-feature:seq'} eq $self->{'seq'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 $self->{'in_current_seq'} = 'true';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 if ($self->in_element('bx-computation:computation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139 $self->{'feat'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 if (defined $element->{'Attributes'}->{'bx-computation:id'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $self->{'feat'}->{'computation_id'} = $element->{'Attributes'}->{'bx-computation:id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 $self->{'feat'}->{'computation_id'} = $self->{'comp_id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144 $self->{'comp_id'}++;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 if ($self->in_element('bx-feature:feature')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 if (defined $element->{'Attributes'}->{'bx-feature:id'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 $self->{'feat'}->{'id'} = $element->{'Attributes'}->{'bx-feature:id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154 if ($self->in_element('bx-annotation:annotation')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 $self->{'feat'} = {};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 $self->{'feat'}->{'annotation_id'} = $element->{'Attributes'}->{'bx-annotation:id'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 $self->{'feat'}->{'annotation_name'} = $element->{'Attributes'}->{'bx-annotation:name'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 return 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 =head2 end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 Title : end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166 Usage : $obj->end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Function: PerlSAX method called when an element is finished
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Returns : nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 Args : element object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 sub end_element {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 my ($self, $element) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176 if ($self->in_element('bx-computation:program')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 $self->{'string'} =~ s/^\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 $self->{'string'} =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 $self->{'string'} =~ s/\n//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 $self->{'feat'}->{'source_tag'} = $self->{'string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 if ($self->in_element('bx-annotation:author')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 $self->{'string'} =~ s/^\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $self->{'string'} =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186 $self->{'string'} =~ s/\n//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 $self->{'feat'}->{'source_tag'} = "Annotated by $self->{'string'}.";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 if ($self->in_element('bx-feature:type')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 $self->{'string'} =~ s/^\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 $self->{'string'} =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 $self->{'string'} =~ s/\n//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194 $self->{'feat'}->{'primary_tag'} = $self->{'string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 if ($self->in_element('bx-feature:start')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198 $self->{'string'} =~ s/^\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199 $self->{'string'} =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 $self->{'string'} =~ s/\n//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201 $self->{'feat'}->{'start'} = $self->{'string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 if ($self->in_element('bx-feature:end')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 $self->{'string'} =~ s/^\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 $self->{'string'} =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 $self->{'string'} =~ s/\n//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 $self->{'feat'}->{'end'} = $self->{'string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 if ($self->in_element('bx-computation:score')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 $self->{'string'} =~ s/^\s+//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213 $self->{'string'} =~ s/\s+$//;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 $self->{'string'} =~ s/\n//g;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 $self->{'feat'}->{'score'} = $self->{'string'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 if ($self->in_element('bx-feature:seq_relationship')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 if ($self->{'feat'}->{'start'} > $self->{'feat'}->{'end'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 my $new_start = $self->{'feat'}->{'end'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->{'feat'}->{'end'} = $self->{'feat'}->{'start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 $self->{'feat'}->{'start'} = $new_start;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 $self->{'feat'}->{'strand'} = -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226 $self->{'feat'}->{'strand'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 my $new_feat = new Bio::SeqFeature::Generic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 (
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 -start => $self->{'feat'}->{'start'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 -end => $self->{'feat'}->{'end'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 -strand => $self->{'feat'}->{'strand'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 -source => $self->{'feat'}->{'source_tag'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 -primary => $self->{'feat'}->{'primary_tag'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 -score => $self->{'feat'}->{'score'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 if (defined $self->{'feat'}->{'computation_id'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $new_feat->add_tag_value('computation_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 $self->{'feat'}->{'computation_id'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 } elsif (defined $self->{'feat'}->{'annotation_id'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 $new_feat->add_tag_value('annotation_id',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 $self->{'feat'}->{'annotation_id'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 if (defined $self->{'feat'}->{'id'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 $new_feat->add_tag_value('id', $self->{'feat'}->{'id'} );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 push @{$self->{'feats'}}, $new_feat;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 $self->{'feat'} = {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 seqid => $self->{'feat'}->{'curr_seqid'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 primary_tag => $self->{'feat'}->{'primary_tag'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 source_tag => $self->{'feat'}->{'source_tag'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 computation_id => $self->{'feat'}->{'computation_id'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 annotation_id => $self->{'feat'}->{'annotation_id'}
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 pop @{$self->{'Names'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 pop @{$self->{'Nodes'}};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 =head2 characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 Title : characters
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 Usage : $obj->end_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 Function: PerlSAX method called when text between XML tags is reached
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270 Returns : nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 Args : text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 sub characters {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 my ($self, $text) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 $self->{'string'} .= $text->{'Data'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 =head2 in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 Title : in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 Usage : $obj->in_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 Function: PerlSAX method called to test if state is in a specific element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 Args : name of element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 sub in_element {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 my ($self, $name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 return (defined $self->{'Names'}[-1] &&
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 $self->{'Names'}[-1] eq $name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 =head2 within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 Title : within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 Usage : $obj->within_element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 Function: PerlSAX method called to list depth within specific element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 Returns : boolean
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 Args : name of element
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 sub within_element {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 my ($self, $name) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 my $count = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 foreach my $el_name (@{$self->{'Names'}}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $count ++ if ($el_name eq $name);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 return $count;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 =head2 AUTOLOAD
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 Title : AUTOLOAD
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 Usage : do not use directly
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 Function: autoload handling of missing DESTROY method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 Returns : nothing
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 Args : text
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 # Others
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 sub AUTOLOAD {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 my $method = $AUTOLOAD;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 $method =~ s/.*:://;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 return if $method eq 'DESTROY';
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 print "UNRECOGNIZED $method\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 __END__