-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathblast_parser.pl
More file actions
executable file
·117 lines (94 loc) · 3.73 KB
/
blast_parser.pl
File metadata and controls
executable file
·117 lines (94 loc) · 3.73 KB
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/usr/bin/perl -w
# Author: Abdullah Kahraman
# Date: 01.01.2000
###############################################################################
###############################################################################
### bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla ###
###############################################################################
###############################################################################
use strict;
use warnings;
use Getopt::Long;
use List::Util qw[min max sum];
my (
# variable for parameters which are read in from commandline
$help,
$minIdent,
$maxEvalue,
);
##############################################################################
### read all needed parameters from commandline ##############################
&GetOptions(
"help!" => \$help, # print this help
"minIdent=s" => \$minIdent, # only print out hits with sequence identity above this threshold
"maxEvalue=s" => \$maxEvalue, # only print out hits with E-values below this threshold
) or die "\nTry \"$0 -h\" for a complete list of options\n\n";
##############################################################################
# help
if ($help) {printHelp(); exit}
##############################################################################
### SETTINGS #################################################################
##############################################################################
##############################################################################
### SUBROUTINES ##############################################################
##############################################################################
###############################################################################
sub printHelp {
###############################################################################
# prints a help about the using and parameters of this scripts
# (execute if user types commandline parameter -h)
# param: no paramaters
# return: no return value
my (
$usage,
$sourceCode,
@rows,
$row,
$option,
$scriptInfo,
$example,
);
$usage = "$0\n";
print "\nUsage: " . $usage . "\n";
print "Valid options are:\n\n";
open(MYSELF, "$0") or
die "Cannot read source code file $0: $!\n";
$sourceCode .= join "", <MYSELF>;
close MYSELF;
$sourceCode =~ s/^.+?\&GetOptions\(\n//s;
$sourceCode =~ s/\n\).+$//s;
@rows = split /\n/, $sourceCode;
foreach $row (@rows){
$option = $row;
$option =~ s/\s+\"//g;
$option =~ s/\"\s.+\#/\t\#/g;
$option =~ s/=./\t<value> [required]/;
$option =~ s/:./\t<value> [optional]/;
$option =~ s/!/\t<non value> [optional]/;
$row =~ s/^.*//;
print "\t";
printf("%-1s%-30s%-30s\n", "-",$option,$row);
} # end of foreach $row (@rows)
print "\n";
print "Options may be abreviated, e.g. -h for --help\n\n";
$example = "$0";
}
##############################################################################
### END OF SUBROUTINES########################################################
##############################################################################
############
### MAIN ###
############
if(!defined $minIdent) {
print STDERR "\n\tPlease provide a minimum identity value threshold. Try $0 -help to get more information\n\n";
exit;
}
if(!defined $maxEvalue) {
print STDERR "\n\tPlease provide a maximum E-value threshold. Try $0 -help to get more information\n\n";
exit;
}
while(my $l = <>) {
chomp($l);
my ($query, $hit, $ident, $alignLength, $mismatch, $gapopen, $queryStart, $queryEnd, $hitStart, $hitEnd, $eValue, $bitScore) = split(/\t/, $l);
print "$l\n" if($ident > $minIdent and $eValue < $maxEvalue);
}