This file is indexed.

/usr/bin/bp_hmmer_to_table is in bioperl 1.7.1-2.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/perl 
use strict;
use warnings;

=head1 NAME 

bp_hmmer_to_table  - turn HMMER output into tabular format

=head1 SYNOPSIS

 bp_hmmer_to_table [-e evaluefilter] [-b bitscorefilter] [--header] [-o outfile] inputfile1 inputfile2 ... 

=head1 DESCRIPTION

Command line options:
  -e/--evalue   evalue    -- filter by evalue
  -b/--bitscore bitscore  -- filter by bitscore
  --header                -- boolean flag to print column header 
  -o/--out                -- optional outputfile to write data, 
                             otherwise will write to STDOUT
  -h/--help               -- show this documentation

Not technically a SearchIO script as this doesn't use any Bioperl
components but is a useful and fast.  The output is tabular output.

  query sequence/domain (these are flip-flopped for hmmsearch / hmmpfam)  
  query start
  query end
  domain/sequence name or PFAM accession 
  hit start
  hit end
  score
  e-value
  domain/sequence name (these are flip-flopped for hmmsearch / hmmpfam)  

=head1 AUTHOR - Jason Stajich

Jason Stajich jason_at_bioperl-dot-org

=cut

use Getopt::Long;

my ($evalue,$bitscore,$header,$outfile);
GetOptions(
	   'b|bitscore|bits:f'   => \$bitscore,
	   'e|evalue:f'          => \$evalue,
	   'header'              => \$header,
	   'o|out|outfile:s'     => \$outfile,
	   'h|help'              => sub { exec('perldoc',$0); exit; }
	   );

my $outfh;
if( $outfile ) { 
    open $outfh, '>', $outfile or die "Could not write file '$outfile': $!\n";
} else { 
    $outfh = \*STDOUT; 
}

my @fields = qw(QNAME QSTART QEND HACCESSION HSTART HEND SCORE EVALUE HNAME);
if( $header ) {
    print $outfh join("\t", @fields), "\n";
}
my %dat;
while(<>) {
    if( s/^Query(\s+(sequence|HMM))?:\s+// ) {	
	s/\s+$//;
	$dat{'Query'} = $_;
    } elsif( /^Parsed for domains:/ ) {
	my $ready = 0;
	while(<>) {
	    if(/^Model|Sequence\s+Domain/ ) { $ready = 1; }
	    elsif( $ready && /^\-\-/) { $ready = 2; }
	    elsif( /^Alignments of/ ) { undef %dat; last; }
	    elsif( $ready == 2 ) {
		if( my ($n,$domainnum,$domainct, @vals) = 
		    (m!^(\S+)\s+      # domain name
		     (\d+)\/(\d+)\s+  # num/num (ie 1 of 2) 
		     (\d+)\s+(\d+).+? # sequence start and end
		     (\d+)\s+(\d+)\s+ # hmm start and end
		     \S+\s+           # []
		     (\S+)\s+         # score
		     (\S+)            # evalue
		     \s*$!ox)  ) {
		    next if( defined $bitscore && $vals[4] < $bitscore );
		    next if (defined $evalue && $vals[5] > $evalue);
		    print $outfh join("\t",
				      $dat{'Query'},
				      $vals[0], $vals[1],
				      $n,
				      $vals[2],$vals[3],
				      $vals[4],$vals[5],
				      $n),"\n";
		}
	    }
	}
    }
}