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

Annotation of /FortyEight/imp_submit_tl_sims.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.2 - (view) (download) (as text)

1 : olson 1.1 #
2 :     # Submit a timelogic sims job. This executes on the timelogic after having been
3 :     # submitted through sge.
4 :     #
5 :     # We createn a hash in the sims job dir that is a helper for looking
6 :     # up the various pieces of data. These include
7 :     #
8 :     # 'jobid',taskid: timelogic job identifier
9 :     # 'status',taskid: current job status (unknown, queued, running, done, error).
10 :     #
11 :    
12 :     use strict;
13 :     use FIG;
14 :     use FIG_Config;
15 :     use File::Basename;
16 :     use ImportJob;
17 :     use GenomeMeta;
18 :     use JobStage;
19 :     use DB_File;
20 :    
21 :     @ARGV == 1 or die "Usage: $0 job-dir\n";
22 :    
23 :     my $max_hits = 300;
24 :    
25 :     my $jobdir = shift;
26 :    
27 :     -d $jobdir or die "$0: job dir $jobdir does not exist\n";
28 :    
29 :     my $stage = new JobStage('ImportJob', 'submit_tl_sims', $jobdir);
30 :    
31 :     $stage or die "$0: Could not create job object";
32 :    
33 :     my $job = $stage->job;
34 :    
35 :     $stage->log("Running on " . $stage->hostname);
36 :    
37 :     $stage->set_status("running");
38 :     $stage->set_running("yes");
39 :    
40 :     $stage->set_qualified_metadata("host", $stage->hostname);
41 :    
42 :     my $simdir = "$jobdir/sims.job";
43 :     &FIG::verify_dir($simdir);
44 :    
45 :     my $rawdir = "$simdir/sims.raw";
46 :     &FIG::verify_dir($rawdir);
47 :    
48 :     my $procdir = "$simdir/sims.proc";
49 :     &FIG::verify_dir($procdir);
50 :    
51 :     my $status_file = "$simdir/status.btree";
52 :     my %status;
53 :     my $status_tie;
54 :     if (-f $status_file)
55 :     {
56 :     $status_tie = tie %status, 'DB_File', $status_file, O_RDWR, 0, $DB_BTREE;
57 :     $status_tie or $stage->fatal("Cannot open status file $status_file: $!");
58 :     }
59 :     else
60 :     {
61 :     $status_tie = tie %status, 'DB_File', $status_file, O_RDWR | O_CREAT, 0777, $DB_BTREE;
62 :     $status_tie or $stage->fatal("Cannot create status file $status_file: $!");
63 :     }
64 :    
65 :     #
66 :     # Reuse rp_chunk_sims to split the fasta into chunks and create the task.list to keep track of them
67 :     #
68 :    
69 :     my $template = "tera-blastp-tabular";
70 :     my $target = "nr-import-" . $job->id;
71 : olson 1.2 my $chunk_size = 1_000_000;
72 : olson 1.1
73 :     #
74 :     # We first need to ensure that the NR is in place as a target.
75 :     #
76 :    
77 :     my $target_ok;
78 :     my $fh = $stage->open_file("/decypher/cli/bin/dc_target |");
79 :     while (<$fh>)
80 :     {
81 :     chomp;
82 :     if ($_ eq $target)
83 :     {
84 :     print "$target is already created\n";
85 :     $target_ok++;
86 :     last;
87 :     }
88 :     }
89 :     close($fh);
90 :    
91 :     if (!$target_ok)
92 :     {
93 :     $stage->run_process("dc_new_target_rt", "/decypher/cli/bin/dc_new_target_rt",
94 : olson 1.2 -priority => '5',
95 : olson 1.1 -template => 'format_aa_into_aa',
96 :     -source => "$jobdir/nr",
97 :     -targ => $target);
98 :     my $fh = $stage->open_file("/decypher/cli/bin/dc_target |");
99 :     while (<$fh>)
100 :     {
101 :     chomp;
102 :     if ($_ eq $target)
103 :     {
104 :     print "$target created successfully\n";
105 :     $target_ok++;
106 :     last;
107 :     }
108 :     }
109 :     close($fh);
110 :     }
111 :    
112 :     if (!$target_ok)
113 :     {
114 :     $stage->fatal("Target $target not found, and attempt to create it failed.");
115 :     }
116 :    
117 :     $stage->run_process("rp_chunk_sims", "$FIG_Config::bin/rp_chunk_sims",
118 :     "-size", $chunk_size,
119 :     "$jobdir/seqs.added", "$jobdir/nr", "$jobdir/peg.synonyms", $simdir);
120 :    
121 :     #
122 :     # Walk the task list and submit each job.
123 :     #
124 :    
125 :     my $tfh = $stage->open_file("$simdir/task.list");
126 :    
127 :     while (my $ent = <$tfh>)
128 :     {
129 :     chomp $ent;
130 :     my($id, $in, $nr, $args, $out, $err) = split(/\t/, $ent);
131 :    
132 :     my $tl_id;
133 : olson 1.2 my $fh = $stage->open_file("dc_template -priority 5 -template $template -query $in -targ $target |");
134 : olson 1.1 while (<$fh>)
135 :     {
136 :     print $_;
137 :     if (/OK.*\s+(\S+)/)
138 :     {
139 :     $tl_id = $1;
140 :     }
141 :     }
142 :     close($fh);
143 :    
144 :     if (defined($tl_id))
145 :     {
146 :     $status{'status', $id} = 'queued';
147 :     $status{'jobid', $id} = $tl_id;
148 :     print "Mapped task $id to tl id $tl_id\n";
149 :     }
150 :     else
151 :     {
152 :     warn "Could not find TL id for task $id\n";
153 :     }
154 :     }
155 :     close($tfh);
156 :    
157 :     $stage->log("completed");
158 :     $stage->set_running("no");
159 :     $stage->set_status("complete");
160 :    
161 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3