2 # BioPerl module for Bio::Tools::Genomewise
4 # Copyright Jason Stajich <jason-at-bioperl.org>
6 # You may distribute this module under the same terms as perl itself
8 # POD documentation - main docs before the code
12 Bio::Tools::Genomewise - Results of one Genomewise run
16 use Bio::Tools::Genomewise;
17 my $gw = Bio::Tools::Genomewise(-file=>"genomewise.out");
19 while (my $gene = $gw->next_prediction){
20 my @transcripts = $gene->transcripts;
21 foreach my $t(@transcripts){
22 my @exons = $t->exons;
23 foreach my $e(@exons){
24 print $e->start." ".$e->end."\n";
31 This is the parser for the output of Genewise. It takes either a file
32 handle or a file name and returns a
33 Bio::SeqFeature::Gene::GeneStructure object. You will need to specify
34 the proper target sequence id on the object with the
35 $feature-E<gt>seq_id($seqid).
41 User feedback is an integral part of the evolution of this and other
42 Bioperl modules. Send your comments and suggestions preferably to one
43 of the Bioperl mailing lists. Your participation is much appreciated.
45 bioperl-l@bioperl.org - General discussion
46 http://bioperl.org/wiki/Mailing_lists - About the mailing lists
50 Please direct usage questions or support issues to the mailing list:
52 I<bioperl-l@bioperl.org>
54 rather than to the module maintainer directly. Many experienced and
55 reponsive experts will be able look at the problem and quickly
56 address it. Please include a thorough description of the problem
57 with code and data examples if at all possible.
61 Report bugs to the Bioperl bug tracking system to help us keep track
62 the bugs and their resolution. Bug reports can be submitted via the
65 https://github.com/bioperl/bioperl-live/issues
67 =head1 AUTHOR - Fugu Team, Jason Stajich
69 Email: fugui-at-worf.fugu-sg.org
70 jason-at-bioperl-dot-org
74 The rest of the documentation details each of the object methods. Internal methods are usually preceded with a _
79 # Let the code begin...
82 package Bio
::Tools
::Genomewise
;
87 use Bio::Tools::AnalysisResult;
88 use Bio::SeqFeature::Generic;
89 use Bio::SeqFeature::Gene::Exon;
90 use Bio::SeqFeature::FeaturePair;
91 use Bio::SeqFeature::Gene::Transcript;
92 use Bio::SeqFeature::Gene::GeneStructure;
94 use base qw(Bio::Tools::Genewise);
96 $Srctag = 'genomewise';
101 Usage : $obj->new(-file=>"genewise.out");
102 $obj->new(-fh=>\*GW);
103 Function: Constructor for genomewise wrapper. Takes either a file or filehandle
105 Returns : L<Bio::Tools::Genomewise>
110 my($class,@args) = @_;
111 my $self = $class->SUPER::new
(@args);
118 Usage : $obj->_get_strand
119 Function: takes start and end values, swap them if start>end and returns end
121 Returns :$start,$end,$strand
129 Function: get/set for score info
131 Returns : a score value
138 Usage : $obj->_prot_id
139 Function: get/set for protein id
141 Returns :a protein id
148 Usage : $obj->_target_id
149 Function: get/set for genomic sequence id
156 =head2 next_prediction
158 Title : next_prediction
159 Usage : while($gene = $genewise->next_prediction()) {
162 Function: Returns the gene structure prediction of the Genomewise result
163 file. Call this method repeatedly until FALSE is returned.
166 Returns : a Bio::SeqFeature::Gene::GeneStructure object
172 sub next_prediction
{
176 while ($_ = $self->_readline) {
180 if( /^Gene\s+\d+\s*$/ ) {
181 $genes = Bio
::SeqFeature
::Gene
::GeneStructure
->new
183 -seq_id
=> $self->_target_id, # if this had been specified
185 $_ = $self->_readline;
188 unless ( /^Gene\s+(\d+)\s+(\d+)\s*$/ ) {
189 $self->warn("Unparseable genomewise output");
192 my $transcript = Bio
::SeqFeature
::Gene
::Transcript
->new
194 -seq_id
=> $self->_target_id, # if this had been specified
199 while( $_ = $self->_readline ) {
202 unless( m/^\s+Exon\s+(\d+)\s+(\d+)\s+phase\s+(\d+)/ ){
203 $self->_pushback($_);
206 my ($e_start,$e_end,$phase,$e_strand) = ($1,$2,$3);
208 ($e_start,$e_end,$e_strand) = $self->_get_strand($e_start,
210 $transcript->strand($e_strand) unless $transcript->strand != 0;
212 my $exon = Bio
::SeqFeature
::Gene
::Exon
->new
213 (-seq_id
=>$self->_target_id,
219 $exon->add_tag_value("Exon",$nbr++);
220 $exon->add_tag_value('phase',$phase);
221 $transcript->add_exon($exon);
223 $genes->add_transcript($transcript);
224 last; # only process a single gene at a time