[Bio] / FigKernelScripts / condense_blast.pl Repository:
ViewVC logotype

Annotation of /FigKernelScripts/condense_blast.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : efrank 1.1 # -*- perl -*-
2 : olson 1.2 #
3 :     # Copyright (c) 2003-2006 University of Chicago and Fellowship
4 :     # for Interpretations of Genomes. All Rights Reserved.
5 :     #
6 :     # This file is part of the SEED Toolkit.
7 :     #
8 :     # The SEED Toolkit is free software. You can redistribute
9 :     # it and/or modify it under the terms of the SEED Toolkit
10 :     # Public License.
11 :     #
12 :     # You should have received a copy of the SEED Toolkit Public License
13 :     # along with this program; if not write to the University of Chicago
14 :     # at info@ci.uchicago.edu or the Fellowship for Interpretation of
15 :     # Genomes at veronika@thefig.info or download a copy from
16 :     # http://www.theseed.org/LICENSE.TXT.
17 :     #
18 :    
19 : efrank 1.1
20 :     # usage: condense_blast [MaxE] < blast.output
21 :    
22 :     $| = 1;
23 :    
24 :     ($maxE = shift @ARGV) || ($maxE = 1.0e-5);
25 :    
26 :     defined($hdr = <STDIN>) || die "empty input file";
27 :     $line = $hdr;
28 :     while (defined($line))
29 :     {
30 :     @lines = ();
31 :     while (defined($line = <STDIN>) && ($line ne $hdr))
32 :     {
33 :     push(@lines,$line);
34 :     $saved_line = $line;
35 :     }
36 :     &process(\@lines);
37 :     }
38 :     if ($saved_line !~ /bits\)\n/s) { exit(1); }
39 :    
40 :     sub process {
41 :     my($lines) = @_;
42 :     my($query,$qlen,$id,$len,$expect,$iden,$qs,$ss,$qe,$se);
43 :    
44 :     while (defined($_ = shift @$lines) && ($_ !~ /^Query=\s*/)) {}
45 :    
46 :     if ($_ && ($_ =~ /^Query\=\s*(\S+)/))
47 :     {
48 :     $query = $1;
49 :     while (defined($_ = shift @$lines) && ($_ !~ /^\s+\(([,0-9]+)\s+letters/)) {}
50 :     ($_ && ($_ =~ /^\s+\(([,0-9]+)\s+letters/)) || die "could not get query length";
51 :     $qlen = $1;
52 :     $qlen =~ s/,//g;
53 :     }
54 :     else
55 :     {
56 :     return;
57 :     }
58 :    
59 :     while (defined($_ = shift @$lines) && ($_ !~ /^\>/)) {}
60 :     while ($_ && ($_ =~ /^\>(\S+)/))
61 :     {
62 :     $id = $1;
63 :     while ((@$lines > 0) && defined($_ = shift @$lines) &&
64 :     ($_ !~ /^\s+Length\s*\=\s*[1-9]/)) {} # flush title continuations
65 :     if ((@$lines > 0) && defined($_) && ($_ =~ /^\s+Length\s*\=\s*([,0-9]+)/))
66 :     {
67 :     $len = $1;
68 :     $len =~ s/,//g;
69 :     while ((@$lines > 0) && defined($_ = shift @$lines) && (($_ !~ /^\>/) && ($_ !~ /^\s*Score /))) {}
70 :    
71 :     while (defined($_) && ($_ =~ /^\s*Score .*Expect[^=]*=\s*([0-9\.e+-]+)/))
72 :     {
73 :     $expect = $1;
74 :     if ($expect =~ /^e/) { $expect = "1.0" . $expect; }
75 :    
76 :     $_ = shift @$lines;
77 :     if ($_ =~ /^\s*Identities\s*=\s*\d+\/\d+\s*\((\d+)\%/)
78 :     {
79 :     $iden = $1;
80 :     }
81 :     else
82 :     {
83 :     $iden = -1;
84 :     }
85 :    
86 :     $qs = -1; $ss = -1;
87 :     while (defined($_ = shift @$lines) && ($_ !~ /^\>/) && ($_ !~ /^Query/) && ($_ !~ /^\s*Score /)) {}
88 :     while (defined($_) && ($_ =~ /^Query:\s*([0-9]+) .* ([0-9]+)$/))
89 :     {
90 :     if ($qs == -1) { $qs = $1; }
91 :     $qe = $2;
92 :     ($_ = shift @$lines);
93 :     ($_ = shift @$lines);
94 :     if ($_ =~ /^Sbjct:\s*([0-9]+) .* ([0-9]+)$/)
95 :     {
96 :     if ($ss == -1) { $ss = $1; }
97 :     $se = $2;
98 :     }
99 :     while (defined($_ = shift @$lines) && ($_ !~ /^\>/) && ($_ !~ /^Query/) &&
100 :     ($_ !~ /^\s*Score /)) {}
101 :     }
102 :     if (($expect <= $maxE) && (($query ne $id) || ($qs != $ss)))
103 :     {
104 :     print "$query,$qlen,$id,$len,$iden,$expect,$qs,$qe,$ss,$se\n";
105 :     }
106 :     }
107 :     }
108 :     }
109 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3