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

Annotation of /FortyEight/batch_rast.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.4 - (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.3 if ($phase == 1)
76 :     {
77 :     &do_upload($job);
78 :     &do_rp($job);
79 :     }
80 :    
81 :     if ($phase == 2)
82 :     {
83 :     &do_qc($job);
84 :     &do_correction($job);
85 :     &do_sims_preprocess($job);
86 :     }
87 :    
88 :     if ($phase == 3)
89 :     {
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 :     if ($phase == 4)
105 :     {
106 : olson 1.4 &run("$FIG_Config::bin/rp_postproc_sims", $job->dir, $sims_nr_len, $sims_peg_synonyms, $sims_keep_count);
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 :     my $sims_nr_len = $sims_nr;
201 :     if (-f "$sims_nr-len.btree")
202 :     {
203 :     $sims_nr_len = "$sims_nr-len.btree";
204 :     }
205 :    
206 :     for my $task ($task_start .. $task_end)
207 :     {
208 :     $ENV{SGE_TASK_ID} = $task;
209 :     &run("$FIG_Config::bin/rp_compute_sims", $job->dir);
210 :     }
211 : olson 1.1 }
212 :    
213 :     sub do_bbhs
214 :     {
215 :     my($job) = @_;
216 : olson 1.2 &run("$FIG_Config::bin/rp_compute_bbhs", $job->dir);
217 : olson 1.1 }
218 :    
219 :     sub do_auto_assign
220 :     {
221 :     my($job) = @_;
222 : olson 1.2 &run("$FIG_Config::bin/rp_auto_assign", $job->dir);
223 : olson 1.1 }
224 :    
225 :     sub do_glue_contigs
226 :     {
227 :     my($job) = @_;
228 : olson 1.2 &run("$FIG_Config::bin/rp_glue_contigs", $job->dir);
229 : olson 1.1 }
230 :    
231 :     sub do_pchs
232 :     {
233 :     my($job) = @_;
234 : olson 1.2 &run("$FIG_Config::bin/rp_compute_pchs", $job->dir);
235 : olson 1.1 }
236 :    
237 :     sub do_scenario
238 :     {
239 :     my($job) = @_;
240 : olson 1.2 &run("$FIG_Config::bin/rp_scenarios", $job->dir);
241 : olson 1.1 }
242 :    
243 :     sub do_export
244 :     {
245 :     my($job) = @_;
246 : olson 1.2 &run("$FIG_Config::bin/rp_write_exports", $job->dir);
247 : olson 1.1 }
248 :    
249 :    
250 :     sub run
251 :     {
252 :     my(@cmd) = @_;
253 :    
254 :     print "Start: @cmd\n";
255 :     my $rc = system(@cmd);
256 :     if ($rc != 0)
257 :     {
258 :     confess "Cmd failed with rc=$rc: @cmd\n";
259 :     }
260 :     print "Done: @cmd\n";
261 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3