~ubuntu-branches/ubuntu/trusty/bioperl/trusty-proposed

« back to all changes in this revision

Viewing changes to Bio/AlignIO/bl2seq.pm

  • Committer: Bazaar Package Importer
  • Author(s): Charles Plessy
  • Date: 2009-03-10 07:19:11 UTC
  • mfrom: (1.2.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20090310071911-fukqzw54pyb1f0bd
Tags: 1.6.0-2
* Removed patch system (not used):
  - removed instuctions in debian/rules;
  - removed quilt from Build-Depends in debian/control.
* Re-enabled tests:
  - uncommented test command in debian/rules;
  - uncommented previously missing build-dependencies in debian/control.
  - Re-enabled tests and uncommented build-dependencies accordingly.
* Removed libmodule-build-perl and libtest-harness-perl from
  Build-Depends-Indep (provided by perl-modules).
* Better cleaning of empty directories using find -type d -empty -delete
  instead of rmdir in debian/rules (LP: #324001).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# $Id: bl2seq.pm,v 1.23.4.3 2006/10/02 23:10:12 sendu Exp $
 
1
# $Id: bl2seq.pm 11540 2007-07-02 14:51:07Z cjfields $
2
2
#
3
3
# BioPerl module for Bio::AlignIO::bl2seq
4
4
 
109
109
 Returns : L<Bio::SimpleAlign> object
110
110
 Args    : -report_type => report type (blastn,blastx,tblastx,tblastn,blastp)
111
111
 
112
 
 
113
112
=cut
114
113
 
115
 
 
116
 
sub new {
117
 
    my ($class) = shift;
118
 
    my $self = $class->SUPER::new(@_);
119
 
    my ($rt) = $self->_rearrange([qw(REPORT_TYPE)],@_);
 
114
sub _initialize {
 
115
    my ($self, @args) = @_;
 
116
    $self->SUPER::_initialize(@args);
 
117
    my ($rt) = $self->_rearrange([qw(REPORT_TYPE)],@args);
120
118
    defined $rt && $self->report_type($rt);
121
 
    return $self;
122
119
}
123
120
 
124
121
=head2 next_aln
134
131
 
135
132
sub next_aln {
136
133
    my $self = shift;
137
 
    my $aln =  Bio::SimpleAlign->new(-source => 'bl2seq');
138
 
    $self->{'bl2seqobj'} = $self->{'bl2seqobj'} ||
139
 
        Bio::SearchIO->new(-fh => $self->_fh,
140
 
                           -format => 'blast');
141
 
    my $bl2seqobj = $self->{'bl2seqobj'};
142
 
    my $result = $self->{'_result'} || $bl2seqobj->next_result;
143
 
    $self->{'result'} = undef, return unless defined $result;
144
 
 
145
 
    my $hit = $self->{'_hit'} || $result->next_hit;
146
 
    $self->{'_hit'} = undef, return unless defined $hit;
147
 
 
148
 
    my $hsp  = $hit->next_hsp;
149
 
    return unless defined $hsp;
150
 
    return $hsp->get_aln;
151
 
 
152
 
# much easier above, eh?
153
 
#     my ($start,$end,$name,$seqname,$seq,$seqchar,$strand);
154
 
#     $seqchar = $hsp->query_string;
155
 
#     $start   = $hsp->query->start;
156
 
#     $end     = $hsp->query->end;
157
 
#      # Query name typically not present in bl2seq report
158
 
#     $seqname = $hsp->query->seq_id || 'Query-sequence';
159
 
#     $strand  = $hsp->query->strand;
160
 
 
161
 
#     #    unless ($seqchar && $start && $end  && $seqname) {return 0} ;
162
 
#     unless ($seqchar && $start && $end ) {return 0} ;
163
 
 
164
 
#     $seq = new Bio::LocatableSeq('-seq'   =>$seqchar,
165
 
#                                '-id'    =>$seqname,
166
 
#                                '-start' =>$start,
167
 
#                                '-end'   =>$end,
168
 
#                                '-strand'=>$strand,
169
 
#                                );
170
 
 
171
 
#     $aln->add_seq($seq);
172
 
 
173
 
#     $seqchar  = $hsp->hit_string;
174
 
#     $start    = $hsp->hit->start;
175
 
#     $end      = $hsp->hit->end;
176
 
#     $seqname  = $hsp->hit->seq_id;
177
 
#     $strand   = $hsp->hit->strand;
178
 
 
179
 
#     unless ($seqchar && $start && $end  && $seqname) {return 0} ;
180
 
 
181
 
#     $seq = new Bio::LocatableSeq('-seq'   =>$seqchar,
182
 
#                                '-id'    =>$seqname,
183
 
#                                '-start' =>$start,
184
 
#                                '-end'   =>$end,
185
 
#                                '-strand'=>$strand,
186
 
#                                );
187
 
#     $aln->add_seq($seq);
188
 
#     return $aln;
 
134
    unless (exists $self->{'_searchio'}) {
 
135
        $self->{'_searchio'} = Bio::SearchIO->new(-fh => $self->_fh,
 
136
                   -format => 'blast',
 
137
                   -report_type => $self->report_type);
 
138
    }
 
139
    while (1) {
 
140
        if (!exists $self->{'_result'}) {
 
141
            $self->{'_result'} = $self->{'_searchio'}->next_result;
 
142
        }
 
143
        return if !defined $self->{'_result'};
 
144
        if (!exists $self->{'_hit'}) {
 
145
            $self->{'_hit'} = $self->{'_result'}->next_hit;
 
146
        }
 
147
        # out of hits for this result?
 
148
        if (!defined $self->{'_hit'}) {
 
149
            delete $self->{'_result'};
 
150
            next;
 
151
        }
 
152
        my $hsp = $self->{'_hit'}->next_hsp;
 
153
        # out of hsps for this hit?
 
154
        if (!defined $hsp) {
 
155
            delete $self->{'_hit'};
 
156
            next;
 
157
        }
 
158
        $hsp ? return $hsp->get_aln: return;
 
159
    }
189
160
}
190
161
 
191
162