Changeset 109
- Timestamp:
- Oct 7, 2003, 11:56:12 PM (23 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/perl/src/elixir.postrun (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/perl/src/elixir.postrun
r70 r109 11 11 if ($ARGV[0] eq "state") { &state; } 12 12 if ($ARGV[0] eq "update") { &update; } 13 14 &load_state; 15 16 if ($ARGV[0] eq "imstats") { &imstats_state ("imstats"); &save_state; &goodbye; } 17 if ($ARGV[0] eq "ptolemy") { &ptolemy_state ("ptolemy"); &save_state; &goodbye; } 18 if ($ARGV[0] eq "standards") { &standards_state ("standards"); &save_state; &goodbye; } 19 if ($ARGV[0] eq "validate") { &validate_state ("validate"); &save_state; &goodbye; } 13 20 14 21 &escape ("unknown command $ARGV[0]"); … … 115 122 116 123 if ($entry eq "camera") { &camera_state ($entry); } 124 if ($entry eq "imstats") { &imstats_state ($entry); } 117 125 if ($entry eq "mkdetrend") { &detrend_state ($entry); } 118 126 if ($entry eq "mkfringe") { &detrend_state ($entry); } … … 126 134 127 135 my ($entry) = "ptolemy"; 128 129 136 $current = $state{$entry}; 130 137 if (! $current) { &escape ("error: ptolemy state not set?"); } … … 135 142 136 143 # if we can, run 'elixir complete' 137 if (($current eq "init") && ($state{"mkdetrend"} eq "done") && ($state{"mkfringe"} eq "done")) {144 if (($current eq "init") && ($state{"mkdetrend"} eq "done")) { 138 145 $state{$entry} = "running"; 139 146 &save_state; 140 147 141 148 if (-e "$fifos/complete.pid") { 142 $state{$entry} = "fail";143 &save_state;144 149 print STDERR "elixir (sex)complete already running? check pid file $fifos/complete.pid"; 145 & escape ("failed to start ptolemy");150 &save_escape ($entry, "failed to start ptolemy"); 146 151 } 147 152 148 153 if (! -d "$datdir/$runid") { mkdir ("$datdir/$runid", 0777); } 149 154 ($tmp, $start, $stop) = split (" ", `mkrun run $runid`); 150 if ($?) { & escape ("error in RUNID $runid"); }155 if ($?) { &save_escape ($entry, "error in RUNID $runid"); } 151 156 vsystem ("imsearch -type object -trange $start $stop -pt > $ptlist"); 157 if ($?) { &save_escape ($entry, "error extracting images from db"); } 152 158 vsystem ("elixir -D mode sexcomplete $ptlist >& $ptlog &"); 153 159 154 160 # wait for up to 10 seconds for $fifos/complete.pid to exist 155 161 for ($Nwait = 0; ($Nwait < 30) && (! -e "$fifos/complete.pid"); $Nwait ++) { sleep 2; } 156 if (! -e "$fifos/complete.pid") { 157 $state{$entry} = "fail"; 158 &save_state; 159 &escape ("failed to start elixir (sex)complete"); 160 } 162 if (! -e "$fifos/complete.pid") { &save_escape ($entry, "failed to start elixir (sex)complete"); } 161 163 } 162 164 … … 194 196 my ($entry) = "standards"; 195 197 $current = $state{$entry}; 198 199 print "entry: $entry\n"; 200 print "current: $current\n"; 201 196 202 if (! $current) { &escape ("error: standards state not set?"); } 197 203 … … 206 212 # insert standards in photometry database 207 213 foreach $filter (@filter) { 208 # vsystem ("addrefs -replace -v $stds/Landolt92$filter.fix $filter\_L92");209 # vsystem ("addrefs -replace -v $stds/Landolt92$filter.hq $filter\_L92_HQ");210 211 214 @words = split (" ", `filtnames $filter -cal`); 212 215 if ($words[1] == 0) { next; } … … 221 224 vsystem ("elixir.photreport $runid $catdir"); 222 225 if ($?) { goto standards_fail; } 223 226 224 227 # load lines from phot.reg files and execute: 225 228 @reglist = (); … … 398 401 $state{$entry} = "fail"; 399 402 return; 403 } 404 405 ############## 406 sub imstats_state { 407 408 my ($entry) = "imstats"; 409 $current = $state{$entry}; 410 if (! $current) { &escape ("error: imstats state not set?"); } 411 412 $fifos = `gconfig FIFOS`; chop $fifos; 413 $pid = "$fifos/imstats.pid"; 414 $end = "$fifos/imstats.pid"; 415 $ptlist = "$datdir/$runid/$runid.redo.list"; 416 $ptlog = "$datdir/$runid/$runid.redo.log"; 417 418 # if we can, run 'elixir complete' 419 if (($current eq "init") && ($state{"camera"} eq "off")) { 420 $state{$entry} = "running"; 421 &save_state; 422 423 # check for currently running imstats 424 if (-e $pid) { 425 print STDERR "elixir imstats still running?\n"; 426 print STDERR "run 'elixir -C $camera -D mode imstats -kill' to stop\n"; 427 &save_escape ($entry, "failure on imstats"); 428 } 429 430 # extract redo list, run processing 431 ($tmp, $start, $stop) = split (" ", `mkrun run $runid`); 432 if ($?) { &save_escape ($entry, "error in RUNID $runid"); } 433 vsystem ("imsearch -trange $start $stop -proc f -pt > $ptlist"); 434 if ($?) { &save_escape ($entry, "error extracting unprocessed data"); } 435 vsystem ("elixir -D mode imstats $ptlist >& $ptlog &"); 436 437 # wait for up to 10 seconds for $pid to exist 438 for ($Nwait = 0; ($Nwait < 30) && (! -e "$pid"); $Nwait ++) { sleep 2; } 439 if (! -e "$pid") { &save_escape ($entry, "failed to start elixir imstats"); } 440 } 441 442 # has 'elixir complete' finished? successfully? 443 if ($current eq "running") { 444 if (-e "$fifos/imstats.end") { 445 $answer = `wc -l $fifos/imstats.success`; 446 ($Nsuccess) = split (" ", $answer); 447 $answer = `wc -l $fifos/imstats.failure`; 448 ($Nfailure) = split (" ", $answer); 449 $answer = `wc -l $ptlist`; 450 ($Ntotal) = split (" ", $answer); 451 452 print "Ntotal: $Ntotal\n"; 453 print "Nsuccess: $Nsuccess\n"; 454 print "Nfailure: $Nfailure\n"; 455 456 if ($Nsuccess < 0.5*$Ntotal) { &save_escape ($entry, "too many failures: $Nsuccess of $Ntotal"); } 457 if ($Nsuccess + $Nfailure > $Ntotal) { &save_escape ($entry, "output list is inconsistent"); } 458 $state{$entry} = "done"; 459 &save_state; 460 return; 461 } 462 if ((! -e "$fifos/imstats.end") && (! -e "$fifos/imstats.pid")) { &save_escape ($entry, "elixir complete killed?"); } 463 } 400 464 } 401 465 … … 470 534 } 471 535 536 sub save_escape { 537 my ($entry) = $_[0]; 538 my ($message) = $_[1]; 539 $state{$entry} = "fail"; 540 &save_state; 541 &escape ($message); 542 } 543 472 544 sub elixir_config { 473 545 my (@arg) = @_; … … 554 626 555 627 @def_state = ("camera", "off", 628 "imstats", "init", 556 629 "mkdetrend", "init", 557 630 "mkfringe", "init", … … 614 687 &goodbye; 615 688 } 616 617
Note:
See TracChangeset
for help on using the changeset viewer.
