/usr/bin/MSPCollect is in repeatmasker-recon 1.08-3.
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 | #! /usr/bin/perl
if (!@ARGV) {
die "usage: MSPCollect BLAST_output_file\n";
}
open (BLST, "$ARGV[0]") || die "usage: MSPCollect BLAST_output_file\nCan not open the BLAST_output_file $ARGV[0]\n";
$score_cutoff = 0;
$iden_cutoff = 0;
$score = -1;
while (<BLST>) {
if (/^Query=\s+(\S+)/) {
$query = $1;
}
elsif (/^>(\S+)/) {
$sbjct_current = $1;
}
elsif (/^\s+Score =\s*(\S+)/) {
if (&filter) {
&report;
}
$head_q_boolean = 1;
$head_s_boolean = 1;
$sbjct = $sbjct_current;
$score_string = $1;
if ($score_string =~ /(\S+)(e|E)\+(\d+)/) {
$score = $1 * exp($3*log(10));
}
else {$score = $score_string;}
}
elsif (/^\s+Identities =\s+(\d+)\/(\d+)/) {
$iden = $1/$2*100;
}
elsif (/^Query:\s+(\d+)\s+(\S+)\s+(\d+)/) {
if ($head_q_boolean) {
$head_query = $1;
$head_q_boolean = 0;
}
$tail_query = $3;
}
elsif (/^Sbjct:\s+(\d+)\s+(\S+)\s+(\d+)/) {
if ($head_s_boolean) {
$head_sbjct = $1;
$head_s_boolean = 0;
}
$tail_sbjct = $3;
}
elsif (/^Parameters:/) {
if (&filter) {&report;}
$score = -1;
}
}
sub filter {
if ($score > 0 && $score > $score_cutoff && $iden > $iden_cutoff) {return 1;}
return 0;
}
sub report {
printf("%06d %03d %05d %05d %s %05d %05d %s \n", $score, $iden, $head_query, $tail_query, $query, $head_sbjct, $tail_sbjct, $sbjct);
}
|