109
109
Returns : L<Bio::SimpleAlign> object
110
110
Args : -report_type => report type (blastn,blastx,tblastx,tblastn,blastp)
118
my $self = $class->SUPER::new(@_);
119
my ($rt) = $self->_rearrange([qw(REPORT_TYPE)],@_);
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);
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,
141
my $bl2seqobj = $self->{'bl2seqobj'};
142
my $result = $self->{'_result'} || $bl2seqobj->next_result;
143
$self->{'result'} = undef, return unless defined $result;
145
my $hit = $self->{'_hit'} || $result->next_hit;
146
$self->{'_hit'} = undef, return unless defined $hit;
148
my $hsp = $hit->next_hsp;
149
return unless defined $hsp;
150
return $hsp->get_aln;
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;
161
# # unless ($seqchar && $start && $end && $seqname) {return 0} ;
162
# unless ($seqchar && $start && $end ) {return 0} ;
164
# $seq = new Bio::LocatableSeq('-seq' =>$seqchar,
168
# '-strand'=>$strand,
171
# $aln->add_seq($seq);
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;
179
# unless ($seqchar && $start && $end && $seqname) {return 0} ;
181
# $seq = new Bio::LocatableSeq('-seq' =>$seqchar,
185
# '-strand'=>$strand,
187
# $aln->add_seq($seq);
134
unless (exists $self->{'_searchio'}) {
135
$self->{'_searchio'} = Bio::SearchIO->new(-fh => $self->_fh,
137
-report_type => $self->report_type);
140
if (!exists $self->{'_result'}) {
141
$self->{'_result'} = $self->{'_searchio'}->next_result;
143
return if !defined $self->{'_result'};
144
if (!exists $self->{'_hit'}) {
145
$self->{'_hit'} = $self->{'_result'}->next_hit;
147
# out of hits for this result?
148
if (!defined $self->{'_hit'}) {
149
delete $self->{'_result'};
152
my $hsp = $self->{'_hit'}->next_hsp;
153
# out of hsps for this hit?
155
delete $self->{'_hit'};
158
$hsp ? return $hsp->get_aln: return;