Bio-SearchIO-hmmer
view release on metacpan or search on metacpan
lib/Bio/SearchIO/hmmer3.pm view on Meta::CPAN
}
}
# Domain annotation for each sequence table data,
# for hmmscan, hmmsearch & nhmmer
elsif ( $buffer =~ /Domain( and alignment)? annotation for each/
or $buffer =~ /Annotation for each hit\s+\(and alignments\)/
) {
@hsp_list = (); # Here for multi-query reports
my $name;
my $annot_counter = 0;
while ( defined( $buffer = $self->_readline ) ) {
if ( $buffer =~ /\[No targets detected/
|| $buffer =~ /Internal pipeline statistics/ )
{
$self->_pushback($buffer);
last;
}
if ( $buffer =~ m/^\>\>\s(\S*)\s+(.*)/ ) {
$name = $1;
my $desc = $2;
$annot_counter++;
$domaincounter{"$name.$annot_counter"} = 0;
# The Hit Description from the Scores table can be truncated if
# its too long, so use the '>>' line description when its longer
if (length $hit_list[
$hitinfo{"$name.$annot_counter"}
]
[1] < length $desc
) {
$hit_list[ $hitinfo{"$name.$annot_counter"} ][1] = $desc;
}
while ( defined( $buffer = $self->_readline ) ) {
if ( $buffer =~ m/Internal pipeline statistics/
|| $buffer =~ m/Alignments for each domain/
|| $buffer =~ m/^\s+Alignment:/
|| $buffer =~ m/^\>\>/ )
{
$self->_pushback($buffer);
last;
lib/Bio/SearchIO/hmmer3.pm view on Meta::CPAN
.*$|ox
)
) {
# Values assigned when IF succeeded
}
else {
print STDERR "Missed this line: $buffer\n";
next;
}
my $info = $hit_list[ $hitinfo{"$name.$annot_counter"} ];
if ( !defined $info ) {
$self->warn(
"Incomplete information: can't find HSP $name in list of hits\n"
);
next;
}
$domaincounter{"$name.$annot_counter"}++;
my $hsp_key
= $name . "_" . $domaincounter{"$name.$annot_counter"};
# Keep it simple for now. let's customize later
@vals = (
$hmm_start, $hmm_stop,
$seq_start, $seq_stop,
$score, $ceval,
$hitlength, '',
'', '',
'', ''
);
push @hsp_list, [ $name, @vals ];
$hspinfo{"$hsp_key.$annot_counter"} = $#hsp_list;
}
}
}
elsif ( $buffer =~ /Alignment(?:s for each domain)?:/ ) {
#line counter
my $count = 0;
# There's an optional block, so we sometimes need to
# count to 3, and sometimes to 4.
my $max_count = 3;
lib/Bio/SearchIO/hmmer3.pm view on Meta::CPAN
$align_length = 0;
next;
}
if ( $buffer =~ /\s\s\=\=\sdomain\s(\d+)\s+/
or $buffer =~ /\s\sscore:\s\S+\s+/
) {
my $domainnum = $1 || 1;
$count = 0;
my $key = $name . "_" . $domainnum;
$hsp = $hsp_list[ $hspinfo{"$key.$annot_counter"} ];
$csline = $$hsp[-5];
$hline = $$hsp[-4];
$midline = $$hsp[-3];
$qline = $$hsp[-2];
$pline = $$hsp[-1];
$lastdomain = $name;
}
# Consensus Structure or Reference track, some reports
# don't have it. Since it appears on top of the alignment,
# the reset of $align_length to 0 between alignment blocks
( run in 0.212 second using v1.01-cache-2.11-cpan-0a987023a57 )