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

Annotation of /FigKernelScripts/form_clusters.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : overbeek 1.1 #
2 :     # form_clusters Genome < scores > clusters
3 :     #
4 :    
5 :     my $usage = "usage: form_clusters Genome < connections > clusters";
6 :     my $genome;
7 :     (
8 :     ($genome = shift @ARGV)
9 :     )
10 :     || die $usage;
11 :    
12 :     use FIG;
13 :    
14 :     use strict;
15 :    
16 :     my %connected;
17 :    
18 :     while (defined($_ = <STDIN>))
19 :     {
20 :     chop;
21 : parrello 1.2 my($peg1,$peg2) = split(/:/,$_);
22 : overbeek 1.1 my $genome1 = &FIG::genome_of($peg1);
23 :     if ($genome1 eq $genome)
24 :     {
25 :     $connected{$peg1}->{$peg2} = 1;
26 :     $connected{$peg2}->{$peg1} = 1;
27 :     }
28 :     }
29 :    
30 :     my %seen;
31 :     my @pegs = sort { keys(%{$connected{$b}}) <=> keys(%{$connected{$a}}) } keys(%connected);
32 :     while (my $peg = shift @pegs)
33 :     {
34 :     if (! $seen{$peg})
35 :     {
36 :     $seen{$peg} = 1;
37 :     my @to = keys(%{$connected{$peg}});
38 :     if (@to == 1)
39 :     {
40 :     print "$peg\t$to[0]\n";
41 :     $seen{$to[0]} = 1;
42 :     }
43 :     else
44 :     {
45 :     my @core = ($peg);
46 :     my %in_ring = map { $_ => 1 } @to;
47 :     my $extend = 1;
48 :     while ($extend)
49 :     {
50 :     $extend = 0;
51 :     my @ring = keys(%in_ring);
52 :     my @new_in_core;
53 :     foreach my $peg1 (@ring)
54 :     {
55 :     my @hits = grep { $in_ring{$_} } keys(%{$connected{$peg1}});
56 :     if (@hits > 0)
57 :     {
58 :     push(@new_in_core,$peg1);
59 :     }
60 :     }
61 :     if (@new_in_core > 0)
62 :     {
63 :     $extend = 1;
64 :     foreach $_ (@new_in_core)
65 :     {
66 :     delete $in_ring{$_};
67 :     }
68 :     push(@core,@new_in_core);
69 :     }
70 :     }
71 :     foreach $_ (@core) { $seen{$_} = 1 }
72 :     print join("\t",(join(",",sort @core),join(",",sort keys(%in_ring)))),"\n";
73 :     }
74 :     }
75 :     }
76 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3