[Bio] / MGRASTBackend / mg_compute_figfam_sims.pl Repository:
ViewVC logotype

Annotation of /MGRASTBackend/mg_compute_figfam_sims.pl

Parent Directory Parent Directory | Revision Log Revision Log


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

1 : arodri7 1.1 #
2 :     # Compute one piece of sims work.
3 :     #
4 :     # Usage: rp_compute_sims sims_job_dir
5 :     #
6 :     # SGE_TASK_ID is set to the taskid to be computed.
7 :     #
8 :    
9 :     use GenomeMeta;
10 :     use FIG_Config;
11 :     use strict;
12 :     use File::Basename;
13 :     #use FortyEightMeta::SimStatusDB;
14 :     #use JobStage;
15 :     #use SGE;
16 :    
17 :     my $STAGE = 'compute_figfam_sims';
18 :    
19 :     @ARGV == 2 or die "Usage: $0 job-dir sims-job-dir\n";
20 :    
21 :     my $hostname = `hostname`;
22 :     chomp $hostname;
23 :    
24 :     my $jobdir = shift;
25 :     my $sims_jobdir = shift;
26 :    
27 :     -d $jobdir or die "$0: job dir $jobdir does not exist\n";
28 :     -d $sims_jobdir or die "$0: job dir $jobdir does not exist\n";
29 :    
30 :     #my $task_num = $ENV{SGE_TASK_ID};
31 :    
32 :     my $sims_base = basename($sims_jobdir);
33 :    
34 :     #$task_num =~ /^\d+$/ or die "$0: SGE_TASK_ID not numeric\n";
35 :    
36 :     #my $stage = new JobStage('Job48', $STAGE, $jobdir);
37 :    
38 :     #my $meta = $stage->meta;
39 :     my $job_id = basename($jobdir);
40 :    
41 :     #my $compute_exe = "$FIG_Config::bin/mg_compute_figfam_sims";
42 :     #-x $compute_exe or $stage->fatal("Executable missing: $compute_exe");
43 :    
44 :     #if ($task_num == 1 and $meta->get_metadata("status.sims") eq 'queued')
45 :     #{
46 :     # $meta->set_metadata("status.sims", "in_progress");
47 :     #}
48 :    
49 :     open(TL, "<$sims_jobdir/task.list") or die "$0: cannot open tasklist $sims_jobdir/task.list: $!\n";
50 :    
51 :     my ($fasta, $in, $fam_data, $flags, $out, $err);
52 :    
53 :     while (<TL>)
54 :     {
55 :     chomp;
56 :     my @a = split(/\t/);
57 :     #if ($a[0] == $task_num)
58 :     if ($a[0])
59 :     {
60 :     ($in, $flags, $fam_data, $fasta, $out, $err) = @a[1 .. 6];
61 :     next if (!$err);
62 :     last;
63 :     }
64 :     }
65 :     close(TL);
66 :    
67 :     $in or die "Could not find task"; # $task_num";
68 :    
69 :     #$meta->add_log_entry($0, ['running ', $task_num, $in, $nr, $flags, $out, $err]);
70 :     print "Computing on $in\n";
71 :     my $t1 = time;
72 :    
73 :     #my $blast_args = "$flags -i $in -d $nr -o $out";
74 :    
75 :     #my $status_db = FortyEightMeta::SimStatusDB->new($job_id);
76 :    
77 :     #my $rec = {};
78 :     #$rec->{sim_compute_host} = $hostname;
79 :     #$rec->{start_time} = $t1;
80 :     #$rec->{status} = 'in_progress';
81 :    
82 :     #$status_db->set_task($sims_base, $task_num, $rec);
83 :     #$rec = $status_db->get_task($sims_base, $task_num);
84 :    
85 :     #my $retries_left = $rec->{blast_retries_left};
86 :    
87 :     #$status_db->disconnect();
88 :    
89 :     open(E, ">$err") or die "Cannot open $err: $!";
90 :     open(P, "$FIG_Config::bin/compute_ff_sims $jobdir $fasta $in $out $fam_data 2>&1 |") or die "Cannot run blastall: $!";
91 :     #open(P, "/home/arodri7/FIGdisk/dist/releases/current/MGRASTBackend/scripts/compute_ff_sims.pl $jobdir $fasta $in $out $fam_data 2>&1 |") or die "Cannot run blastall: $!";
92 :    
93 :     while (<P>)
94 :     {
95 :     print;
96 :     print E $_;
97 :     }
98 :    
99 :     my $rc = close(P);
100 :     my $bang = $!;
101 :     my $ques = $?;
102 :    
103 :     my $t2 = time;
104 :     my $elap = $t2 - $t1;
105 :    
106 :     my $min = int($elap / 60);
107 :     my $sec = $elap % 60;
108 :    
109 :     printf E "%d:%02d $t1 $t2 $elap rc=$rc \$!=$bang \$?=$ques\n", $min, $sec;
110 :     printf "%d:%02d $t1 $t2 $elap rc=$rc \$!=$bang \$?=$ques\n", $min, $sec;
111 :    
112 :     #$status_db->connect();
113 :    
114 :     =head
115 :     my $rec = {};
116 :    
117 :     $rec->{end_time} = $t2;
118 :     $rec->{elap_time} = $elap;
119 :    
120 :     if (!$rc)
121 :     {
122 :     print "Close err: \$!=$bang \$?=$ques\n";
123 :     my $err;
124 :     if ($bang)
125 :     {
126 :     $err = $bang;
127 :     # $meta->add_log_entry($0, ['blastall close error', $!]);
128 :     print "Error closing blastall: $err\n";
129 :     print E "Error closing blastall: $err\n";
130 :     }
131 :     else
132 :     {
133 :     $err = $ques;
134 :     # $meta->add_log_entry($0, ['blastall nonzero exit', $err]);
135 :     print "Nonzero exit status $err from blastall\n";
136 :     print E "Nonzero exit status $err from blastall\n";
137 :     }
138 :    
139 :     #
140 :     # Error retry handling.
141 :     # Determine if we have any retries left. If so, save the run information
142 :     # in $rec->{retry}->[num], decrement the retry count, reset the
143 :     # state of the $rec, and resubmit the task.
144 :     #
145 :    
146 :     if ($retries_left > 0)
147 :     {
148 :     my $sge = new SGE;
149 :    
150 :     #$status_db->store_record_as_retry($sims_base, $task_num);
151 :    
152 :     my @sge_args;
153 :     my $jobname = "m${retries_left}$rec->{abbr}_$job_id";
154 :    
155 :     push(@sge_args, "-N $jobname");
156 :     push(@sge_args, "-v PATH");
157 :     push(@sge_args, "-e $jobdir/sge_output");
158 :     push(@sge_args, "-o $jobdir/sge_output");
159 :     push(@sge_args, "-t $task_num");
160 :     push(@sge_args, "-b yes");
161 :     #push(@sge_args, "-l low");
162 :    
163 :     my $sge_args = join(" ", @sge_args);
164 :    
165 :     my $sge_id;
166 :    
167 :     eval {
168 :     $sge_id = $sge->submit_job($meta, $sge_args, "$compute_exe $jobdir $sims_jobdir");
169 :     # print "Would submit '$sge_args' '$compute_exe' '$jobdir' '$path'\n";
170 :     };
171 :    
172 :     if ($@)
173 :     {
174 :     $stage->log($meta, "error resubmitting SGE job $compute_exe $jobdir: $@\n");
175 :     $rec->{success} = 0;
176 :     $rec->{exit_code} = $err;
177 :     $rec->{status} = 'error';
178 :     }
179 :     else
180 :     {
181 :     $rec->{status} = 'not_started';
182 :     $rec->{sim_sge_id} = $sge_id;
183 :     my $mlist = $meta->get_metadata("sims.sge_ids");
184 :     if ($mlist)
185 :     {
186 :     if (ref($mlist) eq 'ARRAY')
187 :     {
188 :     push(@$mlist, $sge_id);
189 :     }
190 :     }
191 :     else
192 :     {
193 :     $mlist = [$sge_id];
194 :     }
195 :     $meta->set_metadata("sims.sge_ids");
196 :     #
197 :     # Yes, it's a race. Not too worried.
198 :     #
199 :    
200 :     }
201 :     }
202 :     else
203 :     {
204 :     $rec->{success} = 0;
205 :     $rec->{exit_code} = $err;
206 :     $rec->{status} = 'error';
207 :     }
208 :     }
209 :     else
210 :     {
211 :     $rec->{success} = 1;
212 :     $rec->{exit_code} = $?;
213 :     $rec->{status} = 'complete';
214 :    
215 :     # $meta->add_log_entry($0, ['blastall success', $elap]);
216 :     print E "SUCCESS\n";
217 :     }
218 :     close(E);
219 :    
220 :     =cut
221 :     #$status_db->set_task($sims_base, $task_num, $rec);
222 :     #undef $status_db;
223 :    
224 :    
225 :    

MCS Webmaster
ViewVC Help
Powered by ViewVC 1.0.3