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

View of /FortyEight/imp_submit_tl_sims.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (download) (as text) (annotate)
Wed Oct 31 23:16:50 2007 UTC (12 years ago) by olson
Branch: MAIN
CVS Tags: mgrast_dev_08112011, rast_rel_2009_05_18, mgrast_dev_08022011, rast_rel_2014_0912, rast_rel_2008_06_18, rast_rel_2008_06_16, mgrast_dev_05262011, rast_rel_2008_12_18, mgrast_dev_04082011, rast_rel_2008_07_21, rast_rel_2010_0928, rast_2008_0924, mgrast_version_3_2, mgrast_dev_12152011, rast_rel_2008_04_23, mgrast_dev_06072011, rast_rel_2008_09_30, rast_rel_2009_0925, rast_rel_2010_0526, rast_rel_2014_0729, mgrast_dev_02212011, rast_rel_2010_1206, mgrast_release_3_0, mgrast_dev_03252011, rast_rel_2010_0118, mgrast_rel_2008_0924, mgrast_rel_2008_1110_v2, rast_rel_2009_02_05, rast_rel_2011_0119, mgrast_rel_2008_0625, mgrast_release_3_0_4, mgrast_release_3_0_2, mgrast_release_3_0_3, mgrast_release_3_0_1, mgrast_dev_03312011, mgrast_release_3_1_2, mgrast_release_3_1_1, mgrast_release_3_1_0, mgrast_dev_04132011, rast_rel_2008_10_09, mgrast_dev_04012011, rast_release_2008_09_29, mgrast_rel_2008_0806, mgrast_rel_2008_0923, mgrast_rel_2008_0919, rast_rel_2009_07_09, rast_rel_2010_0827, mgrast_rel_2008_1110, myrast_33, rast_rel_2011_0928, rast_rel_2008_09_29, mgrast_rel_2008_0917, rast_rel_2008_10_29, mgrast_dev_04052011, mgrast_dev_02222011, rast_rel_2009_03_26, mgrast_dev_10262011, rast_rel_2008_11_24, rast_rel_2008_08_07, HEAD
Changes since 1.1: +3 -2 lines
Rollup of import changes.

#
# Submit a timelogic sims job. This executes on the timelogic after having been
# submitted through sge.
#
# We createn a hash in the sims job dir that is a helper for looking
# up the various pieces of data. These include
#
# 'jobid',taskid: 	timelogic job identifier
# 'status',taskid:	current job status (unknown, queued, running, done, error).
#

use strict;
use FIG;
use FIG_Config;
use File::Basename;
use ImportJob;
use GenomeMeta;
use JobStage;
use DB_File;

@ARGV == 1 or die "Usage: $0 job-dir\n";

my $max_hits = 300;

my $jobdir = shift;

-d $jobdir or die "$0: job dir $jobdir does not exist\n";

my $stage = new JobStage('ImportJob', 'submit_tl_sims', $jobdir);

$stage or die "$0: Could not create job object";

my $job = $stage->job;

$stage->log("Running on " . $stage->hostname);

$stage->set_status("running");
$stage->set_running("yes");

$stage->set_qualified_metadata("host", $stage->hostname);

my $simdir = "$jobdir/sims.job";
&FIG::verify_dir($simdir);

my $rawdir = "$simdir/sims.raw";
&FIG::verify_dir($rawdir);

my $procdir = "$simdir/sims.proc";
&FIG::verify_dir($procdir);

my $status_file = "$simdir/status.btree";
my %status;
my $status_tie;
if (-f $status_file)
{
    $status_tie = tie %status, 'DB_File', $status_file, O_RDWR, 0, $DB_BTREE;
    $status_tie or $stage->fatal("Cannot open status file $status_file: $!");
}
else
{
    $status_tie = tie %status, 'DB_File', $status_file, O_RDWR | O_CREAT, 0777, $DB_BTREE;
    $status_tie or $stage->fatal("Cannot create status file $status_file: $!");
}

#
# Reuse rp_chunk_sims to split the fasta into chunks and create the task.list to keep track of them
#

my $template = "tera-blastp-tabular";
my $target = "nr-import-" . $job->id;
my $chunk_size = 1_000_000;

#
# We first need to ensure that the NR is in place as a target.
#

my $target_ok;
my $fh = $stage->open_file("/decypher/cli/bin/dc_target |");
while (<$fh>)
{
    chomp;
    if ($_ eq $target)
    {
	print "$target is already created\n";
	$target_ok++;
	last;
    }
}
close($fh);

if (!$target_ok)
{
    $stage->run_process("dc_new_target_rt", "/decypher/cli/bin/dc_new_target_rt",
			-priority => '5',
			-template => 'format_aa_into_aa',
			-source => "$jobdir/nr",
			-targ => $target);
    my $fh = $stage->open_file("/decypher/cli/bin/dc_target |");
    while (<$fh>)
    {
	chomp;
	if ($_ eq $target)
	{
	    print "$target created successfully\n";
	    $target_ok++;
	    last;
	}
    }
    close($fh);
}

if (!$target_ok)
{
    $stage->fatal("Target $target not found, and attempt to create it failed.");
}

$stage->run_process("rp_chunk_sims", "$FIG_Config::bin/rp_chunk_sims",
		    "-size", $chunk_size,
		    "$jobdir/seqs.added", "$jobdir/nr", "$jobdir/peg.synonyms", $simdir);

#
# Walk the task list and submit each job.
#

my $tfh = $stage->open_file("$simdir/task.list");

while (my $ent = <$tfh>)
{
    chomp $ent;
    my($id, $in, $nr, $args, $out, $err) = split(/\t/, $ent);

    my $tl_id;
    my $fh = $stage->open_file("dc_template -priority 5 -template $template -query $in -targ $target |");
    while (<$fh>)
    {
	print $_;
	if (/OK.*\s+(\S+)/)
	{
	    $tl_id = $1;
	}
    }
    close($fh);

    if (defined($tl_id))
    {
	$status{'status', $id}  = 'queued';
	$status{'jobid', $id} = $tl_id;
	print "Mapped task $id to tl id $tl_id\n";
    }
    else
    {
	warn "Could not find TL id for task $id\n";
    }
}
close($tfh);

$stage->log("completed");
$stage->set_running("no");
$stage->set_status("complete");



MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3