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

Annotation of /FigKernelScripts/install_rast_batch.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1
2 :     #
3 :     # Install a batch of RAST jobs.
4 :     #
5 :     # We are given a file containing the pathnames to the job directories. Each is given a
6 :     # little bit of sanity checking (does it exist? Does it already exist in the seed?)
7 :     #
8 :     # If all is OK, then we go ahead and do the actual install.
9 :     #
10 :    
11 :     use strict;
12 :     use FileHandle;
13 :     use POSIX;
14 :     use FIG;
15 :     use FIG_Config;
16 :    
17 :     my $user = "BobO";
18 :    
19 : olson 1.3 my $usage = "install_rast_batch [-show-replacements] [-install] [-check] [-pchs] jobfile install-log";
20 : olson 1.1
21 :     my $check_only;
22 : olson 1.2 my $pchs_only;
23 : olson 1.3 my $install;
24 :     my $show_replacements;
25 : olson 1.1
26 :     $ENV{DBKERNEL_DEFER_VACUUM} = 1;
27 :    
28 :     while ((@ARGV > 0) && ($ARGV[0] =~ /^-/))
29 :     {
30 :     my $arg = shift @ARGV;
31 :     if ($arg =~ /^-check/i)
32 :     {
33 :     $check_only++;
34 :     }
35 : olson 1.2 elsif ($arg =~ /^-pchs/i)
36 :     {
37 :     $pchs_only++;
38 :     }
39 : olson 1.3 elsif ($arg =~ /^-show-replacements/i)
40 :     {
41 :     $show_replacements++;
42 :     }
43 :     elsif ($arg =~ /^-install/i)
44 :     {
45 :     $install++;
46 :     }
47 : olson 1.2 else
48 :     {
49 :     die "Invalid argument $arg. Usage: $usage";
50 :     }
51 : olson 1.1 }
52 :    
53 :     @ARGV == 2 or die $usage;
54 :    
55 :     my $jobfile = shift;
56 :     my $logfile = shift;
57 :    
58 :     open(JF, "<$jobfile") or die "Cannot open $jobfile: $!";
59 :    
60 :     open(LOG, ">>$logfile") or die "Cannot write $logfile: $!";
61 :     LOG->autoflush(1);
62 :    
63 :     my @jobs;
64 :     my $errs;
65 :     while (defined(my $jobdir = <JF>))
66 :     {
67 :     chomp $jobdir;
68 :    
69 :     if (! -d $jobdir)
70 :     {
71 :     warn "Job directory $jobdir is missing\n";
72 :     $errs++;
73 :     next;
74 :     }
75 :    
76 :     my $genome = &FIG::file_head("$jobdir/GENOME_ID");
77 :     chomp $genome;
78 :    
79 :     my $genome_name = &FIG::file_head("$jobdir/GENOME");
80 :     chomp $genome_name;
81 :    
82 :     if ($genome eq '' or $genome_name eq '')
83 :     {
84 :     warn "Missing genome info for $jobdir\n";
85 :     $errs++;
86 :     next;
87 :     }
88 :    
89 :     my $orgdir = "$jobdir/rp/$genome";
90 :    
91 :     if (! -d $orgdir)
92 :     {
93 :     warn "Job $jobdir is missing its genome driectory $orgdir\n";
94 :     $errs++;
95 :     next;
96 :     }
97 :    
98 :     #
99 :     # Check for existing SEED org.
100 :     #
101 :    
102 : olson 1.4 if (-d "$FIG_Config::organisms/$genome" and not $show_replacements)
103 : olson 1.1 {
104 :     warn "Job $jobdir is already installed in the SEED\n";
105 :     $errs++;
106 :     next;
107 :     }
108 :    
109 :     push(@jobs, [$jobdir, $orgdir, $genome, $genome_name]);
110 :     }
111 :    
112 :     if ($errs)
113 :     {
114 :     die "Aborting, $errs errors encountered\n";
115 :     }
116 :    
117 :     if ($check_only)
118 :     {
119 :     print "Sanity check suceeeds\n";
120 :     print "Would install:\n";
121 :    
122 :     for my $job (@jobs)
123 :     {
124 :     my($jobdir, $orgdir, $genome, $genome_name) = @$job;
125 :    
126 :     print "$genome $genome_name from $orgdir\n";
127 :     }
128 :     exit 0;
129 :     }
130 :    
131 :     #
132 :     # Go ahead and start installs.
133 :     #
134 :    
135 : olson 1.3 if ($show_replacements)
136 :     {
137 : olson 1.4 show_replacements(\@jobs, $show_replacements > 1);
138 : olson 1.3 }
139 :    
140 :    
141 : olson 1.2 if ($pchs_only)
142 :     {
143 :     install_pchs(\@jobs);
144 :     }
145 : olson 1.3 elsif ($install)
146 : olson 1.2 {
147 :     install_genomes(\@jobs);
148 :     }
149 :     exit;
150 : olson 1.1
151 : olson 1.3 sub show_replacements
152 :     {
153 : olson 1.4 my($jobs, $show_cmd) = @_;
154 : olson 1.3
155 :     for my $job (@$jobs)
156 :     {
157 :     my($jobdir, $orgdir, $genome, $genome_name) = @$job;
158 :    
159 :     my $repl = &FIG::file_head("$orgdir/REPLACES", 1);
160 :    
161 :     if ($repl)
162 :     {
163 : olson 1.4 chomp $repl;
164 :     if ($show_cmd)
165 :     {
166 :     print "fig mark_deleted_genomes $user $repl\n";
167 :     }
168 :     else
169 :     {
170 :     print "$repl replaced by $genome $genome_name\n";
171 :     }
172 : olson 1.3 }
173 :     }
174 :     }
175 :    
176 :    
177 : olson 1.2 sub install_genomes
178 : olson 1.1 {
179 : olson 1.2 my($jobs) = @_;
180 :    
181 :     log_output("beginning installation\n");
182 :    
183 :     for my $job (@$jobs)
184 : olson 1.1 {
185 : olson 1.2 my($jobdir, $orgdir, $genome, $genome_name) = @$job;
186 :    
187 :     log_output("Installing $genome $genome_name from $orgdir\n");
188 :    
189 :     my $cmd = "fig add_genome $user $orgdir";
190 :    
191 :     log_output("$cmd\n");
192 :    
193 :     if (!open(P, "$cmd 2>&1 |"))
194 :     {
195 :     log_output("Cannot open pipe from $cmd: $!\n");
196 :     die "Cannot open pipe from $cmd: $!";
197 :     }
198 :     while (<P>)
199 :     {
200 :     log_output($_);
201 :     }
202 :    
203 :     my $res = close(P);
204 :     if (!$res)
205 :     {
206 :     if ($!)
207 :     {
208 :     my $er = $!;
209 :     log_output("Error closing pipe: $er\n");
210 :     die "Error closing pipe: $er\n";
211 :     }
212 :    
213 :     my($exitcode, $signal, $msg) = &FIG::interpret_error_code($?);
214 :     log_output("Error exit, exitcode=$exitcode, signal_$signal, msg=$msg\n");
215 :     die "Error exit, exitcode=$exitcode, signal_$signal, msg=$msg\n";
216 :     }
217 :    
218 :     log_output("Successfully installed $genome $genome_name from $orgdir\n");
219 : olson 1.1 }
220 : olson 1.2 }
221 : olson 1.1
222 : olson 1.2 sub install_pchs
223 :     {
224 :     my($jobs) = @_;
225 :    
226 :     log_output("beginning installation of pchs\n");
227 : olson 1.3
228 : olson 1.2 for my $job (@$jobs)
229 : olson 1.1 {
230 : olson 1.2 my($jobdir, $orgdir, $genome, $genome_name) = @$job;
231 : olson 1.3
232 :     log_output("Installing pchs for $genome $genome_name from $orgdir\n");
233 :    
234 :     my $cmd = "install_new_coupling_data -jobdir $jobdir";
235 : olson 1.2
236 : olson 1.3 log_output("$cmd\n");
237 :    
238 :     if (!open(P, "$cmd 2>&1 |"))
239 :     {
240 :     log_output("Cannot open pipe from $cmd: $!\n");
241 :     die "Cannot open pipe from $cmd: $!";
242 :     }
243 :     while (<P>)
244 :     {
245 :     log_output($_);
246 :     }
247 :    
248 :     my $res = close(P);
249 :     if (!$res)
250 :     {
251 :     if ($!)
252 :     {
253 :     my $er = $!;
254 :     log_output("Error closing pipe: $er\n");
255 :     die "Error closing pipe: $er\n";
256 :     }
257 :    
258 :     my($exitcode, $signal, $msg) = &FIG::interpret_error_code($?);
259 :     log_output("Error exit, exitcode=$exitcode, signal_$signal, msg=$msg\n");
260 :     die "Error exit, exitcode=$exitcode, signal_$signal, msg=$msg\n";
261 :     }
262 : olson 1.2
263 : olson 1.3 log_output("Successfully installed pchs for $genome $genome_name from $orgdir\n");
264 :     my $cmd = "load_coupling $genome";
265 : olson 1.2
266 :     log_output("$cmd\n");
267 :    
268 :     if (!open(P, "$cmd 2>&1 |"))
269 : olson 1.1 {
270 : olson 1.2 log_output("Cannot open pipe from $cmd: $!\n");
271 :     die "Cannot open pipe from $cmd: $!";
272 :     }
273 :     while (<P>)
274 :     {
275 :     log_output($_);
276 : olson 1.1 }
277 :    
278 : olson 1.2 my $res = close(P);
279 :     if (!$res)
280 :     {
281 :     if ($!)
282 :     {
283 :     my $er = $!;
284 :     log_output("Error closing pipe: $er\n");
285 :     die "Error closing pipe: $er\n";
286 :     }
287 :    
288 :     my($exitcode, $signal, $msg) = &FIG::interpret_error_code($?);
289 :     log_output("Error exit, exitcode=$exitcode, signal_$signal, msg=$msg\n");
290 :     die "Error exit, exitcode=$exitcode, signal_$signal, msg=$msg\n";
291 :     }
292 :    
293 : olson 1.3 log_output("loaded coupling data for $genome $genome_name from $orgdir\n");
294 : olson 1.1 }
295 : olson 1.3
296 : olson 1.1 }
297 : olson 1.2
298 : olson 1.1 sub log_output
299 :     {
300 :     my $msg = join(" ", @_);
301 :    
302 :     my $ts = strftime("%Y-%m-%d %H:%M:%S", localtime);
303 :    
304 :     $msg = "$ts $msg";
305 :     print $msg;
306 :     print LOG $msg;
307 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3