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

Annotation of /FortyEight/batch_rast.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (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 :     my $phase = 1;
36 : olson 1.2
37 : olson 1.3 my $usage = "Usage: $0 [--parallel N] [--phase N] jobdir\n";
38 :    
39 :     if (!GetOptions("parallel=i" => \$parallel,
40 :     "phase=i" => \$phase))
41 :     {
42 :     die $usage;
43 :     }
44 :    
45 :     @ARGV == 1 or die $usage;
46 : olson 1.1
47 :     my $job_dir = shift;
48 :    
49 :     my $job = new Job48($job_dir);
50 :    
51 : olson 1.2 my $sims_data_dir = $FIG_Config::rast_sims_data;
52 :    
53 :     if (!defined($sims_data_dir))
54 :     {
55 :     $sims_data_dir = $FIG_Config::fortyeight_data;
56 :     }
57 :    
58 :     my $sims_nr = "$sims_data_dir/nr";
59 :     my $sims_peg_synonyms = "$sims_data_dir/peg.synonyms";
60 :     my $sims_keep_count = 300;
61 :    
62 : olson 1.3 if ($parallel > 1)
63 :     {
64 :     $ENV{PE} = 'cluster';
65 :     $ENV{NSLOTS} = $parallel;
66 :     }
67 : olson 1.2
68 : olson 1.3 if ($phase == 1)
69 :     {
70 :     &do_upload($job);
71 :     &do_rp($job);
72 :     }
73 :    
74 :     if ($phase == 2)
75 :     {
76 :     &do_qc($job);
77 :     &do_correction($job);
78 :     &do_sims_preprocess($job);
79 :     }
80 :    
81 :     if ($phase == 3)
82 :     {
83 :     &do_sims($job);
84 :     }
85 :    
86 :     if ($phase == 4)
87 :     {
88 :     &do_bbhs($job);
89 :     &do_auto_assign($job);
90 :     &do_glue_contigs($job);
91 :     &do_pchs($job);
92 :     &do_scenario($job);
93 :     &do_export($job);
94 :     }
95 : olson 1.1
96 :     sub do_upload
97 :     {
98 :     my($job) = @_;
99 :     return;
100 :     }
101 :    
102 :     sub do_rp
103 :     {
104 :     my($job) = @_;
105 :     &run("$FIG_Config::bin/rp_rapid_propagation", $job->dir);
106 :     }
107 :    
108 :     sub do_qc
109 :     {
110 :     my($job) = @_;
111 :    
112 :     if ($job->meta->get_metadata("keep_genecalls"))
113 :     {
114 :     $job->meta->add_log_entry($0, "keep_genecalls is enabled: marking qc as complete");
115 :     $job->meta->set_metadata("status.qc", "complete");
116 :     return;
117 :     }
118 :    
119 :     &run("$FIG_Config::bin/rp_quality_check", $job->dir);
120 :     }
121 :    
122 :     sub do_correction
123 :     {
124 :     my($job) = @_;
125 :    
126 :     if ($job->meta->get_metadata("keep_genecalls"))
127 :     {
128 :     $job->meta->add_log_entry($0, "keep_genecalls is enabled: marking correction as complete");
129 :     $job->meta->set_metadata("status.correction", "complete");
130 :     return;
131 :     }
132 :    
133 :     my $correction_list = $job->meta->get_metadata("correction.request");
134 : olson 1.3
135 :     if (ref($correction_list))
136 :     {
137 :     my $correction_str = join(",", @$correction_list);
138 :     &run("$FIG_Config::bin/rp_correction", $job->dir, $correction_str);
139 :     }
140 : olson 1.1 }
141 :    
142 :     sub do_sims_preprocess
143 :     {
144 :     my($job) = @_;
145 : olson 1.2
146 :     &run("$FIG_Config::bin/rp_preprocess_sims", $job->dir, $sims_nr, $sims_peg_synonyms);
147 :    
148 : olson 1.1 }
149 :    
150 :     sub do_sims
151 :     {
152 :     my($job) = @_;
153 : olson 1.2
154 :     if (!open(CHUNK, "<", $job->dir. "/sims.job/chunk.out"))
155 :     {
156 :     die "Error opening $job_dir/sims.job/chunk.out: $!";
157 :     }
158 :    
159 :     #
160 :     # Extract created task ids
161 :     #
162 :    
163 :     my($task_start, $task_end);
164 :     while (<CHUNK>)
165 :     {
166 :     print;
167 :     chomp;
168 :     if (/^tasks\s+(\d+)\s+(\d+)/)
169 :     {
170 :     $task_start = $1;
171 :     $task_end = $2;
172 :     }
173 :     }
174 :     close(CHUNK);
175 :    
176 :     if (!defined($task_start))
177 :     {
178 :     die "Tasks not found";
179 :     }
180 :    
181 :     my $sims_nr_len = $sims_nr;
182 :     if (-f "$sims_nr-len.btree")
183 :     {
184 :     $sims_nr_len = "$sims_nr-len.btree";
185 :     }
186 :    
187 :     for my $task ($task_start .. $task_end)
188 :     {
189 :     $ENV{SGE_TASK_ID} = $task;
190 :     &run("$FIG_Config::bin/rp_compute_sims", $job->dir);
191 :     }
192 :     &run("$FIG_Config::bin/rp_postproc_sims", $job->dir, $sims_nr_len, $sims_peg_synonyms, $sims_keep_count);
193 : olson 1.1 }
194 :    
195 :     sub do_bbhs
196 :     {
197 :     my($job) = @_;
198 : olson 1.2 &run("$FIG_Config::bin/rp_compute_bbhs", $job->dir);
199 : olson 1.1 }
200 :    
201 :     sub do_auto_assign
202 :     {
203 :     my($job) = @_;
204 : olson 1.2 &run("$FIG_Config::bin/rp_auto_assign", $job->dir);
205 : olson 1.1 }
206 :    
207 :     sub do_glue_contigs
208 :     {
209 :     my($job) = @_;
210 : olson 1.2 &run("$FIG_Config::bin/rp_glue_contigs", $job->dir);
211 : olson 1.1 }
212 :    
213 :     sub do_pchs
214 :     {
215 :     my($job) = @_;
216 : olson 1.2 &run("$FIG_Config::bin/rp_compute_pchs", $job->dir);
217 : olson 1.1 }
218 :    
219 :     sub do_scenario
220 :     {
221 :     my($job) = @_;
222 : olson 1.2 &run("$FIG_Config::bin/rp_scenarios", $job->dir);
223 : olson 1.1 }
224 :    
225 :     sub do_export
226 :     {
227 :     my($job) = @_;
228 : olson 1.2 &run("$FIG_Config::bin/rp_write_exports", $job->dir);
229 : olson 1.1 }
230 :    
231 :    
232 :     sub run
233 :     {
234 :     my(@cmd) = @_;
235 :    
236 :     print "Start: @cmd\n";
237 :     my $rc = system(@cmd);
238 :     if ($rc != 0)
239 :     {
240 :     confess "Cmd failed with rc=$rc: @cmd\n";
241 :     }
242 :     print "Done: @cmd\n";
243 :     }

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3