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

Diff of /FortyEight/batch_rast.pl

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1, Mon Oct 26 21:23:37 2009 UTC revision 1.4, Tue Jan 12 20:23:30 2010 UTC
# Line 4  Line 4 
4  use Job48;  use Job48;
5  use FIG_Config;  use FIG_Config;
6  use FIG;  use FIG;
7    use Getopt::Long;
8    
9  #  #
10  # Run a jobdirectory in one shot. For batch offload to a remote cluster that  # Run a jobdirectory in one shot. For batch offload to a remote cluster that
# Line 30  Line 31 
31  # export  # export
32  #  #
33    
34  @ARGV == 1 or die "Usage: $0 jobdir\n";  my $parallel = 1;
35    my @phase;
36    
37    my $usage = "Usage: $0 [--parallel N] -phase 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    
47    @phase > 0 or die $usage;
48    my %phase = map { $_ => 1 } @phase;
49    
50  my $job_dir = shift;  my $job_dir = shift;
51    
52  my $job = new Job48($job_dir);  my $job = new Job48($job_dir);
53    
54    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    #
66    # Emulate execution of SGE parallel environment via the
67    # --parallel N argument.
68    #
69    if ($parallel > 1)
70    {
71        $ENV{PE} = 'cluster';
72        $ENV{NSLOTS} = $parallel;
73    }
74    
75    if ($phase == 1)
76    {
77  &do_upload($job);  &do_upload($job);
78  &do_rp($job);  &do_rp($job);
79    }
80    
81    if ($phase == 2)
82    {
83  &do_qc($job);  &do_qc($job);
84  &do_correction($job);  &do_correction($job);
85  &do_sims_preprocess($job);  &do_sims_preprocess($job);
86    }
87    
88    if ($phase == 3)
89    {
90        #
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);  &do_sims($job);
101        }
102    }
103    
104    if ($phase == 4)
105    {
106        &run("$FIG_Config::bin/rp_postproc_sims", $job->dir, $sims_nr_len, $sims_peg_synonyms, $sims_keep_count);
107  &do_bbhs($job);  &do_bbhs($job);
108  &do_auto_assign($job);  &do_auto_assign($job);
109  &do_glue_contigs($job);  &do_glue_contigs($job);
110  &do_pchs($job);  &do_pchs($job);
111  &do_scenario($job);  &do_scenario($job);
112  &do_export($job);  &do_export($job);
113    }
114    
115  sub do_upload  sub do_upload
116  {  {
# Line 88  Line 151 
151    
152      my $correction_list = $job->meta->get_metadata("correction.request");      my $correction_list = $job->meta->get_metadata("correction.request");
153    
154        if (ref($correction_list))
155        {
156      my $correction_str = join(",", @$correction_list);      my $correction_str = join(",", @$correction_list);
157      &run("$FIG_Config::bin/rp_correction", $job->dir, $correction_str);      &run("$FIG_Config::bin/rp_correction", $job->dir, $correction_str);
158  }  }
159    }
160    
161  sub do_sims_preprocess  sub do_sims_preprocess
162  {  {
163      my($job) = @_;      my($job) = @_;
164    
165        &run("$FIG_Config::bin/rp_preprocess_sims", $job->dir, $sims_nr, $sims_peg_synonyms);
166    
167  }  }
168    
169  sub do_sims  sub do_sims
170  {  {
171      my($job) = @_;      my($job) = @_;
172    
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  }  }
212    
213  sub do_bbhs  sub do_bbhs
214  {  {
215      my($job) = @_;      my($job) = @_;
216        &run("$FIG_Config::bin/rp_compute_bbhs", $job->dir);
217  }  }
218    
219  sub do_auto_assign  sub do_auto_assign
220  {  {
221      my($job) = @_;      my($job) = @_;
222        &run("$FIG_Config::bin/rp_auto_assign", $job->dir);
223  }  }
224    
225  sub do_glue_contigs  sub do_glue_contigs
226  {  {
227      my($job) = @_;      my($job) = @_;
228        &run("$FIG_Config::bin/rp_glue_contigs", $job->dir);
229  }  }
230    
231  sub do_pchs  sub do_pchs
232  {  {
233      my($job) = @_;      my($job) = @_;
234        &run("$FIG_Config::bin/rp_compute_pchs", $job->dir);
235  }  }
236    
237  sub do_scenario  sub do_scenario
238  {  {
239      my($job) = @_;      my($job) = @_;
240        &run("$FIG_Config::bin/rp_scenarios", $job->dir);
241  }  }
242    
243  sub do_export  sub do_export
244  {  {
245      my($job) = @_;      my($job) = @_;
246        &run("$FIG_Config::bin/rp_write_exports", $job->dir);
247  }  }
248    
249    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.4

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3