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

Annotation of /FigKernelScripts/make_timestamps.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : overbeek 1.1 use FIG;
2 :     my $fig = new FIG;
3 :    
4 :     $usage = "usage: make_timestamps SubsystemAssignments SubsystemConnections";
5 :    
6 :     (
7 :     ($assignF = shift @ARGV) && open(ASSIGN,">$assignF") &&
8 :     ($connF = shift @ARGV) && open(CONN,">$connF")
9 :     )
10 :     || die $usage;
11 :    
12 :     foreach $sub (grep { $fig->usable_subsystem($_) } $fig ->all_subsystems)
13 :     {
14 :     undef %pegH;
15 :     my $genomes = $fig->subsystem_genomes($sub);
16 :     foreach $role ($fig->subsystem_to_roles($sub))
17 :     {
18 :     foreach $genome (map { $_->[0] } @$genomes)
19 :     {
20 :     foreach $peg ($fig->pegs_in_subsystem_cell($sub,$genome,$role))
21 :     {
22 :     $pegH{$peg} = 1;
23 :     $curr_func = $fig->function_of($peg);
24 :     @annotations = $fig->feature_annotations($peg,"raw");
25 :     for ($i=$#annotations; ($i >= 0) && ($annotations[$i]->[3] !~ /^Set /); $i--) {}
26 :     if (($i >= 0) && ($annotations[$i]->[3] =~ /^Set master function to\n(\S.*\S)/s))
27 :     {
28 :     $ann_func = $1;
29 : overbeek 1.4 if (($curr_func eq $ann_func) && ($annotations[$i]->[2] !~ /auto|assign|repair|last|saved|cleanup/i))
30 : overbeek 1.1 {
31 : overbeek 1.3 $annotations[$i]->[2] =~ s/^master://;
32 : overbeek 1.1 print ASSIGN join("\t",$annotations[$i]->[0],$annotations[$i]->[1],$annotations[$i]->[2],"assigned",$ann_func),"\n";
33 :     }
34 :     }
35 :     }
36 :     }
37 :     }
38 :     &process_ss($fig,$sub,\%pegH);
39 :     }
40 :    
41 :    
42 :     sub process_ss {
43 :     my($fig,$sub,$pegH) = @_;
44 :    
45 :     opendir(BACKUP,"$FIG_Config::data/Subsystems/$sub/Backup")
46 :     || return ();
47 :    
48 :     my $curator = $fig->subsystem_curator($sub);
49 : overbeek 1.3 $curator =~ s/^master://;
50 : overbeek 1.1
51 :     my @spreadsheets = sort { $b <=> $a }
52 :     map { $_ =~ /^spreadsheet.(\d+)/; $1 }
53 :     grep { $_ =~ /^spreadsheet/ }
54 :     readdir(BACKUP);
55 :     closedir(BACKUP);
56 :    
57 :     my $ts_last = time;
58 :     foreach my $ts (@spreadsheets)
59 :     {
60 :     my $hash = {};
61 :     my $file = "$FIG_Config::data/Subsystems/$sub/Backup/spreadsheet.$ts";
62 :     if (open(SS,"<$file"))
63 :     {
64 :     $/ = "//\n";
65 :     $_ = <SS>;
66 :     $_ = <SS>;
67 :     if (defined($_ = <SS>))
68 :     {
69 :     chomp;
70 :     @lines = split(/\n/,$_);
71 :     foreach $_ (@lines)
72 :     {
73 :     if ($_ =~ /^(\S+)\t\S+\t(.*)/)
74 :     {
75 :     my $genome = $1;
76 :     my @cells = split(/\t/,$2);
77 :     foreach my $cell (@cells)
78 :     {
79 :     foreach my $pegN (split(/,/,$cell))
80 :     {
81 :     my $peg = "fig|$genome.peg.$pegN";
82 :     if ($pegH->{$peg})
83 :     {
84 :     $hash->{$peg} = 1;
85 :     }
86 :     }
87 :     }
88 :     }
89 :     }
90 : overbeek 1.2 }
91 : overbeek 1.1
92 : overbeek 1.2 foreach $peg_in (keys(%$pegH))
93 :     {
94 :     if (! $hash->{$peg_in})
95 : overbeek 1.1 {
96 : overbeek 1.2 print CONN join("\t",($peg_in,$ts_last,$curator,"connected",$sub)),"\n";
97 :     delete($pegH->{$peg_in});
98 : overbeek 1.1 }
99 :     }
100 :     close(SS);
101 :     }
102 :     $ts_last = $ts;
103 :     }
104 :    
105 :     foreach $peg_in (keys(%$pegH))
106 :     {
107 : overbeek 1.4 print CONN join("\t",($peg_in,$ts_last,$curator,"connected",$sub)),"\n";
108 : overbeek 1.1 }
109 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3