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

Annotation of /FigKernelScripts/track_figfams.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : overbeek 1.1
2 :     my $usage = "usage: track_figfams OldFamilies NewFamilies > RenamedNewFamilies";
3 :    
4 :     (
5 :     ($oldF = shift @ARGV) &&
6 :     ($newF = shift @ARGV)
7 :     )
8 :     || die $usage;
9 :    
10 :    
11 :     open(OLD,"<$oldF") || die "could not open $oldF";
12 :     while (defined($_ = <OLD>))
13 :     {
14 :     if ($_ =~ /^(\S+)\t(\S+)/)
15 :     {
16 :     $in{$2} = $1;
17 :     $count{$1}++;
18 :     if ((! $max_sofar) || ($max_sofar lt $1)) { $max_sofar = $1 }
19 :     }
20 :     }
21 :     close(OLD);
22 :    
23 :     open(NEW,"<$newF") || die "could not open $newF";
24 :     $entry = <NEW>;
25 :     while ($entry && ($entry =~ /^(\S+)/))
26 :     {
27 :     $curr = $1;
28 :     @set = ();
29 :     while ($entry && ($entry =~ /^(\S+)\t(\S+)(\t(\S.*\S))?/) && ($1 eq $curr))
30 :     {
31 :     push(@set,[$1,$2,$4 ? $4 : ""]);
32 :     $entry = <NEW>;
33 :     }
34 :    
35 :     undef %oldH;
36 :     foreach $x (@set)
37 :     {
38 :     ($fam,$peg,$func) = @$x;
39 :     if ($old = $in{$peg})
40 :     {
41 :     $oldH{$old}++;
42 :     }
43 :     }
44 :    
45 :     @old_sets = sort { $b <=> $a } keys(%oldH);
46 :     $best_old = $old_sets[0];
47 :     $matched_old = $oldH{$best_old};
48 :     if (($matched_old > (0.5 * @set)) &&
49 :     ($matched_old > (0.5 * $count{$best_old})))
50 :     {
51 :     $new_name = $best_old;
52 :     }
53 :     else
54 :     {
55 :     $max_sofar++;
56 :     $new_name = $max_sofar;
57 :     }
58 :    
59 :     foreach $x (@set)
60 :     {
61 :     ($fam,$peg,$func) = @$x;
62 :     print join("\t",($new_name,$peg,$func)),"\n";
63 :     }
64 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3