annotate variant_effect_predictor/Bio/Tools/Sim4/Results.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
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
2 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
3 # BioPerl module for Bio::Tools::Sim4::Results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
4 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
5 # Cared for by Ewan Birney <birney@sanger.ac.uk>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
6 # and Hilmar Lapp <hlapp@gmx.net>
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
7 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
8 # Copyright Ewan Birney and Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
9 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
10 # You may distribute this module under the same terms as perl itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
11
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
12 # POD documentation - main docs before the code
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
13
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
14 =head1 NAME
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
15
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
16 Bio::Tools::Sim4::Results - Results of one Sim4 run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
17
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
18 =head1 SYNOPSIS
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
19
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
20 # to preset the order of EST and genomic file as given on the sim4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
21 # command line:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
22 my $sim4 = Bio::Tools::Sim4::Results->new(-file => 'result.sim4',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
23 -estfirst => 1);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
24 # to let the order be determined automatically (by length comparison):
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
25 $sim4 = Bio::Tools::Sim4::Results->new( -file => 'sim4.results' );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
26 # filehandle:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
27 $sim4 = Bio::Tools::Sim4::Results->new( -fh => \*INPUT );
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
28
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
29 # parse the results
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
30 while(my $exonset = $sim4->next_exonset()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
31 # $exonset is-a Bio::SeqFeature::Generic with Bio::Tools::Sim4::Exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
32 # as sub features
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
33 print "Delimited on sequence ", $exonset->seq_id(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
34 "from ", $exonset->start(), " to ", $exonset->end(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
35 foreach my $exon ( $exonset->sub_SeqFeature() ) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
36 # $exon is-a Bio::SeqFeature::FeaturePair
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
37 print "Exon from ", $exon->start, " to ", $exon->end,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
38 " on strand ", $exon->strand(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
39 # you can get out what it matched using the est_hit attribute
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
40 my $homol = $exon->est_hit();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
41 print "Matched to sequence ", $homol->seq_id,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
42 " at ", $homol->start," to ", $homol->end, "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
43 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
44 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
45
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
46 # essential if you gave a filename at initialization (otherwise the file
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
47 # stays open)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
48 $sim4->close();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
49
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
50 =head1 DESCRIPTION
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
51
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
52 The sim4 module provides a parser and results object for sim4 output. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
53 sim4 results are specialised types of SeqFeatures, meaning you can add them
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
54 to AnnSeq objects fine, and manipulate them in the "normal" seqfeature manner.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
55
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
56 The sim4 Exon objects are Bio::SeqFeature::FeaturePair inherited objects. The
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
57 $esthit = $exon-E<gt>est_hit() is the alignment as a feature on the matching
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
58 object (normally, an EST), in which the start/end points are where the hit
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
59 lies.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
60
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
61 To make this module work sensibly you need to run
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
62
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
63 sim4 genomic.fasta est.database.fasta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
64 or
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
65 sim4 est.fasta genomic.database.fasta
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
66
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
67 To get the sequence identifiers recorded for the first sequence, too, use
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
68 A=4 as output option for sim4.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
69
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
70 One fiddle here is that there are only two real possibilities to the matching
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
71 criteria: either one sequence needs reversing or not. Because of this, it
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
72 is impossible to tell whether the match is in the forward or reverse strand
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
73 of the genomic DNA. We solve this here by assuming that the genomic DNA is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
74 always forward. As a consequence, the strand attribute of the matching EST is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
75 unknown, and the strand attribute of the genomic DNA (i.e., the Exon object)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
76 will reflect the direction of the hit.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
77
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
78 See the documentation of parse_next_alignment() for abilities of the parser
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
79 to deal with the different output format options of sim4.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
80
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
81 =head1 FEEDBACK
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
82
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
83 =head2 Mailing Lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
84
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
85 User feedback is an integral part of the evolution of this and other
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
86 Bioperl modules. Send your comments and suggestions preferably to one
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
87 of the Bioperl mailing lists. Your participation is much appreciated.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
88
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
89 bioperl-l@bioperl.org - General discussion
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
90 http://bio.perl.org/MailList.html - About the mailing lists
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
91
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
92 =head2 Reporting Bugs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
93
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
94 Report bugs to the Bioperl bug tracking system to help us keep track
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
95 the bugs and their resolution. Bug reports can be submitted via email
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
96 or the web:
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
97
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
98 bioperl-bugs@bio.perl.org
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
99 http://bugzilla.bioperl.org/
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
100
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
101 =head1 AUTHOR - Ewan Birney, Hilmar Lapp
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
102
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
103 Email birney@sanger.ac.uk
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
104 hlapp@gmx.net (or hilmar.lapp@pharma.novartis.com)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
105
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
106 Describe contact details here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
107
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
108 =head1 APPENDIX
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
109
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
110 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
111
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
112 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
113
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
114
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
115 # Let the code begin...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
116
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
117
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
118 package Bio::Tools::Sim4::Results;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
119 use vars qw(@ISA);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
120 use strict;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
121
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
122 # Object preamble - inherits from Bio::Root::Object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
123
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
124 use File::Basename;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
125 use Bio::Root::Root;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
126 use Bio::Tools::AnalysisResult;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
127 use Bio::Tools::Sim4::Exon;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
128
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
129 @ISA = qw(Bio::Tools::AnalysisResult);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
130
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
131
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
132 sub _initialize_state {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
133 my($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
134
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
135 # call the inherited method first
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
136 my $make = $self->SUPER::_initialize_state(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
137
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
138 my ($est_is_first) = $self->_rearrange([qw(ESTFIRST)], @args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
139
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
140 delete($self->{'_est_is_first'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
141 $self->{'_est_is_first'} = $est_is_first if(defined($est_is_first));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
142 $self->analysis_method("Sim4");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
143 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
144
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
145 =head2 analysis_method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
146
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
147 Usage : $sim4->analysis_method();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
148 Purpose : Inherited method. Overridden to ensure that the name matches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
149 /sim4/i.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
150 Returns : String
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
151 Argument : n/a
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
152
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
153 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
154
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
155 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
156 sub analysis_method {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
157 #-------------
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
158 my ($self, $method) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
159 if($method && ($method !~ /sim4/i)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
160 $self->throw("method $method not supported in " . ref($self));
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
161 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
162 return $self->SUPER::analysis_method($method);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
163 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
164
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
165 =head2 parse_next_alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
166
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
167 Title : parse_next_alignment
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
168 Usage : @exons = $sim4_result->parse_next_alignment;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
169 foreach $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
170 # do something
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
171 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
172 Function: Parses the next alignment of the Sim4 result file and returns the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
173 found exons as an array of Bio::Tools::Sim4::Exon objects. Call
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
174 this method repeatedly until an empty array is returned to get the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
175 results for all alignments.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
176
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
177 The $exon->seq_id() attribute will be set to the identifier of the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
178 respective sequence for both sequences if A=4 was used in the sim4
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
179 run, and otherwise for the second sequence only. If the output does
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
180 not contain the identifier, the filename stripped of path and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
181 extension is used instead. In addition, the full filename
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
182 will be recorded for both features ($exon inherits off
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
183 Bio::SeqFeature::SimilarityPair) as tag 'filename'. The length
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
184 is accessible via the seqlength() attribute of $exon->query() and
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
185 $exon->est_hit().
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
186
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
187 Note that this method is capable of dealing with outputs generated
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
188 with format 0,1,3, and 4 (via the A=n option to sim4). It
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
189 automatically determines which of the two sequences has been
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
190 reversed, and adjusts the coordinates for that sequence. It will
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
191 also detect whether the EST sequence(s) were given as first or as
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
192 second file to sim4, unless this has been specified at creation
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
193 time of the object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
194
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
195 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
196 Returns : An array of Bio::Tools::Sim4::Exon objects
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
197 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
198
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
199
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
200 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
201
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
202 sub parse_next_alignment {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
203 my ($self) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
204 my @exons = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
205 my %seq1props = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
206 my %seq2props = ();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
207 # we refer to the properties of each seq by reference
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
208 my ($estseq, $genomseq, $to_reverse);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
209 my $started = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
210 my $hit_direction = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
211 my $output_fmt = 3; # same as 0 and 1 (we cannot deal with A=2 produced
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
212 # output yet)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
213
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
214 while(defined($_ = $self->_readline())) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
215 #chomp();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
216
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
217 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
218 # bascially, each sim4 'hit' starts with seq1...
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
219 #
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
220 /^seq1/ && do {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
221 if($started) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
222 $self->_pushback($_);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
223 last;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
224 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
225 $started = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
226
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
227 # filename and length of seq 1
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
228 /^seq1\s+=\s+(\S+)\,\s+(\d+)/ ||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
229 $self->throw("Sim4 parsing error on seq1 [$_] line. Sorry!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
230 $seq1props{'filename'} = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
231 $seq1props{'length'} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
232 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
233 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
234 /^seq2/ && do {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
235 # the second hit has also the database name in the >name syntax
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
236 # (in brackets).
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
237 /^seq2\s+=\s+(\S+)\s+\(>?(\S+)\s*\)\,\s+(\d+)/||
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
238 $self->throw("Sim4 parsing error on seq2 [$_] line. Sorry!");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
239 $seq2props{'filename'} = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
240 $seq2props{'seqname'} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
241 $seq2props{'length'} = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
242 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
243 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
244 if(/^>(\S+)\s*(.*)$/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
245 # output option was A=4, which not only gives the complete
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
246 # description lines, but also causes the longer sequence to be
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
247 # reversed if the second file contained one (genomic) sequence
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
248 $seq1props{'seqname'} = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
249 $seq1props{'description'} = $2 if $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
250 $output_fmt = 4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
251 # we handle seq1 and seq2 both here
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
252 if(defined($_ = $self->_readline()) && (/^>(\S+)\s*(.*)$/)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
253 $seq2props{'seqname'} = $1; # redundant, since already set above
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
254 $seq2props{'description'} = $2 if $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
255 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
256 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
257 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
258 /^\(complement\)/ && do {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
259 $hit_direction = -1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
260 next;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
261 };
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
262 # this matches
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
263 # start-end (start-end) pctid%
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
264 if(/(\d+)-(\d+)\s+\((\d+)-(\d+)\)\s+(\d+)%/) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
265 $seq1props{'start'} = $1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
266 $seq1props{'end'} = $2;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
267 $seq2props{'start'} = $3;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
268 $seq2props{'end'} = $4;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
269 my $pctid = $5;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
270
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
271 if(! defined($estseq)) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
272 # for the first time here: need to set the references referring
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
273 # to seq1 and seq2
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
274 if(! exists($self->{'_est_is_first'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
275 # detect which one is the EST by looking at the lengths,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
276 # and assume that this holds throughout the entire result
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
277 # file (i.e., when this method is called for the next
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
278 # alignment, this will not be checked again)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
279 if($seq1props{'length'} > $seq2props{'length'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
280 $self->{'_est_is_first'} = 0;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
281 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
282 $self->{'_est_is_first'} = 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
283 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
284 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
285 if($self->{'_est_is_first'}) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
286 $estseq = \%seq1props;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
287 $genomseq = \%seq2props;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
288 # if the EST is given first, A=4 selects the genomic
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
289 # seq for being reversed (reversing the EST is default)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
290 $to_reverse = ($output_fmt == 4) ? $genomseq : $estseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
291 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
292 $estseq = \%seq2props;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
293 $genomseq = \%seq1props;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
294 # if the EST is the second, A=4 does not change the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
295 # seq being reversed (always the EST is reversed)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
296 $to_reverse = $estseq;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
297 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
298 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
299 if($hit_direction == -1) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
300 # we have to reverse the coordinates of one of both seqs
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
301 my $tmp = $to_reverse->{'start'};
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
302 $to_reverse->{'start'} =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
303 $to_reverse->{'length'} - $to_reverse->{'end'} + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
304 $to_reverse->{'end'} = $to_reverse->{'length'} - $tmp + 1;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
305 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
306 # create and initialize the exon object
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
307 my $exon = Bio::Tools::Sim4::Exon->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
308 '-start' => $genomseq->{'start'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
309 '-end' => $genomseq->{'end'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
310 '-strand' => $hit_direction);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
311 if(exists($genomseq->{'seqname'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
312 $exon->seq_id($genomseq->{'seqname'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
313 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
314 # take filename stripped of path as fall back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
315 my ($basename) = &File::Basename::fileparse($genomseq->{'filename'}, '\..*');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
316 $exon->seq_id($basename);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
317 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
318 $exon->feature1()->add_tag_value('filename',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
319 $genomseq->{'filename'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
320 # feature1 is supposed to be initialized to a Similarity object,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
321 # but we provide a safety net
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
322 if($exon->feature1()->can('seqlength')) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
323 $exon->feature1()->seqlength($genomseq->{'length'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
324 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
325 $exon->feature1()->add_tag_value('SeqLength',
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
326 $genomseq->{'length'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
327 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
328 # create and initialize the feature wrapping the 'hit' (the EST)
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
329 my $fea2 = Bio::SeqFeature::Similarity->new(
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
330 '-start' => $estseq->{'start'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
331 '-end' => $estseq->{'end'},
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
332 '-strand' => 0,
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
333 '-primary' => "aligning_EST");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
334 if(exists($estseq->{'seqname'})) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
335 $fea2->seq_id($estseq->{'seqname'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
336 } else {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
337 # take filename stripped of path as fall back
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
338 my ($basename) =
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
339 &File::Basename::fileparse($estseq->{'filename'}, '\..*');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
340 $fea2->seq_id($basename);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
341 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
342 $fea2->add_tag_value('filename', $estseq->{'filename'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
343 $fea2->seqlength($estseq->{'length'});
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
344 # store
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
345 $exon->est_hit($fea2);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
346 # general properties
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
347 $exon->source_tag($self->analysis_method());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
348 $exon->percentage_id($pctid);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
349 $exon->score($exon->percentage_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
350 # push onto array
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
351 push(@exons, $exon);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
352 next; # back to while loop
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
353 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
354 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
355 return @exons;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
356 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
357
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
358 =head2 next_exonset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
359
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
360 Title : next_exonset
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
361 Usage : $exonset = $sim4_result->parse_next_exonset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
362 print "Exons start at ", $exonset->start(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
363 "and end at ", $exonset->end(), "\n";
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
364 foreach $exon ($exonset->sub_SeqFeature()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
365 # do something
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
366 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
367 Function: Parses the next alignment of the Sim4 result file and returns the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
368 set of exons as a container of features. The container is itself
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
369 a Bio::SeqFeature::Generic object, with the Bio::Tools::Sim4::Exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
370 objects as sub features. Start, end, and strand of the container
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
371 will represent the total region covered by the exons of this set.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
372
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
373 See the documentation of parse_next_alignment() for further
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
374 reference about parsing and how the information is stored.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
375
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
376 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
377 Returns : An Bio::SeqFeature::Generic object holding Bio::Tools::Sim4::Exon
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
378 objects as sub features.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
379 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
380
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
381 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
382
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
383 sub next_exonset {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
384 my $self = shift;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
385 my $exonset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
386
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
387 # get the next array of exons
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
388 my @exons = $self->parse_next_alignment();
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
389 return if($#exons < 0);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
390 # create the container of exons as a feature object itself, with the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
391 # data of the first exon for initialization
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
392 $exonset = Bio::SeqFeature::Generic->new('-start' => $exons[0]->start(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
393 '-end' => $exons[0]->end(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
394 '-strand' => $exons[0]->strand(),
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
395 '-primary' => "ExonSet");
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
396 $exonset->source_tag($exons[0]->source_tag());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
397 $exonset->seq_id($exons[0]->seq_id());
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
398 # now add all exons as sub features, with enabling EXPANsion of the region
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
399 # covered in total
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
400 foreach my $exon (@exons) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
401 $exonset->add_sub_SeqFeature($exon, 'EXPAND');
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
402 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
403 return $exonset;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
404 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
405
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
406 =head2 next_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
407
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
408 Title : next_feature
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
409 Usage : while($exonset = $sim4->next_feature()) {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
410 # do something
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
411 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
412 Function: Does the same as L<next_exonset()>. See there for documentation of
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
413 the functionality. Call this method repeatedly until FALSE is
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
414 returned.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
415
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
416 The returned object is actually a SeqFeatureI implementing object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
417 This method is required for classes implementing the
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
418 SeqAnalysisParserI interface, and is merely an alias for
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
419 next_exonset() at present.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
420
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
421 Example :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
422 Returns : A Bio::SeqFeature::Generic object.
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
423 Args :
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
424
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
425 =cut
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
426
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
427 sub next_feature {
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
428 my ($self,@args) = @_;
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
429 # even though next_exonset doesn't expect any args (and this method
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
430 # does neither), we pass on args in order to be prepared if this changes
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
431 # ever
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
432 return $self->next_exonset(@args);
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
433 }
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
434
1f6dce3d34e0 Uploaded
mahtabm
parents:
diff changeset
435 1;