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

Annotation of /FigKernelScripts/update_hope_info.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : dejongh 1.2 # script to copy updated hope_supersets.txt and/or hope files for Subsystems
2 :     # re-run Scenarios for 'All' and for specified genomes
3 : dejongh 1.4 # The copy_dir should contain hope_supersets.txt and a subdirectory named Subsystems,
4 :     # which should contain a subdirectory for each Subsystem containing the hope files
5 :     # (hope_reactions, hope_kegg_info, other supporting files)
6 : dejongh 1.2
7 : dejongh 1.1 use strict;
8 :     use FIG;
9 :     use Subsystem;
10 :     use model;
11 :     use File::Spec;
12 :     use File::Copy;
13 :    
14 :     my $fig = new FIG;
15 : dejongh 1.2 &model::set_fig($fig);
16 : dejongh 1.1
17 : dejongh 1.2 # directory with updated hope info
18 : dejongh 1.1 my $copy_dir;
19 : dejongh 1.2 # flag - re-run all scenarios or just run updated scenarios?
20 :     my $all_scenarios = 0;
21 : dejongh 1.3 my $updated_scenarios = 0;
22 : dejongh 1.2 # flag - re-run Scenarios for all Bacteria and Archaea?
23 :     my $all_genomes = 0;
24 :    
25 : dejongh 1.1 while ((@ARGV > 0) && ($ARGV[0] =~ /^-/))
26 :     {
27 :     my $arg = shift @ARGV;
28 :     if ($arg =~ /^-d/)
29 :     {
30 :     $copy_dir = shift @ARGV;
31 :     }
32 : dejongh 1.2 elsif ($arg =~ /^-all_genomes/)
33 :     {
34 :     $all_genomes = 1;
35 :     }
36 :     elsif ($arg =~ /^-all_scenarios/)
37 :     {
38 :     $all_scenarios = 1;
39 :     }
40 : dejongh 1.3 elsif ($arg =~ /^-updated_scenarios/)
41 :     {
42 :     $updated_scenarios = 1;
43 :     }
44 : dejongh 1.1 else
45 :     {
46 :     die "Unknown option $arg\n";
47 :     }
48 :     }
49 :    
50 : dejongh 1.2 my @genomes = @ARGV;
51 :    
52 :     if ($all_genomes)
53 :     {
54 :     push @genomes, $fig->genomes(1, 0, 'Bacteria');
55 :     push @genomes, $fig->genomes(1, 0, 'Archaea');
56 :     }
57 :    
58 : dejongh 1.1 if (! defined $copy_dir)
59 :     {
60 : dejongh 1.3 print "usage: update_hope_info -d <directory with hope info> [-all_scenarios|-updated_scenarios] [-all_genomes|<list of genome ids>]\n";
61 : dejongh 1.1 exit(-1);
62 :     }
63 :    
64 :     if (! -e $copy_dir)
65 :     {
66 :     die "$copy_dir does not exist\n";
67 :     }
68 :    
69 :     my $hope_ss_file = File::Spec->catfile($copy_dir, "hope_supersets.txt");
70 :     if (-e $hope_ss_file)
71 :     {
72 :     copy($hope_ss_file, "$FIG_Config::global/Models/hope_supersets.txt") or die("Couldn't copy hope_supersets.txt");
73 :     }
74 :    
75 : dejongh 1.2 my @subsystems;
76 : dejongh 1.1
77 : dejongh 1.2 my $hope_dir = File::Spec->catfile($copy_dir, 'Subsystems');
78 :     if (-e $hope_dir)
79 : dejongh 1.1 {
80 : dejongh 1.2 opendir (SSA, $hope_dir);
81 :     foreach my $subdir (grep { $_ !~ /^\./ } readdir(SSA))
82 : dejongh 1.1 {
83 : dejongh 1.2 push @subsystems, $subdir;
84 : dejongh 1.1 }
85 : dejongh 1.2 close (SSA);
86 : dejongh 1.1 }
87 :    
88 :     foreach my $ss (sort @subsystems)
89 :     {
90 :     my $sub = $fig->get_subsystem($ss);
91 :    
92 :     if (! defined($sub))
93 :     {
94 :     print "$ss no longer exists\n";
95 :     next;
96 :     }
97 :    
98 :     print "Updating hope info for $ss\n";
99 :     copy_hope_info($sub);
100 :     }
101 :    
102 : dejongh 1.2 # create a new FIG object so we don't have to worry about cached out-of-date subsystems
103 :     $fig = new FIG;
104 :     &model::set_fig($fig);
105 :    
106 :     if ($all_scenarios)
107 :     {
108 :     &run_all_scenarios;
109 :     }
110 : dejongh 1.3 elsif ($updated_scenarios)
111 : dejongh 1.2 {
112 :     &run_updated_scenarios;
113 :     }
114 :    
115 : dejongh 1.1 sub copy_hope_info
116 :     {
117 :     my ($sub) = @_;
118 :    
119 :     my $dir = $sub->get_dir;
120 :     my $ss_name = $sub->{name};
121 :     $ss_name =~ s/ /_/g;
122 :     my $hope_dir = File::Spec->catfile($copy_dir, 'Subsystems', $ss_name);
123 :     die ("$hope_dir does not exist") if (! -e $hope_dir);
124 :    
125 :     # do we need to adjust read/write permissions?
126 :     copy("$hope_dir/hope_curation_notes", "$dir/hope_curation_notes") or die("Couldn't copy $hope_dir/hope_curation_notes");
127 :     copy("$hope_dir/hope_kegg_info", "$dir/hope_kegg_info") or die("Couldn't copy $hope_dir/hope_curation_notes");
128 :     copy("$hope_dir/hope_reaction_links", "$dir/hope_reaction_links") or die("Couldn't copy $hope_dir/hope_curation_notes");
129 :     copy("$hope_dir/hope_reaction_notes", "$dir/hope_reaction_notes") or die("Couldn't copy $hope_dir/hope_curation_notes");
130 :     copy("$hope_dir/hope_reactions", "$dir/hope_reactions") or die("Couldn't copy $hope_dir/hope_curation_notes");
131 :    
132 :     $sub->incr_version();
133 :     }
134 :    
135 : dejongh 1.2 # just run the scenarios that have been updated
136 :     sub run_updated_scenarios
137 :     {
138 :     my $ss_to_superset = &model::load_superset_file;
139 :    
140 :     foreach my $ss_name (sort @subsystems)
141 :     {
142 :     my $group = $ss_to_superset->{$ss_name};
143 :    
144 :     if ($group eq '')
145 :     {
146 :     print "No superset defined for $ss_name; skipping ...\n";
147 :     next;
148 :     }
149 :    
150 :     my $subsystem = $fig->get_subsystem($ss_name);
151 :     next if ! defined $subsystem;
152 :     my @ss_scenarios = $subsystem->get_hope_scenario_names;
153 :    
154 :     print "Running scenarios for 'All' in $ss_name\n";
155 :     foreach my $name (@ss_scenarios)
156 :     {
157 :     &model::run_scenario('All',$group,$ss_name,$name);
158 :     }
159 :     }
160 :    
161 :     &model::analyze_scenario_connections('All');
162 :    
163 :     foreach my $genome (@genomes)
164 :     {
165 :     print "Updating scenarios for $genome\n";
166 :    
167 :     foreach my $ss_name (sort @subsystems)
168 :     {
169 :     my $group = $ss_to_superset->{$ss_name};
170 :    
171 :     if ($group eq '')
172 :     {
173 :     print "No superset defined for $ss_name; skipping ...\n";
174 :     next;
175 :     }
176 :    
177 :     my $subsystem = $fig->get_subsystem($ss_name);
178 :     next if ! defined $subsystem;
179 :     my @ss_scenarios = $subsystem->get_hope_scenario_names;
180 :    
181 :     foreach my $name (@ss_scenarios)
182 :     {
183 :     &model::run_scenario($genome,$group,$ss_name,$name);
184 :     &model::compare_scenario($genome,$group,$ss_name,$name);
185 :     }
186 :     }
187 :    
188 :     &model::analyze_scenario_connections($genome);
189 :     }
190 :     }
191 :    
192 :     sub run_all_scenarios
193 :     {
194 :     &model::run_supersets('All');
195 :     &model::analyze_scenario_connections('All');
196 :    
197 :     foreach my $genome (@genomes)
198 :     {
199 :     &model::run_supersets($genome);
200 :     &model::compare_supersets($genome);
201 :     &model::analyze_scenario_connections($genome);
202 :     }
203 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3