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

Annotation of /FortyEight/batch_rast.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.6 - (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.4 #
66 :     # Emulate execution of SGE parallel environment via the
67 :     # --parallel N argument.
68 :     #
69 : olson 1.3 if ($parallel > 1)
70 :     {
71 :     $ENV{PE} = 'cluster';
72 :     $ENV{NSLOTS} = $parallel;
73 :     }
74 : olson 1.2
75 : olson 1.5 if ($phase{1})
76 : olson 1.3 {
77 :     &do_upload($job);
78 :     &do_rp($job);
79 :     }
80 :    
81 : olson 1.5 if ($phase{2})
82 : olson 1.3 {
83 :     &do_qc($job);
84 :     &do_correction($job);
85 :     &do_sims_preprocess($job);
86 :     }
87 :    
88 : olson 1.5 if ($phase{3})
89 : olson 1.3 {
90 : olson 1.4 #
91 :     # If running inside a SGE task array job, execute
92 :     # our task. Otherwise run all of them.
93 :     #
94 :     if ($ENV{SGE_TASK_ID})
95 :     {
96 :     &run("$FIG_Config::bin/rp_compute_sims", $job->dir);
97 :     }
98 :     else
99 :     {
100 :     &do_sims($job);
101 :     }
102 : olson 1.3 }
103 :    
104 : olson 1.5 if ($phase{4})
105 : olson 1.3 {
106 : olson 1.6 &do_sims_postprocess($job);
107 : olson 1.3 &do_bbhs($job);
108 :     &do_auto_assign($job);
109 :     &do_glue_contigs($job);
110 :     &do_pchs($job);
111 :     &do_scenario($job);
112 :     &do_export($job);
113 :     }
114 : olson 1.1
115 :     sub do_upload
116 :     {
117 :     my($job) = @_;
118 :     return;
119 :     }
120 :    
121 :     sub do_rp
122 :     {
123 :     my($job) = @_;
124 :     &run("$FIG_Config::bin/rp_rapid_propagation", $job->dir);
125 :     }
126 :    
127 :     sub do_qc
128 :     {
129 :     my($job) = @_;
130 :    
131 :     if ($job->meta->get_metadata("keep_genecalls"))
132 :     {
133 :     $job->meta->add_log_entry($0, "keep_genecalls is enabled: marking qc as complete");
134 :     $job->meta->set_metadata("status.qc", "complete");
135 :     return;
136 :     }
137 :    
138 :     &run("$FIG_Config::bin/rp_quality_check", $job->dir);
139 :     }
140 :    
141 :     sub do_correction
142 :     {
143 :     my($job) = @_;
144 :    
145 :     if ($job->meta->get_metadata("keep_genecalls"))
146 :     {
147 :     $job->meta->add_log_entry($0, "keep_genecalls is enabled: marking correction as complete");
148 :     $job->meta->set_metadata("status.correction", "complete");
149 :     return;
150 :     }
151 :    
152 :     my $correction_list = $job->meta->get_metadata("correction.request");
153 : olson 1.3
154 :     if (ref($correction_list))
155 :     {
156 :     my $correction_str = join(",", @$correction_list);
157 :     &run("$FIG_Config::bin/rp_correction", $job->dir, $correction_str);
158 :     }
159 : olson 1.1 }
160 :    
161 :     sub do_sims_preprocess
162 :     {
163 :     my($job) = @_;
164 : olson 1.2
165 :     &run("$FIG_Config::bin/rp_preprocess_sims", $job->dir, $sims_nr, $sims_peg_synonyms);
166 :    
167 : olson 1.1 }
168 :    
169 :     sub do_sims
170 :     {
171 :     my($job) = @_;
172 : olson 1.2
173 :     if (!open(CHUNK, "<", $job->dir. "/sims.job/chunk.out"))
174 :     {
175 :     die "Error opening $job_dir/sims.job/chunk.out: $!";
176 :     }
177 :    
178 :     #
179 :     # Extract created task ids
180 :     #
181 :    
182 :     my($task_start, $task_end);
183 :     while (<CHUNK>)
184 :     {
185 :     print;
186 :     chomp;
187 :     if (/^tasks\s+(\d+)\s+(\d+)/)
188 :     {
189 :     $task_start = $1;
190 :     $task_end = $2;
191 :     }
192 :     }
193 :     close(CHUNK);
194 :    
195 :     if (!defined($task_start))
196 :     {
197 :     die "Tasks not found";
198 :     }
199 :    
200 : olson 1.6 for my $task ($task_start .. $task_end)
201 :     {
202 :     $ENV{SGE_TASK_ID} = $task;
203 :     &run("$FIG_Config::bin/rp_compute_sims", $job->dir);
204 :     }
205 :     }
206 :    
207 :     sub do_sims_postprocess
208 :     {
209 :     my($job) = @_;
210 :    
211 : olson 1.2 my $sims_nr_len = $sims_nr;
212 :     if (-f "$sims_nr-len.btree")
213 :     {
214 :     $sims_nr_len = "$sims_nr-len.btree";
215 :     }
216 :    
217 : olson 1.6 &run("$FIG_Config::bin/rp_postproc_sims", $job->dir, $sims_nr_len, $sims_peg_synonyms, $sims_keep_count);
218 : olson 1.1 }
219 :    
220 :     sub do_bbhs
221 :     {
222 :     my($job) = @_;
223 : olson 1.2 &run("$FIG_Config::bin/rp_compute_bbhs", $job->dir);
224 : olson 1.1 }
225 :    
226 :     sub do_auto_assign
227 :     {
228 :     my($job) = @_;
229 : olson 1.2 &run("$FIG_Config::bin/rp_auto_assign", $job->dir);
230 : olson 1.1 }
231 :    
232 :     sub do_glue_contigs
233 :     {
234 :     my($job) = @_;
235 : olson 1.2 &run("$FIG_Config::bin/rp_glue_contigs", $job->dir);
236 : olson 1.1 }
237 :    
238 :     sub do_pchs
239 :     {
240 :     my($job) = @_;
241 : olson 1.2 &run("$FIG_Config::bin/rp_compute_pchs", $job->dir);
242 : olson 1.1 }
243 :    
244 :     sub do_scenario
245 :     {
246 :     my($job) = @_;
247 : olson 1.2 &run("$FIG_Config::bin/rp_scenarios", $job->dir);
248 : olson 1.1 }
249 :    
250 :     sub do_export
251 :     {
252 :     my($job) = @_;
253 : olson 1.2 &run("$FIG_Config::bin/rp_write_exports", $job->dir);
254 : olson 1.1 }
255 :    
256 :    
257 :     sub run
258 :     {
259 :     my(@cmd) = @_;
260 :    
261 :     print "Start: @cmd\n";
262 :     my $rc = system(@cmd);
263 :     if ($rc != 0)
264 :     {
265 :     confess "Cmd failed with rc=$rc: @cmd\n";
266 :     }
267 :     print "Done: @cmd\n";
268 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3