BioPerl
view release on metacpan or search on metacpan
Bio/Search/Hit/PsiBlastHit.pm view on Meta::CPAN
sub seq_inds {
#-------------
my ($self, $seqType, $class, $collapse) = @_;
$seqType ||= 'query';
$class ||= 'identical';
$collapse ||= 0;
$seqType = 'sbjct' if $seqType eq 'hit';
my (@inds, $hsp);
foreach $hsp ($self->hsps) {
# This will merge data for all HSPs together.
push @inds, $hsp->seq_inds($seqType, $class);
}
# Need to remove duplicates and sort the merged positions.
if(@inds) {
my %tmp = map { $_, 1 } @inds;
@inds = sort {$a <=> $b} keys %tmp;
}
$collapse ? &Bio::Search::BlastUtils::collapse_nums(@inds) : @inds;
}
=head2 iteration
Usage : $sbjct->iteration( );
Purpose : Gets the iteration number in which the Hit was found.
Example : $iteration_num = $sbjct->iteration();
Returns : Integer greater than or equal to 1
Non-PSI-BLAST reports will report iteration as 1, but this number
is only meaningful for PSI-BLAST reports.
Argument : none
Throws : none
See Also : L<found_again()|found_again>
=cut
#----------------
sub iteration { shift->{'_iteration'} }
#----------------
=head2 found_again
Usage : $sbjct->found_again;
Purpose : Gets a boolean indicator whether or not the hit has
been found in a previous iteration.
This is only applicable to PSI-BLAST reports.
This method indicates if the hit was reported in the
"Sequences used in model and found again" section of the
PSI-BLAST report or if it was reported in the
"Sequences not found previously or not previously below threshold"
section of the PSI-BLAST report. Only for hits in iteration > 1.
Example : if( $sbjct->found_again()) { ... };
Returns : Boolean (1 or 0) for PSI-BLAST report iterations greater than 1.
Returns undef for PSI-BLAST report iteration 1 and non PSI_BLAST
reports.
Argument : none
Throws : none
See Also : L<found_again()|found_again>
=cut
#----------------
sub found_again { shift->{'_found_again'} }
#----------------
=head2 strand
Usage : $sbjct->strand( [seq_type] );
Purpose : Gets the strand(s) for the query, sbjct, or both sequences
: in the best HSP of the PsiBlastHit object after HSP tiling.
: Only valid for BLASTN, TBLASTX, BLASTX-query, TBLASTN-hit.
Example : $qstrand = $sbjct->strand('query');
: $sstrand = $sbjct->strand('hit');
: ($qstrand, $sstrand) = $sbjct->strand();
Returns : scalar context: integer '1', '-1', or '0'
: array context without args: list of two strings (queryStrand, sbjctStrand)
: Array context can be "induced" by providing an argument of 'list' or 'array'.
Argument : In scalar context: seq_type = 'query' or 'hit' or 'sbjct' (default = 'query')
('sbjct' is synonymous with 'hit')
Throws : n/a
Comments : This method requires that all HSPs be tiled. If they have not
: already been tiled, they will be tiled first automatically..
: If you don't want the tiled data, iterate through each HSP
: calling strand() on each (use hsps() to get all HSPs).
:
: Formerly (prior to 10/21/02), this method would return the
: string "-1/1" for hits with HSPs on both strands.
: However, now that strand and frame is properly being accounted
: for during HSP tiling, it makes more sense for strand()
: to return the strand data for the best HSP after tiling.
:
: If you really want to know about hits on opposite strands,
: you should be iterating through the HSPs using methods on the
: HSP objects.
:
: A possible use case where knowing whether a hit has HSPs
: on both strands would be when filtering via SearchIO for hits with
: this property. However, in this case it would be better to have a
: dedicated method such as $hit->hsps_on_both_strands(). Similarly
: for frame. This could be provided if there is interest.
See Also : L<Bio::Search::HSP::BlastHSP::strand>()
=cut
#----------'
sub strand {
#----------
my ($self, $seqType) = @_;
Bio::Search::BlastUtils::tile_hsps($self) if not $self->{'_tile_hsps'};
( run in 0.962 second using v1.01-cache-2.11-cpan-96521ef73a4 )