[Bio] / FortyEight / batch_rast.pl Repository:
ViewVC logotype

Annotation of /FortyEight/batch_rast.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : olson 1.1
2 :     use strict;
3 :     use Carp;
4 :     use Job48;
5 :     use FIG_Config;
6 :     use FIG;
7 : olson 1.3 use Getopt::Long;
8 : olson 1.1
9 :     #
10 :     # Run a jobdirectory in one shot. For batch offload to a remote cluster that
11 :     # doesn't have our scheduler, etc available.
12 :     #
13 :    
14 :     #
15 :     # Stages are as follows; for now this is a copy and paste exercise from
16 :     # FortyEight/check_jobs.pl. Use caution, don't run with scissors.
17 :     #
18 :    
19 :     #
20 :     # upload
21 :     # rp
22 :     # Check status of keep_genecalls, then qc
23 :     # Check status of correction, then correction
24 :     # preprocess_sims
25 :     # sims
26 :     # bbhs
27 :     # auto_assign
28 :     # glue_contigs
29 :     # pchs
30 :     # scenario
31 :     # export
32 :     #
33 :    
34 : olson 1.3 my $parallel = 1;
35 : olson 1.4 my @phase;
36 : olson 1.2
37 : olson 1.4 my $usage = "Usage: $0 [--parallel N] -phase N [--phase N ..] jobdir\n";
38 : olson 1.3
39 :     if (!GetOptions("parallel=i" => \$parallel,
40 : olson 1.4 "phase=i" => \@phase))
41 : olson 1.3 {
42 :     die $usage;
43 :     }
44 :    
45 :     @ARGV == 1 or die $usage;
46 : olson 1.1
47 : olson 1.4 @phase > 0 or die $usage;
48 :     my %phase = map { $_ => 1 } @phase;
49 :    
50 : olson 1.1 my $job_dir = shift;
51 :    
52 :     my $job = new Job48($job_dir);
53 :    
54 : olson 1.2 my $sims_data_dir = $FIG_Config::rast_sims_data;
55 :    
56 :     if (!defined($sims_data_dir))
57 :     {
58 :     $sims_data_dir = $FIG_Config::fortyeight_data;
59 :     }
60 :    
61 :     my $sims_nr = "$sims_data_dir/nr";
62 :     my $sims_peg_synonyms = "$sims_data_dir/peg.synonyms";
63 :     my $sims_keep_count = 300;
64 :    
65 : olson 1.7 my $job48 = new Job48($job_dir);
66 :     my $meta = $job48->meta;
67 :    
68 :     my $host = `hostname`;
69 :     chomp $host;
70 :     $meta->add_log_entry($0, "Running phases @phase on $host");
71 :    
72 : olson 1.4 #
73 :     # Emulate execution of SGE parallel environment via the
74 :     # --parallel N argument.
75 :     #
76 : olson 1.3 if ($parallel > 1)
77 :     {
78 :     $ENV{PE} = 'cluster';
79 :     $ENV{NSLOTS} = $parallel;
80 :     }
81 : olson 1.2
82 : olson 1.5 if ($phase{1})
83 : olson 1.3 {
84 :     &do_upload($job);
85 :     &do_rp($job);
86 :     }
87 :    
88 : olson 1.5 if ($phase{2})
89 : olson 1.3 {
90 :     &do_qc($job);
91 :     &do_correction($job);
92 :     &do_sims_preprocess($job);
93 :     }
94 :    
95 : olson 1.5 if ($phase{3})
96 : olson 1.3 {
97 : olson 1.4 #
98 :     # If running inside a SGE task array job, execute
99 :     # our task. Otherwise run all of them.
100 :     #
101 :     if ($ENV{SGE_TASK_ID})
102 :     {
103 :     &run("$FIG_Config::bin/rp_compute_sims", $job->dir);
104 :     }
105 :     else
106 :     {
107 :     &do_sims($job);
108 :     }
109 : olson 1.3 }
110 :    
111 : olson 1.5 if ($phase{4})
112 : olson 1.3 {
113 : olson 1.6 &do_sims_postprocess($job);
114 : olson 1.3 &do_bbhs($job);
115 :     &do_auto_assign($job);
116 :     &do_glue_contigs($job);
117 :     &do_pchs($job);
118 :     &do_scenario($job);
119 :     &do_export($job);
120 :     }
121 : olson 1.1
122 :     sub do_upload
123 :     {
124 :     my($job) = @_;
125 :     return;
126 :     }
127 :    
128 :     sub do_rp
129 :     {
130 :     my($job) = @_;
131 :     &run("$FIG_Config::bin/rp_rapid_propagation", $job->dir);
132 :     }
133 :    
134 :     sub do_qc
135 :     {
136 :     my($job) = @_;
137 :    
138 :     if ($job->meta->get_metadata("keep_genecalls"))
139 :     {
140 :     $job->meta->add_log_entry($0, "keep_genecalls is enabled: marking qc as complete");
141 :     $job->meta->set_metadata("status.qc", "complete");
142 :     return;
143 :     }
144 :    
145 :     &run("$FIG_Config::bin/rp_quality_check", $job->dir);
146 :     }
147 :    
148 :     sub do_correction
149 :     {
150 :     my($job) = @_;
151 :    
152 :     if ($job->meta->get_metadata("keep_genecalls"))
153 :     {
154 :     $job->meta->add_log_entry($0, "keep_genecalls is enabled: marking correction as complete");
155 :     $job->meta->set_metadata("status.correction", "complete");
156 :     return;
157 :     }
158 :    
159 :     my $correction_list = $job->meta->get_metadata("correction.request");
160 : olson 1.3
161 :     if (ref($correction_list))
162 :     {
163 :     my $correction_str = join(",", @$correction_list);
164 :     &run("$FIG_Config::bin/rp_correction", $job->dir, $correction_str);
165 :     }
166 : olson 1.1 }
167 :    
168 :     sub do_sims_preprocess
169 :     {
170 :     my($job) = @_;
171 : olson 1.2
172 :     &run("$FIG_Config::bin/rp_preprocess_sims", $job->dir, $sims_nr, $sims_peg_synonyms);
173 :    
174 : olson 1.1 }
175 :    
176 :     sub do_sims
177 :     {
178 :     my($job) = @_;
179 : olson 1.2
180 :     if (!open(CHUNK, "<", $job->dir. "/sims.job/chunk.out"))
181 :     {
182 :     die "Error opening $job_dir/sims.job/chunk.out: $!";
183 :     }
184 :    
185 :     #
186 :     # Extract created task ids
187 :     #
188 :    
189 :     my($task_start, $task_end);
190 :     while (<CHUNK>)
191 :     {
192 :     print;
193 :     chomp;
194 :     if (/^tasks\s+(\d+)\s+(\d+)/)
195 :     {
196 :     $task_start = $1;
197 :     $task_end = $2;
198 :     }
199 :     }
200 :     close(CHUNK);
201 :    
202 :     if (!defined($task_start))
203 :     {
204 :     die "Tasks not found";
205 :     }
206 :    
207 : olson 1.6 for my $task ($task_start .. $task_end)
208 :     {
209 :     $ENV{SGE_TASK_ID} = $task;
210 :     &run("$FIG_Config::bin/rp_compute_sims", $job->dir);
211 :     }
212 :     }
213 :    
214 :     sub do_sims_postprocess
215 :     {
216 :     my($job) = @_;
217 :    
218 : olson 1.2 my $sims_nr_len = $sims_nr;
219 :     if (-f "$sims_nr-len.btree")
220 :     {
221 :     $sims_nr_len = "$sims_nr-len.btree";
222 :     }
223 :    
224 : olson 1.6 &run("$FIG_Config::bin/rp_postproc_sims", $job->dir, $sims_nr_len, $sims_peg_synonyms, $sims_keep_count);
225 : olson 1.1 }
226 :    
227 :     sub do_bbhs
228 :     {
229 :     my($job) = @_;
230 : olson 1.2 &run("$FIG_Config::bin/rp_compute_bbhs", $job->dir);
231 : olson 1.1 }
232 :    
233 :     sub do_auto_assign
234 :     {
235 :     my($job) = @_;
236 : olson 1.2 &run("$FIG_Config::bin/rp_auto_assign", $job->dir);
237 : olson 1.1 }
238 :    
239 :     sub do_glue_contigs
240 :     {
241 :     my($job) = @_;
242 : olson 1.2 &run("$FIG_Config::bin/rp_glue_contigs", $job->dir);
243 : olson 1.1 }
244 :    
245 :     sub do_pchs
246 :     {
247 :     my($job) = @_;
248 : olson 1.2 &run("$FIG_Config::bin/rp_compute_pchs", $job->dir);
249 : olson 1.1 }
250 :    
251 :     sub do_scenario
252 :     {
253 :     my($job) = @_;
254 : olson 1.2 &run("$FIG_Config::bin/rp_scenarios", $job->dir);
255 : olson 1.1 }
256 :    
257 :     sub do_export
258 :     {
259 :     my($job) = @_;
260 : olson 1.2 &run("$FIG_Config::bin/rp_write_exports", $job->dir);
261 : olson 1.1 }
262 :    
263 :    
264 :     sub run
265 :     {
266 :     my(@cmd) = @_;
267 :    
268 :     print "Start: @cmd\n";
269 :     my $rc = system(@cmd);
270 :     if ($rc != 0)
271 :     {
272 :     confess "Cmd failed with rc=$rc: @cmd\n";
273 :     }
274 :     print "Done: @cmd\n";
275 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3