annotate fastaptamer_search @ 1:ac61067a0852 draft default tip

Uploaded
author fastaptamer
date Tue, 10 Feb 2015 14:51:07 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
1 #!/usr/bin/env perl
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
2
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
3 ## Last Modified January 19th, 2015 22:54 CST
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
4
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
5 ## Citation:
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
6 ## Khalid K. Alam, Jonathan L. Chang & Donald H. Burke.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
7 ## "FASTAptamer: A Bioinformatic Toolkit for High-Throughput Sequence Analysis of
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
8 ## Combinatorial Selections." Molecular Therapy — Nucleic Acids. 2015.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
9 ## DOI: 10.1038/mtna.2015.4
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
10
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
11 ## Distributed under GNU General Public License v3
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
12
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
13 use Getopt::Long; # Core Perl module for command line arguments/options
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
14
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
15 ###############################################################################
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
16
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
17 ## Variables for command line arguments
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
18 my @inputlist; # Array of input files
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
19 my $output; # Output filename (optional)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
20 my @patternlist; # Array of pattern(s) to search for
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
21 my $highlight; # If defined, highlight matches using parens
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
22 my $help; # If defined, show help dialogue
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
23 my $quiet; # If defined, suppress report in STDOUT
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
24 my $version; # display version
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
25
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
26 ## Process command line arguments
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
27 GetOptions (
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
28 "input=s" => \@inputlist, # input file(s)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
29 "output=s" => \$output, # output file (optional)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
30 "pattern=s" => \@patternlist, # pattern(s) to search for
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
31 "highlight" => \$highlight, # highlight matched portion with parens
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
32 "quiet" => \$quiet, # suppressing summary report
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
33 "version" => \$version, # display version
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
34 "help" => \$help); # displaying help information
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
35
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
36 if(defined $help) { ## Prints help screen if -help is invoked
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
37 print <<"HELP";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
38
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
39 --------------------------------------------------------------------------------
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
40 FASTAptamer-Search
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
41 --------------------------------------------------------------------------------
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
42
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
43 Usage: fastaptamer_search [-i INFILE] [-o OUTFILE] [-p PATTERN]
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
44
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
45 [-help] = Help screen.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
46 [-i FILENAME] = Input file; can be used multiple times. REQUIRED.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
47 [-p PATTERN] = Sequence pattern to search for; can be used multiple
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
48 times. REQUIRED.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
49 [-o FILENAME] = Output file for search results. If none given, output
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
50 goes to STDOUT.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
51 [-highlight] = Highlight matched portion of sequence in parentheses.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
52 [-q] = Suppress summary report.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
53 [-v] = Display version.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
54
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
55 FASTAptamer-Search allows users to search for specific patterns within one or m-
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
56 ore sequence files.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
57
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
58 To search through more than one input file, simply use the [-i] flag multiple t-
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
59 imes. All input files must use FASTA format.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
60
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
61 Similarly, to search for multiple patterns simultaneously, use the [-p] flag as
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
62 many times as needed. When searching for multiple patterns, note that partial m-
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
63 atches are not returned. For example, entering the following command:
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
64
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
65 fastaptamer_search -i FILE1 -i FILE2 -p ATTGCC -p TGGCAT
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
66
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
67 would search FILE1 and FILE2 for sequences containing both ATTGCC and TGGCAT.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
68
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
69 Patterns and input sequence data are case insensitive and T/U are interchangeab-
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
70 le. In addition to single bases, patterns can include any of the degenerate base
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
71 symbols from IUPAC nucleic acid notation:
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
72
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
73 A/T/G/C/U single bases
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
74
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
75 R puRines (A/G)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
76 Y pYrimidines (C/T)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
77 W Weak (A/T)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
78 S Strong (G/C)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
79 M aMino (A/C)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
80 K Keto (G/T)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
81
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
82 B not A
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
83 D not C
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
84 H not G
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
85 V not T
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
86
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
87 N aNy base (not a gap)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
88
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
89 For greater visibility, pattern matches can be highlighted by parentheses in the
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
90 output by calling the [-highlight] flag.
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
91
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
92 A summary report is generated after each file's search results and after search
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
93 completion. To suppress these reports, enable quiet mode using the [-quiet] flag
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
94
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
95 HELP
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
96 exit;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
97
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
98 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
99
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
100 if (defined $version){ ## Print version screen if -v is true
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
101 print <<"VERSION";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
102
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
103 FASTAptamer v1.0.2
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
104
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
105 VERSION
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
106 exit;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
107 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
108
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
109 ########################################################################################
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
110
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
111 unless(@inputlist) { die "\nCould not open input file or no input file was specified.\nSee help documentation [-h], README, or User's Guide for program usage.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
112
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
113 unless(@patternlist) {die "\nNo search pattern was specified.\nSee help documentation [-h], README, or User's Guide for program usage.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
114
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
115 my $start_time = time; ## Start timer
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
116
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
117 my $inputcount = scalar(@inputlist);
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
118 my $patterncount = scalar(@patternlist);
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
119
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
120 ## Convert user-entered patterns into regexes
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
121 my @superarray; ## Array of 2-element arrays via references: ([pattern, regex], [...], etc.)
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
122 my $regex;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
123 foreach my $pattern (@patternlist) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
124 $regex = $pattern;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
125 $regex =~ s{[TU]}{\[TU\]}gi; ## Make T and U interchangeable
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
126 $regex =~ s{W}{\[ATU\]}gi; ## W = ATU Regex modifiers after s{}{}:
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
127 $regex =~ s{S}{\[CG\]}gi; ## S = CG g tells the script to find ALL matches rather than stop after the first
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
128 $regex =~ s{M}{\[AC\]}gi; ## M = AC i makes searching case insensitive
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
129 $regex =~ s{K}{\[GTU\]}gi; ## K = GTU
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
130 $regex =~ s{R}{\[AG\]}gi; ## R = AG
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
131 $regex =~ s{Y}{\[CTU\]}gi; ## Y = CTU
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
132 $regex =~ s{B}{\[CGTU\]}gi; ## B = CGTU
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
133 $regex =~ s{D}{\[AGTU\]}gi; ## D = AGTU
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
134 $regex =~ s{H}{\[ACTU\]}gi; ## H = ACTU
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
135 $regex =~ s{V}{\[ACG\]}gi; ## V = ACG
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
136 $regex =~ s{N}{\[ACGTU\]}gi; ## N = ACGTU
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
137 ## Put the pattern and regex into an array and push the whole thing onto @superarray
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
138 push(@superarray, [$pattern, $regex]); ## Push $subarray onto the end of @superarray
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
139 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
140
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
141 my $fh_out;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
142 if(defined $output) { open($fh_out, '>', $output) or die "\nCould not open output file or no output file was specified.\nSee help documentation [-help], README, or User's Guide for program usage.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
143
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
144 my $input;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
145 my $current_input = 0;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
146 my $subarray;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
147 my ($line1, $line2);
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
148 my $match_hits = 0;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
149 my $match_line = '';
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
150 my $match_portion = '';
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
151 my $filehits = 0;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
152 my $totalhits = 0;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
153
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
154 ## Loop logic: read one input file at a time and search all patterns through each line
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
155
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
156 ## FASTA input
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
157
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
158 foreach $input (@inputlist) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
159 $current_input++;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
160 if(defined $output) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
161 print $fh_out "\n\n--------------------------------------------------------------------------------\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
162 print $fh_out "SEARCH RESULTS FOR INPUT FILE $current_input: $input\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
163 print $fh_out "--------------------------------------------------------------------------------\n\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
164 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
165 else {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
166 print "\n\n--------------------------------------------------------------------------------\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
167 print "SEARCH RESULTS FOR INPUT FILE $current_input: $input\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
168 print "--------------------------------------------------------------------------------\n\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
169 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
170 open(my $fh_in, '<', $input) or die "Could not open input file $input";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
171
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
172 while($line1 = <$fh_in>) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
173 $line2 = <$fh_in>;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
174 my $not_first_regex = 0;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
175 my $hit_confirmed = 0;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
176 foreach $subarray (@superarray) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
177 $regex = $subarray->[1]; ## Get the regex from subarray
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
178 ## $1
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
179 if($line2 =~ m{($regex)}gi) { ## Search for all matches, case insensitive
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
180 $match_portion = $1; ## Portion of sequence that matched was captured in magic variable $1
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
181 if($not_first_regex == 0) { ($match_line = $line2) =~ s{$match_portion}{\($match_portion\)}g; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
182 else { $match_line =~ s{$match_portion}{\($match_portion\)}g; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
183 $not_first_regex = 1;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
184 $hit_confirmed++;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
185 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
186 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
187 if(defined $output and $hit_confirmed == $patterncount) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
188 $filehits++; ## Increment FILE-SPECIFIC hit counter
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
189 $totalhits++; ## Increment OVERALL hit counter
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
190 if (defined $highlight) { print $fh_out "$line1$match_line"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
191 else { print $fh_out "$line1$line2"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
192 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
193 elsif(not defined $output and $hit_confirmed == $patterncount) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
194 $filehits++; ## Increment FILE-SPECIFIC hit counter
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
195 $totalhits++; ## Increment OVERALL hit counter
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
196 if (defined $highlight) { print "$line1$match_line"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
197 else { print "$line1$line2"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
198 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
199 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
200
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
201 if(defined $output and not defined $quiet) { ## Print file-specific stats, unless quiet mode
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
202 if ($filehits > 1) { print $fh_out "\nMatched $filehits sequences in file $input.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
203 elsif ($filehits == 1) { print $fh_out "\nMatched 1 sequence in file $input.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
204 elsif ($filehits == 0) { print $fh_out "\nDid not match any sequences in file $input.\n" }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
205 $filehits = 0; ## Reset file-specific hit counter after stats are printed
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
206 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
207 elsif(not defined $output and not defined $quiet) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
208 if ($filehits > 1) { print "\nMatched $filehits sequences in file $input.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
209 elsif ($filehits == 1) { print "\nMatched 1 sequence in file $input.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
210 elsif ($filehits == 0) { print "\nDid not match any sequences in file $input.\n" }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
211 $filehits = 0; ## Reset file-specific hit counter after stats are printed
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
212 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
213 }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
214
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
215
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
216 ## Print a summary after script completion, unless quiet mode
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
217 unless(defined $quiet) {
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
218 my $duration = time - $start_time;
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
219
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
220 print "\n--------------------------------------------------------------------------------\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
221 print " SEARCH RESULT SUMMARY\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
222 print "--------------------------------------------------------------------------------\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
223
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
224 if($patterncount > 1) { print "Searched for $patterncount patterns:\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
225 elsif($patterncount == 1) { print "Searched for 1 pattern:\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
226 foreach $subarray (@superarray) { print "$subarray->[0]\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
227
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
228 print "\nacross the following $inputcount input files:\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
229 print join("\n", @inputlist);
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
230
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
231 if($totalhits > 1) { print "\n$totalhits sequences were matched.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
232 elsif($totalhits == 1) { print "\n1 sequence was matched.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
233 elsif($totalhits == 0) { print "\nDid not find any matches.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
234
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
235 if($duration == 1) { print "\nYour search took 1 second.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
236 else { print "\nYour search took $duration seconds.\n"; }
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
237
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
238 print "--------------------------------------------------------------------------------\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
239 print "--------------------------------------------------------------------------------\n";
ac61067a0852 Uploaded
fastaptamer
parents:
diff changeset
240 }