Changeset 30017
- Timestamp:
- Dec 10, 2010, 2:36:07 PM (15 years ago)
- Location:
- branches/czw_branch/20101203
- Files:
-
- 1 added
- 2 edited
-
ippScripts/scripts/nightly_science.pl (modified) (26 diffs)
-
ippTasks/nightly_science.pro (added)
-
ippconfig/recipes/nightly_science.config (modified) (22 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/czw_branch/20101203/ippScripts/scripts/nightly_science.pl
r30014 r30017 43 43 # Grab options 44 44 my ( $date, $datetime, $camera, $dbname, $logfile, $verbose, $manual); 45 my ( $help, $isburning, $force_stack_count, $ test_mode, $this_target_only, $this_filter_only, $this_mode_only, $check_mode);45 my ( $help, $isburning, $force_stack_count, $force_diff_count, $test_mode, $this_target_only, $this_filter_only, $this_mode_only, $check_mode); 46 46 my ( $registration_status, $burntool_status, $observing_status); 47 47 my ( $check_registration, $define_burntool, $queue_burntool, $check_chips, $queue_chips); … … 60 60 'test_mode' => \$test_mode, 61 61 'force_stack_count' => \$force_stack_count, 62 'force_diff_count' => \$force_diff_count, 62 63 'this_target_only=s' => \$this_target_only, 63 64 'this_filter_only=s' => \$this_filter_only, … … 88 89 --verbose 89 90 --force_stack_count Force the chip/warp counts. 91 --force_diff_count Force the chip/warp counts. 90 92 --this_target_only Process only a single target. 91 93 --this_filter_only Process only a single filter. … … 232 234 $datetime = DateTime->now(time_zone => 'UTC'); 233 235 $datetime->set_year($year); 234 $datetime->set_month($ year);235 $datetime->set_day($ year);236 $datetime->set_month($month); 237 $datetime->set_day($day); 236 238 } 237 239 } … … 275 277 } 276 278 279 $metadata_out{nsObservingState} = &get_observing_state($date); 277 280 # 278 281 # Mode selection 279 282 ################################################################################ 283 280 284 if (defined($test_mode)) { 281 285 $debug = 1; … … 304 308 } 305 309 } 310 if (defined($observing_status) || defined($test_mode)) { 311 $metadata_out{nsState} = 'CHECK_OBSERVING_STATUS'; 312 return_metadata($date); 313 unless (defined($test_mode)) { exit(0); } 314 } 315 306 316 if (defined($registration_status) || defined($test_mode)) { 307 317 &check_summit_copy($date); … … 314 324 unless (defined($test_mode)) { exit(0); } 315 325 } 316 if (defined($observing_status) || defined($test_mode)) {317 $metadata_out{nsState} = &get_observing_state($date);318 return_metadata($date);319 unless (defined($test_mode)) { exit(0); }320 }321 326 322 327 if (defined($check_dqstats) || defined($test_mode)) { … … 330 335 unless (defined($test_mode)) { exit(0); } 331 336 } 332 exit(10); 337 333 338 if (defined($check_detrends) || defined($test_mode)) { 334 $metadata_out{ns State} = 'CHECKDETRENDS';339 $metadata_out{nsDetState} = 'CHECKDETRENDS'; 335 340 &execute_detrends($date,"pretend"); 336 341 return_metadata($date); … … 338 343 } 339 344 if (defined($queue_detrends)) { 340 $metadata_out{ns State} = 'QUEUEDETRENDS';345 $metadata_out{nsDetState} = 'QUEUEDETRENDS'; 341 346 &execute_detrends($date); 342 347 return_metadata($date); … … 344 349 } 345 350 351 if (defined($clean_old) || defined($test_mode)) { 352 if (defined($test_mode)) { 353 &execute_cleans($date,"pretend"); 354 } 355 else { 356 &execute_cleans($date); 357 } 358 unless (defined($test_mode)) { exit(0); } 359 } 360 346 361 if (defined($check_stacks) || defined($test_mode)) { 347 $metadata_out{nsSta te} = 'TOWARP';348 &execute_stacks($date, "pretend");349 if ($metadata_out{nsSta te} eq 'FORCETOWARP') {350 $metadata_out{nsSta te} = 'TOWARP';362 $metadata_out{nsStackState} = 'TOWARP'; 363 &execute_stacks($date,$metadata_out{nsObservingState},"pretend"); 364 if ($metadata_out{nsStackState} eq 'FORCETOWARP') { 365 $metadata_out{nsStackState} = 'TOWARP'; 351 366 } 352 367 return_metadata($date); … … 354 369 } 355 370 if (defined($queue_stacks)) { 356 $metadata_out{nsSta te} = 'STACKING';357 &execute_stacks($date );358 if ($metadata_out{nsSta te} eq 'QUEUESTACKING') {359 $metadata_out{nsSta te} = 'STACKING_POSSIBLE_ERROR';371 $metadata_out{nsStackState} = 'STACKING'; 372 &execute_stacks($date,$metadata_out{nsObservingState}); 373 if ($metadata_out{nsStackState} eq 'QUEUESTACKING') { 374 $metadata_out{nsStackState} = 'STACKING_POSSIBLE_ERROR'; 360 375 } 361 376 return_metadata($date); … … 364 379 365 380 if (defined($check_diffs) || defined($test_mode)) { 366 $metadata_out{ns State} = 'TOWARP';367 &execute_diffs($date, "pretend");368 if ($metadata_out{ns State} eq 'FORCETOWARP') {369 $metadata_out{ns State} = 'TOWARP';381 $metadata_out{nsDiffState} = 'TOWARP'; 382 &execute_diffs($date,$metadata_out{nsObservingState},"pretend"); 383 if ($metadata_out{nsDiffState} eq 'FORCETOWARP') { 384 $metadata_out{nsDiffState} = 'TOWARP'; 370 385 } 371 386 return_metadata($date); … … 373 388 } 374 389 if (defined($queue_diffs)) { 375 $metadata_out{ns State} = 'STACKING';376 &execute_diffs($date );377 if ($metadata_out{ns State} eq 'QUEUESTACKING') {378 $metadata_out{ns State} = 'STACKING_POSSIBLE_ERROR';390 $metadata_out{nsDiffState} = 'DIFFING'; 391 &execute_diffs($date,$metadata_out{nsObservingState}); 392 if ($metadata_out{nsDiffState} eq 'QUEUESTACKING') { 393 $metadata_out{nsDiffState} = 'STACKING_POSSIBLE_ERROR'; 379 394 } 380 395 return_metadata($date); 381 396 exit(0); 382 397 } 383 398 exit(10); 384 399 if (defined($check_confirm_stacks) || defined($test_mode)) { 385 $metadata_out{nsSta te} = 'CONFIRM_STACKING';400 $metadata_out{nsStackState} = 'CONFIRM_STACKING'; 386 401 &confirm_stacks($date,"pretend"); 387 402 return_metadata($date); … … 389 404 } 390 405 if (defined($confirm_stacks)) { 391 $metadata_out{nsSta te} = 'CONFIRM_STACKING';406 $metadata_out{nsStackState} = 'CONFIRM_STACKING'; 392 407 &confirm_stacks($date); 393 408 return_metadata($date); … … 396 411 397 412 if (defined($check_sweetspot) || defined($test_mode) || defined($check_mode)) { 398 $metadata_out{nsS tate} = 'CHECKSWEETSPOT';413 $metadata_out{nsSSState} = 'CHECKSWEETSPOT'; 399 414 &execute_sweetspot($date,"pretend"); 400 415 return_metadata($date); … … 402 417 } 403 418 if (defined($queue_sweetspot)) { 404 $metadata_out{nsS tate} = 'CHECKSWEETSPOT';419 $metadata_out{nsSSState} = 'CHECKSWEETSPOT'; 405 420 &execute_sweetspot($date); 406 421 return_metadata($date); … … 408 423 } 409 424 410 if (defined($clean_old) || defined($test_mode)) {411 if (defined($test_mode)) {412 &execute_cleans($date,"pretend");413 }414 else {415 &execute_cleans($date);416 }417 unless (defined($test_mode)) { exit(0); }418 }419 425 exit(0); 420 426 # … … 488 494 if ($Nsummit_exps == 0) { 489 495 print STDERR "No exposures were found on the summit for $date.\n"; 490 $metadata_out{ns State} = 'DROP';496 $metadata_out{nsRegState} = 'DROP'; 491 497 } 492 498 elsif ($Nfaults != 0) { 493 499 print STDERR "There were faults while downloading the exposures for $date.\n"; 494 $metadata_out{ns State} = 'NEW';500 $metadata_out{nsRegState} = 'NEW'; 495 501 } 496 502 elsif ($Ndownload_imfiles != $Nsummit_imfiles) { 497 503 print STDERR "Not done downloading from the summit for $date (Summit: $Nsummit_imfiles, Downloaded: $Ndownload_imfiles)\n"; 498 $metadata_out{ns State} = 'NEW';504 $metadata_out{nsRegState} = 'NEW'; 499 505 } 500 506 else { 501 507 print STDERR "Summit copy and Registration have succeeded for $date.\n"; 502 $metadata_out{ns State} = 'REGISTERED';508 $metadata_out{nsRegState} = 'REGISTERED'; 503 509 } 504 510 … … 721 727 } 722 728 } 723 # #724 # #Detrend verification725 # ################################################################################726 727 #sub construct_dettool_cmd {728 #my $date = shift;729 #my $target = shift;730 731 #my ($label,$workdir,$filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN) = get_dettool_parameters($date,$target);732 733 #my $select = "-select_dateobs_begin ${date}T00:00:00 -select_dateobs_end ${date}T23:59:59 ";734 #my $use_limits = " -use_begin ${date}T00:00:00 -use_end ${date}T23:59:59 ";735 #$date =~ s/-//g;736 737 #my $cmd = "$dettool";738 # #$cmd .= " -pretend ";739 #$cmd .= " -simple -dbname $dbname -definebyquery -det_type $det_type ";740 #$cmd .= " -mode verify -ref_det_id $ref_det_id -ref_iter $ref_iter ";741 #$cmd .= " $select ";742 #$cmd .= " -inst $camera ";743 #$cmd .= " -select_exp_type $exp_type ";744 #$cmd .= " -select_filter $filter " if defined($filter);745 #$cmd .= " -workdir $workdir ";746 #$cmd .= " -label $label ";747 #$cmd .= " $use_limits ";748 #if ($maxN > 0) {749 #$cmd .= " -random_subset -random_limit $maxN ";750 #}751 #if ($debug == 1) {752 #$cmd .= ' -pretend ';753 #}754 #print STDERR "$cmd\n";755 #return($cmd);756 #}757 758 #sub verify_uniqueness_detverify {759 #my $date = shift;760 #my $target = shift;761 762 #my ($label,$workdir,$filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN) = get_dettool_parameters($date,$target);763 764 #my $db = init_gpc_db();765 #my $sth = "SELECT * FROM detRun WHERE workdir = '$workdir' AND ref_det_id = $ref_det_id AND ref_iter = $ref_iter";766 #my $data_ref = $db->selectall_arrayref( $sth );767 768 #return($#{ $data_ref } + 1);769 #}770 771 #sub pre_detrend_queue {772 #my $date = shift;773 #my $target = shift;774 775 #my $command = construct_dettool_cmd($date,$target) . ' -pretend ';776 #my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =777 #run ( command => $command, verbose => $verbose);778 #unless ($success) {779 #$error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);780 #&my_die("Unable to perform dettool: $error_code", 0,0, $date, $PS_EXIT_SYS_ERROR);781 #}782 783 #my @input_exposures = split /\n/, (join '', @$stdout_buf);784 #return($#input_exposures + 1);785 #}786 787 #sub detrend_queue {788 #my $date = shift;789 #my $target = shift;790 791 #my $command = construct_dettool_cmd($date,$target);792 #my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =793 #run ( command => $command, verbose => $verbose);794 #unless ($success) {795 #$error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);796 #&my_die("Unable to perform chiptool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR);797 #}798 # $metadata_out{nsState} = 'DETREND_QUEUED';799 #return(0);800 801 #}802 #sub execute_detrends {803 #my $date = shift;804 #my $pretend = shift;805 #my $exposures = 0;806 # foreach my $target (@detrend_list) {807 #my ($Nexposures) = pre_detrend_queue($date,$target);808 #if ($Nexposures == 0) {809 #print STDERR "execute_detrends: Target $target on $date had no exposures.\n";810 #next;811 #}812 #$exposures++;813 #unless(defined($pretend)) {814 #detrend_queue($date,$target);815 #}816 #if (defined($pretend)) {817 #add_to_macro_list('check_detrends',1,$date,$target,"dettool");818 #}819 #else {820 #add_to_macro_list('queue_detrends',1,$date,$target,"dettool");821 #}822 #}823 #if ($exposures == 0) {824 # $metadata_out{nsState} = 'DETREND_DROP';825 #}826 # if (($metadata_out{nsState} eq 'CHECKDETRENDS') && ($exposures > 0)) {827 # $metadata_out{nsState} eq 'QUEUEDETRENDS';828 #}829 #}729 # 730 # Detrend verification 731 ################################################################################ 732 733 sub construct_dettool_cmd { 734 my $date = shift; 735 my $target = shift; 736 737 my ($label,$workdir,$filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN) = get_dettool_parameters($date,$target); 738 739 my $select = "-select_dateobs_begin ${date}T00:00:00 -select_dateobs_end ${date}T23:59:59 "; 740 my $use_limits = " -use_begin ${date}T00:00:00 -use_end ${date}T23:59:59 "; 741 $date =~ s/-//g; 742 743 my $cmd = "$dettool"; 744 # $cmd .= " -pretend "; 745 $cmd .= " -simple -dbname $dbname -definebyquery -det_type $det_type "; 746 $cmd .= " -mode verify -ref_det_id $ref_det_id -ref_iter $ref_iter "; 747 $cmd .= " $select "; 748 $cmd .= " -inst $camera "; 749 $cmd .= " -select_exp_type $exp_type "; 750 $cmd .= " -select_filter $filter " if defined($filter); 751 $cmd .= " -workdir $workdir "; 752 $cmd .= " -label $label "; 753 $cmd .= " $use_limits "; 754 if ($maxN > 0) { 755 $cmd .= " -random_subset -random_limit $maxN "; 756 } 757 if ($debug == 1) { 758 $cmd .= ' -pretend '; 759 } 760 print STDERR "$cmd\n"; 761 return($cmd); 762 } 763 764 sub verify_uniqueness_detverify { 765 my $date = shift; 766 my $target = shift; 767 768 my ($label,$workdir,$filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN) = get_dettool_parameters($date,$target); 769 770 my $db = init_gpc_db(); 771 my $sth = "SELECT * FROM detRun WHERE workdir = '$workdir' AND ref_det_id = $ref_det_id AND ref_iter = $ref_iter"; 772 my $data_ref = $db->selectall_arrayref( $sth ); 773 774 return($#{ $data_ref } + 1); 775 } 776 777 sub pre_detrend_queue { 778 my $date = shift; 779 my $target = shift; 780 781 my $command = construct_dettool_cmd($date,$target) . ' -pretend '; 782 my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 783 run ( command => $command, verbose => $verbose); 784 unless ($success) { 785 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 786 &my_die("Unable to perform dettool: $error_code", 0,0, $date, $PS_EXIT_SYS_ERROR); 787 } 788 789 my @input_exposures = split /\n/, (join '', @$stdout_buf); 790 return($#input_exposures + 1); 791 } 792 793 sub detrend_queue { 794 my $date = shift; 795 my $target = shift; 796 797 my $command = construct_dettool_cmd($date,$target); 798 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 799 run ( command => $command, verbose => $verbose); 800 unless ($success) { 801 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 802 &my_die("Unable to perform chiptool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR); 803 } 804 $metadata_out{nsDetState} = 'DETREND_QUEUED'; 805 return(0); 806 807 } 808 sub execute_detrends { 809 my $date = shift; 810 my $pretend = shift; 811 my $exposures = 0; 812 foreach my $target (sort (keys %detrend_config)) { 813 my ($Nexposures) = pre_detrend_queue($date,$target); 814 if ($Nexposures == 0) { 815 print STDERR "execute_detrends: Target $target on $date had no exposures.\n"; 816 next; 817 } 818 $exposures++; 819 unless(defined($pretend)) { 820 detrend_queue($date,$target); 821 } 822 if (defined($pretend)) { 823 add_to_macro_list('check_detrends',1,$date,$target,"dettool"); 824 } 825 else { 826 add_to_macro_list('queue_detrends',1,$date,$target,"dettool"); 827 } 828 } 829 if ($exposures == 0) { 830 $metadata_out{nsDetState} = 'DETREND_DROP'; 831 } 832 if (($metadata_out{nsDetState} eq 'CHECKDETRENDS') && ($exposures > 0)) { 833 $metadata_out{nsDetState} eq 'QUEUEDETRENDS'; 834 } 835 } 830 836 831 837 # # … … 938 944 # if ($Nstacks == 0) { 939 945 # print STDERR "execute_sweetspot: No new stacks to make ($Nstacks)\n"; 940 # $metadata_out{nsS tate} = 'SS_EMPTY';946 # $metadata_out{nsSSState} = 'SS_EMPTY'; 941 947 # return(); 942 948 # } 943 949 # if ($Nstacks < 10) { 944 950 # print STDERR "execute_sweetspot: Too few new stacks to make ($Nstacks)\n"; 945 # $metadata_out{nsS tate} = 'SS_FEW';951 # $metadata_out{nsSSState} = 'SS_FEW'; 946 952 # return(); 947 953 # } 948 954 # if ($is_lunation_date == 0) { 949 955 # print STDERR "execute_sweetspot: Invalid lunation date. ($date $is_lunation_date)\n"; 950 # $metadata_out{nsS tate} = 'SS_ERROR';956 # $metadata_out{nsSSState} = 'SS_ERROR'; 951 957 # return(); 952 958 # } 953 # $metadata_out{nsS tate} = 'SS_QUEUE';959 # $metadata_out{nsSSState} = 'SS_QUEUE'; 954 960 # $metadata_out{nsSweetSpot} = $Nstacks; 955 961 # unless(defined($pretend)) { 956 # $metadata_out{nsS tate} = 'SS_DONE';962 # $metadata_out{nsSSState} = 'SS_DONE'; 957 963 # sweetspot_queue($date); 958 964 # } … … 965 971 # } 966 972 967 # # 968 # # Stacking 969 # ################################################################################ 970 971 # sub construct_stacktool_cmd { 972 # my $date = shift; 973 # my $target = shift; 974 # my $filter = shift; 975 976 # my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 977 978 # my $select = "-select_dateobs_begin ${date}T00:00:00 -select_dateobs_end ${date}T23:59:59 "; 979 # $date =~ s/-//g; 980 981 # my $cmd = "$stacktool"; 982 # # $cmd .= ' -pretend -simple -dbname gpc1 -definebyquery -min_new 4 '; # Probably silly, but I want to be safe and not overwrite 983 # $cmd .= " -simple -dbname $dbname -definebyquery "; 984 # $cmd .= " -set_label $label -select_label $label "; 985 # $cmd .= " -set_workdir $workdir -set_dist_group $dist_group "; 986 # $cmd .= " -select_filter $filter -set_data_group $data_group "; 987 # $cmd .= " -min_num 4"; 988 # $cmd .= " -select_good_frac_min 0.05"; 989 # $cmd .= " $select "; 990 # if ($debug == 1) { 991 # $cmd .= ' -pretend '; 992 # } 993 # print STDERR "$cmd\n"; 994 # return($cmd); 995 # } 996 997 # sub verify_uniqueness_stack { 998 # my $skycell = shift; 999 # my $date = shift; 1000 # my $target = shift; 1001 # my $filter = shift; 1002 1003 # my $db = init_gpc_db(); 1004 # $date =~ s/-//g; 1005 # my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1006 1007 # my $sth = "SELECT skycell_id from stackRun where data_group = '$data_group' AND skycell_id = '$skycell' AND filter = '$filter' AND tess_id = '$tess_id'"; 1008 # my $data_ref = $db->selectall_arrayref( $sth ); 1009 1010 # return($#{ $data_ref } + 1); 1011 # } 1012 1013 # sub pre_stack_queue { 1014 # my $date = shift; 1015 # my $target = shift; 1016 # my $filter = shift; 1017 1018 # my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1019 # # check warp stage == chip stage 1020 # my $db = init_gpc_db(); 1021 1022 # my $trunc_date = $date; $trunc_date =~ s/-//g; 1023 1024 # my $where = " label = '$label' AND data_group = '$data_group' "; 1025 1026 # my $where_possibly_faulted = $where . " AND ( " ; 1027 # foreach my $acceptable_quality (@unrecoverable_quality) { 1028 # $where_possibly_faulted .= " quality = $acceptable_quality OR "; 1029 # } 1030 # $where_possibly_faulted .= " 0 )"; 1031 1032 # my $chip_sth = "SELECT * from chipRun WHERE (state = 'full' OR state = 'new') AND $where "; 1033 # my $cam_sth = "SELECT * from camRun JOIN camProcessedExp USING(cam_id) WHERE state = 'full' AND $where_possibly_faulted "; 1034 # my $warp_sth = "SELECT * from warpRun WHERE state = 'full' AND $where "; 1035 1036 # my $chip_ref = $db->selectall_arrayref( $chip_sth ); 1037 # my $cam_ref = $db->selectall_arrayref( $cam_sth ); 1038 # my $warp_ref = $db->selectall_arrayref( $warp_sth ); 1039 1040 # # check that we will be able to queue them up 1041 # my $command = construct_stacktool_cmd($date,$target,$filter) . ' -pretend '; 1042 # my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1043 # run ( command => $command, verbose => $verbose ); 1044 # unless ($success) { 1045 # $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1046 # &my_die("Unable to perform stacktool: $error_code", $#{ $chip_ref },$#{ $warp_ref },$date, $PS_EXIT_SYS_ERROR); 1047 # } 1048 1049 # my $Nalready = 0; 1050 1051 # my @input_exposures = split /\n/, (join '', @$stdout_buf); 1052 # foreach my $entry (@input_exposures) { 1053 # my ($warp_tess_id,$skycell, @trash) = split /\s+/, $entry; 1054 # @trash = verify_uniqueness_stack($skycell,$date,$target,$filter); 1055 # $Nalready += $trash[0]; 1056 # } 1057 1058 # return($#input_exposures + 1, $#{ $chip_ref } + 1, $#{ $cam_ref } + $#{ $warp_ref } + 2, $Nalready); 1059 # } 1060 1061 # sub stack_queue { 1062 # my $date = shift; 1063 # my $target = shift; 1064 # my $filter = shift; 1065 1066 # my $command = construct_stacktool_cmd($date,$target,$filter); 1067 # my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1068 # run ( command => $command, verbose => $verbose ); 1069 # unless ($success) { 1070 # $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1071 # &my_die("Unable to perform stacktool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR); 1072 # } 1073 1074 1075 # return(0); 1076 # } 1077 1078 # sub execute_stacks { 1079 # my $date = shift; 1080 # my $pretend = shift; 1081 # foreach my $target (@target_list) { 1082 # foreach my $filter (@filter_list) { 1083 # if (exists($extra_processing{$target})) { 1084 # my ($Nexposures,$NprocChips,$NprocWarps,$Nalready) = pre_stack_queue($date,$target,$filter); 1085 # if ((!defined($force_stack_count))&&($NprocChips != $NprocWarps)) { # This makes me sad. :( 1086 # next; 1087 # } 1088 # if ($Nexposures == 0) { 1089 # if ($debug == 1) { 1090 # print STDERR "execute_stacks: Target $target in filter $filter on $date has no exposures.\n"; 1091 # } 1092 # next; 1093 # } 1094 # else { 1095 # do_extra_processing($date,$target,$filter,$pretend); 1096 # } 1097 1098 # } 1099 # if ($science_config{$target}{STACKABLE} == 1) { 1100 # my ($Nexposures,$NprocChips,$NprocWarps,$Nalready) = pre_stack_queue($date,$target,$filter); 1101 # if ((!defined($force_stack_count))&&($NprocChips != $NprocWarps)) { # This makes me sad. :( 1102 # if ($debug == 1) { 1103 # print STDERR "execute_stacks: Target $target on $date is not fully processed. ($NprocChips $NprocWarps)\n"; 1104 # } 1105 # $metadata_out{nsState} = 'FORCETOWARP'; 1106 # next; 1107 # } 1108 # if ($Nexposures == 0) { 1109 # if ($debug == 1) { 1110 # print STDERR "execute_stacks: Target $target in filter $filter on $date has no exposures.\n"; 1111 # } 1112 # next; 1113 # } 1114 # if ($Nalready != 0) { 1115 # if ($debug == 1) { 1116 # print STDERR "execute_stacks: Not queueing $target in filter $filter on $date due to already existing stacks.\n"; 1117 # } 1118 # unless ($metadata_out{nsState} eq 'FORCETOWARP') { 1119 # $metadata_out{nsState} = 'STACKING'; 1120 # } 1121 # next; 1122 # } 1123 # unless (($metadata_out{nsState} eq 'FORCETOWARP')||($metadata_out{nsState} eq 'STACKING')) { 1124 # $metadata_out{nsState} = 'QUEUESTACKS'; 1125 # } 1126 # unless(defined($pretend)) { 1127 # if ($debug == 1) { 1128 # print STDERR "execute_stacks: Target $target in filter $filter on $date has exposures and will be queued.\n"; 1129 # } 1130 # stack_queue($date,$target,$filter); 1131 # } 1132 # if (defined($pretend)) { 1133 # add_to_macro_list('check_stacks',$stackable_list{$target},$date,$target,$filter); 1134 # } 1135 # else { 1136 # add_to_macro_list('queue_stacks',$stackable_list{$target},$date,$target,$filter); 1137 # } 1138 # } 1139 # else { 1140 # # print STDERR "execute_stacks: Target $target is not auto-stackable.\n"; 1141 # } 1142 # } 1143 # } 1144 # } 1145 1146 # sub post_stack_queue { 1147 # my $date = shift; 1148 # my $target = shift; 1149 1150 # my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1151 # # check warp stage == chip stage 1152 # my $db = init_gpc_db(); 1153 1154 # my $trunc_date = $date; $trunc_date =~ s/-//g; 1155 1156 # my $where = " label = '$label' AND data_group = '$data_group' "; 1157 1158 # my $stack_full_sth = "SELECT * from stackRun where $where "; 1159 # my $stack_done_sth = "SELECT * from stackRun LEFT JOIN stackSumSkyfile USING(stack_id) WHERE $where "; 1160 # $stack_done_sth .= " AND ((state = 'full') OR (state = 'new' && fault != 0)) "; 1161 # if ($debug == 1) { 1162 # print STDERR "post_stack_queue: database queries:\n"; 1163 # print STDERR "$stack_full_sth\n"; 1164 # print STDERR "$stack_done_sth\n"; 1165 # } 1166 # my $stack_full_ref = $db->selectall_arrayref( $stack_full_sth ); 1167 # my $stack_done_ref = $db->selectall_arrayref( $stack_done_sth ); 1168 1169 # return($#{ $stack_full_ref } + 1, $#{ $stack_done_ref } + 1); 1170 # } 1171 1172 # sub confirm_stacks { 1173 # my $date = shift; 1174 # my $pretend = shift; 1175 1176 # foreach my $target (@target_list) { 1177 # if ($stackable_list{$target} == 1) { 1178 # my ($Nstacks, $Nattempted) = post_stack_queue($date,$target); 1179 # if ($debug == 1) { 1180 # print STDERR "confirm_stacks: Target $target on $date has $Nattempted attempts on $Nstacks.\n"; 1181 # } 1182 # if ($Nstacks != $Nattempted) { 1183 # if ($debug == 1) { 1184 # print STDERR "confirm_stacks: Target $target on $date is not done stacking. $Nstacks $Nattempted\n"; 1185 # } 1186 # if ($metadata_out{nsState} eq 'CONFIRM_STACKING') { 1187 # $metadata_out{nsState} = 'STACKING'; 1188 # } 1189 # next; 1190 # } 1191 # if ($Nstacks == 0) { 1192 # if ($debug == 1) { 1193 # print STDERR "confirm_stacks: Target $target on $date has no stacks. Skipping.\n"; 1194 # } 1195 # next; 1196 # } 1197 # if ($metadata_out{nsState} eq 'CONFIRM_STACKING') { 1198 # if (defined($pretend)) { 1199 # add_to_macro_list('check_confirm_stacks',$stackable_list{$target},$date,$target); 1200 # } 1201 # else { 1202 # add_to_macro_list('confirm_stacks',$stackable_list{$target},$date,$target); 1203 # } 1204 # } 1205 # } 1206 # } 1207 # } 1208 1209 # # 1210 # # Extra processing 1211 # ################################################################################ 1212 1213 # sub verify_uniqueness_diff { 1214 # my $warp_id_1 = shift; 1215 # my $warp_id_2 = shift; 1216 # my $date = shift; 1217 # my $target = shift; 1218 1219 # my $db = init_gpc_db(); 1220 # $date =~ s/-//g; 1221 # my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1222 1223 # my $sth = "SELECT diff_id from diffRun JOIN diffInputSkyfile USING(diff_id) where data_group = '$data_group' AND warp1 = $warp_id_1 AND warp2 = $warp_id_2"; 1224 # my $data_ref = $db->selectall_arrayref( $sth ); 1225 1226 # return($#{ $data_ref } + 1); 1227 # } 1228 1229 # sub do_extra_processing { 1230 # my $date = shift; 1231 # my $target = shift; 1232 # my $filter = shift; 1233 # my $pretend = shift; 1234 # my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1235 1236 # if ($target eq 'OSS') { 1237 # my $db = init_gpc_db(); 1238 1239 # my $obj_sth = "select DISTINCT rawExp.object from warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) "; 1240 # $obj_sth .= " WHERE warpRun.state = 'full' AND warpRun.label = '$label' AND warpRun.data_group = '$data_group' AND rawExp.filter = '$filter' ORDER BY rawExp.object"; 1241 # print STDERR "$obj_sth\n"; 1242 # my $object_ref = $db->selectall_arrayref( $obj_sth ); 1243 1244 # foreach my $object_row (@{ $object_ref }) { 1245 # my $this_object = shift @{ $object_row }; 1246 # my $input_sth = "select exp_id,warp_id,dateobs from warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) "; 1247 # $input_sth .= " WHERE warpRun.state = 'full' AND warpRun.label = '$label' AND warpRun.data_group = '$data_group' AND rawExp.filter = '$filter' AND rawExp.object = '$this_object' "; 1248 # $input_sth .= " ORDER BY dateobs "; 1249 1250 # my $warps = $db->selectall_arrayref( $input_sth ); 973 # 974 # Stacking 975 ################################################################################ 976 977 978 sub construct_stacktool_cmd { 979 my $date = shift; 980 my $target = shift; 981 my $filter = shift; 982 983 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 984 985 my $select = "-select_dateobs_begin ${date}T00:00:00 -select_dateobs_end ${date}T23:59:59 "; 986 $date =~ s/-//g; 987 988 my $cmd = "$stacktool"; 989 # $cmd .= ' -pretend -simple -dbname gpc1 -definebyquery -min_new 4 '; # Probably silly, but I want to be safe and not overwrite 990 $cmd .= " -simple -dbname $dbname -definebyquery "; 991 $cmd .= " -set_label $label -select_label $label "; 992 $cmd .= " -set_workdir $workdir -set_dist_group $dist_group "; 993 $cmd .= " -select_filter $filter -set_data_group $data_group "; 994 $cmd .= " -min_num 4"; 995 $cmd .= " -select_good_frac_min 0.05"; 996 $cmd .= " $select "; 997 if ($debug == 1) { 998 $cmd .= ' -pretend '; 999 } 1000 print STDERR "$cmd\n"; 1001 return($cmd); 1002 } 1003 1004 sub verify_uniqueness_stack { 1005 my $skycell = shift; 1006 my $date = shift; 1007 my $target = shift; 1008 my $filter = shift; 1009 1010 my $db = init_gpc_db(); 1011 $date =~ s/-//g; 1012 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1013 1014 my $sth = "SELECT skycell_id from stackRun where data_group = '$data_group' AND skycell_id = '$skycell' AND filter = '$filter' AND tess_id = '$tess_id'"; 1015 my $data_ref = $db->selectall_arrayref( $sth ); 1016 1017 return($#{ $data_ref } + 1); 1018 } 1019 1020 sub pre_stack_queue { 1021 my $date = shift; 1022 my $observing_state = shift; 1023 my $target = shift; 1024 my $filter = shift; 1025 1026 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1027 1028 my $db = init_gpc_db(); 1029 1030 my $trunc_date = $date; $trunc_date =~ s/-//g; 1031 1032 my $where = " label = '$label' AND data_group = '$data_group' "; 1033 1034 my $where_possibly_faulted = $where . " AND ( " ; 1035 foreach my $acceptable_quality (@unrecoverable_quality) { 1036 $where_possibly_faulted .= " quality = $acceptable_quality OR "; 1037 } 1038 $where_possibly_faulted .= " 0 )"; 1039 1040 my $chip_sth = "SELECT * from chipRun WHERE (state = 'full' OR state = 'new') AND $where "; 1041 my $cam_sth = "SELECT * from camRun JOIN camProcessedExp USING(cam_id) WHERE state = 'full' AND $where_possibly_faulted "; 1042 my $warp_sth = "SELECT * from warpRun WHERE state = 'full' AND $where "; 1043 1044 my $chip_ref = $db->selectall_arrayref( $chip_sth ); 1045 my $cam_ref = $db->selectall_arrayref( $cam_sth ); 1046 my $warp_ref = $db->selectall_arrayref( $warp_sth ); 1047 1048 # check that we will be able to queue them up 1049 my $command = construct_stacktool_cmd($date,$target,$filter) . ' -pretend '; 1050 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1051 run ( command => $command, verbose => $verbose ); 1052 unless ($success) { 1053 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1054 &my_die("Unable to perform stacktool: $error_code", $#{ $chip_ref },$#{ $warp_ref },$date, $PS_EXIT_SYS_ERROR); 1055 } 1056 1057 my $Nalready = 0; 1058 1059 my @input_exposures = split /\n/, (join '', @$stdout_buf); 1060 foreach my $entry (@input_exposures) { 1061 my ($warp_tess_id,$skycell, @trash) = split /\s+/, $entry; 1062 @trash = verify_uniqueness_stack($skycell,$date,$target,$filter); 1063 $Nalready += $trash[0]; 1064 } 1065 1066 my $minimum_required_warp; 1067 if ($observing_state eq 'OBSERVING') { 1068 $minimum_required_warp = $science_config{$target}{MIN_STACK}; 1069 } 1070 unless (defined($minimum_required_warp)) { 1071 $minimum_required_warp = 0; 1072 } 1073 1074 return($#input_exposures + 1, $#{ $chip_ref } + 1, $#{ $cam_ref } + $#{ $warp_ref } + 2, $minimum_required_warp, $Nalready); 1075 } 1076 1077 sub stack_queue { 1078 my $date = shift; 1079 my $target = shift; 1080 my $filter = shift; 1081 1082 my $command = construct_stacktool_cmd($date,$target,$filter); 1083 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1084 run ( command => $command, verbose => $verbose ); 1085 unless ($success) { 1086 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1087 &my_die("Unable to perform stacktool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR); 1088 } 1089 1090 1091 return(0); 1092 } 1093 1094 sub execute_stacks { 1095 my $date = shift; 1096 my $observing_state = shift; 1097 my $pretend = shift; 1098 1099 foreach my $target (sort (keys %science_config)) { 1100 if ($science_config{$target}{STACKABLE} == 1) { 1101 foreach my $filter (@filter_list) { 1102 my ($Nexposures,$NprocChips,$NprocWarps,$NrequiredWarps,$Nalready) = pre_stack_queue($date,$observing_state,$target,$filter); 1103 if ((!defined($force_stack_count))&&($NprocChips != $NprocWarps)) { # This makes me sad. :( 1104 if ($debug == 1) { 1105 print STDERR "execute_stacks: Target $target on $date is not fully processed. ($NprocChips $NprocWarps)\n"; 1106 } 1107 $metadata_out{nsStackState} = 'FORCETOWARP'; 1108 next; 1109 } 1110 if ($Nexposures == 0) { 1111 if ($debug == 1) { 1112 print STDERR "execute_stacks: Target $target in filter $filter on $date has no exposures.\n"; 1113 } 1114 next; 1115 } 1116 if ($NprocWarps < $NrequiredWarps) { 1117 if ($debug == 1) { 1118 print STDERR "execute_stacks: Target $target in filter $filter on $date has too few warps to begin stacking. ($NprocWarps $NrequiredWarps)\n"; 1119 } 1120 next; 1121 } 1122 if ($Nalready != 0) { 1123 if ($debug == 1) { 1124 print STDERR "execute_stacks: Not queueing $target in filter $filter on $date due to already existing stacks.\n"; 1125 } 1126 unless ($metadata_out{nsStackState} eq 'FORCETOWARP') { 1127 $metadata_out{nsStackState} = 'STACKING'; 1128 } 1129 next; 1130 } 1131 unless (($metadata_out{nsStackState} eq 'FORCETOWARP')||($metadata_out{nsStackState} eq 'STACKING')) { 1132 $metadata_out{nsStackState} = 'QUEUESTACKS'; 1133 } 1134 unless(defined($pretend)) { 1135 if ($debug == 1) { 1136 print STDERR "execute_stacks: Target $target in filter $filter on $date has exposures and will be queued.\n"; 1137 } 1138 stack_queue($date,$target,$filter); 1139 } 1140 if (defined($pretend)) { 1141 add_to_macro_list('check_stacks',$science_config{$target}{STACKABLE},$date,$target,$filter); 1142 } 1143 else { 1144 add_to_macro_list('queue_stacks',$science_config{$target}{STACKABLE},$date,$target,$filter); 1145 } 1146 } 1147 } 1148 else { 1149 if ($debug == 1) { 1150 print STDERR "execute_stacks: Target $target is not auto-stackable.\n"; 1151 } 1152 } 1153 } 1154 } 1155 1156 sub post_stack_queue { 1157 my $date = shift; 1158 my $target = shift; 1159 1160 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1161 # check warp stage == chip stage 1162 my $db = init_gpc_db(); 1163 1164 my $trunc_date = $date; $trunc_date =~ s/-//g; 1165 1166 my $where = " label = '$label' AND data_group = '$data_group' "; 1167 1168 my $stack_full_sth = "SELECT * from stackRun where $where "; 1169 my $stack_done_sth = "SELECT * from stackRun LEFT JOIN stackSumSkyfile USING(stack_id) WHERE $where "; 1170 $stack_done_sth .= " AND ((state = 'full') OR (state = 'new' && fault != 0)) "; 1171 if ($debug == 1) { 1172 print STDERR "post_stack_queue: database queries:\n"; 1173 print STDERR "$stack_full_sth\n"; 1174 print STDERR "$stack_done_sth\n"; 1175 } 1176 my $stack_full_ref = $db->selectall_arrayref( $stack_full_sth ); 1177 my $stack_done_ref = $db->selectall_arrayref( $stack_done_sth ); 1178 1179 return($#{ $stack_full_ref } + 1, $#{ $stack_done_ref } + 1); 1180 } 1181 1182 sub confirm_stacks { 1183 my $date = shift; 1184 my $pretend = shift; 1185 1186 foreach my $target (sort (keys %science_config)) { 1187 if ($science_config{$target}{STACKABLE} == 1) { 1188 my ($Nstacks, $Nattempted) = post_stack_queue($date,$target); 1189 if ($debug == 1) { 1190 print STDERR "confirm_stacks: Target $target on $date has $Nattempted attempts on $Nstacks.\n"; 1191 } 1192 if ($Nstacks != $Nattempted) { 1193 if ($debug == 1) { 1194 print STDERR "confirm_stacks: Target $target on $date is not done stacking. $Nstacks $Nattempted\n"; 1195 } 1196 if ($metadata_out{nsStackState} eq 'CONFIRM_STACKING') { 1197 $metadata_out{nsStackState} = 'STACKING'; 1198 } 1199 next; 1200 } 1201 if ($Nstacks == 0) { 1202 if ($debug == 1) { 1203 print STDERR "confirm_stacks: Target $target on $date has no stacks. Skipping.\n"; 1204 } 1205 next; 1206 } 1207 if ($metadata_out{nsStackState} eq 'CONFIRM_STACKING') { 1208 if (defined($pretend)) { 1209 add_to_macro_list('check_confirm_stacks',$science_config{$target}{STACKABLE},$date,$target); 1210 } 1211 else { 1212 add_to_macro_list('confirm_stacks',$science_config{$target}{STACKABLE},$date,$target); 1213 } 1214 } 1215 } 1216 } 1217 } 1218 1219 # 1220 # Extra processing 1221 ################################################################################ 1222 1223 sub verify_uniqueness_diff { 1224 my $warp_id_1 = shift; 1225 my $warp_id_2 = shift; 1226 my $date = shift; 1227 my $target = shift; 1228 1229 my $db = init_gpc_db(); 1230 $date =~ s/-//g; 1231 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1232 1233 my $sth = "SELECT diff_id from diffRun JOIN diffInputSkyfile USING(diff_id) where data_group = '$data_group' AND warp1 = $warp_id_1 AND warp2 = $warp_id_2"; 1234 my $data_ref = $db->selectall_arrayref( $sth ); 1235 1236 return($#{ $data_ref } + 1); 1237 } 1238 1239 sub pre_diff_queue { 1240 my $date = shift; 1241 my $observing_state = shift; 1242 my $target = shift; 1243 my $filter = shift; 1244 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1245 1246 my $db = init_gpc_db(); 1247 1248 my $trunc_date = $date; $trunc_date =~ s/-//g; 1249 1250 my $where = " label = '$label' AND data_group = '$data_group' "; 1251 1252 my $where_possibly_faulted = $where . " AND ( " ; 1253 foreach my $acceptable_quality (@unrecoverable_quality) { 1254 $where_possibly_faulted .= " quality = $acceptable_quality OR "; 1255 } 1256 $where_possibly_faulted .= " 0 )"; 1257 1258 my $chip_sth = "SELECT * from chipRun WHERE (state = 'full' OR state = 'new') AND $where "; 1259 my $cam_sth = "SELECT * from camRun JOIN camProcessedExp USING(cam_id) WHERE state = 'full' AND $where_possibly_faulted "; 1260 my $warp_sth = "SELECT * from warpRun WHERE state = 'full' AND $where "; 1261 1262 my $chip_ref = $db->selectall_arrayref( $chip_sth ); 1263 my $cam_ref = $db->selectall_arrayref( $cam_sth ); 1264 my $warp_ref = $db->selectall_arrayref( $warp_sth ); 1265 1266 return($#{ $chip_ref } + 1, $#{ $cam_ref } + $#{ $warp_ref } + 2); 1267 } 1268 1269 sub execute_diffs { 1270 my $date = shift; 1271 my $observing_state = shift; 1272 my $pretend = shift; 1273 1274 foreach my $target (sort (keys %science_config)) { 1275 if ($science_config{$target}{DIFFABLE} == 1) { 1276 foreach my $filter (@filter_list) { 1277 my ($NprocChips,$NprocWarps) = pre_diff_queue($date,$observing_state,$target,$filter); 1278 if ((!defined($force_diff_count))&&($NprocChips != $NprocWarps)) { 1279 if ($debug == 1) { 1280 print STDERR "execute_diffs: Target $target on $date is not fully processed. ($NprocChips $NprocWarps)\n"; 1281 } 1282 $metadata_out{nsDiffState} = 'FORCETOWARP'; 1283 next; 1284 } 1285 if ($NprocChips == 0) { 1286 if ($debug == 1) { 1287 print STDERR "execute_diffs: Target $target in filter $filter on $date has no exposures.\n"; 1288 } 1289 next; 1290 } 1291 unless (($metadata_out{nsDiffState} eq 'FORCETOWARP')||($metadata_out{nsDiffState} eq 'DIFFING')) { 1292 $metadata_out{nsDiffState} = 'QUEUEDIFFS'; 1293 } 1294 if ($debug == 1) { 1295 print STDERR "execute_diffs: Target $target in filter $filter on $date has exposures and will be queued.\n"; 1296 } 1297 diff_queue($date,$target,$filter,$pretend); 1298 1299 if (defined($pretend)) { 1300 add_to_macro_list('check_diffs',$science_config{$target}{DIFFABLE},$date,$target,$filter); 1301 } 1302 else { 1303 add_to_macro_list('queue_diffs',$science_config{$target}{DIFFABLE},$date,$target,$filter); 1304 } 1305 } 1306 } 1307 else { 1308 if ($debug == 1) { 1309 print STDERR "execute_diffs: Target $target is not auto-diffable.\n"; 1310 } 1311 } 1312 } 1313 } 1314 1315 sub diff_queue { 1316 my $date = shift; 1317 my $target = shift; 1318 my $filter = shift; 1319 my $pretend = shift; 1320 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($date,$target); 1321 1322 my $db = init_gpc_db(); 1323 1324 my $obj_sth = "select DISTINCT rawExp.object from warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) "; 1325 $obj_sth .= " WHERE warpRun.state = 'full' AND warpRun.label = '$label' AND warpRun.data_group = '$data_group' AND rawExp.filter = '$filter' ORDER BY rawExp.object"; 1326 1327 my $object_ref = $db->selectall_arrayref( $obj_sth ); 1328 1329 foreach my $object_row (@{ $object_ref }) { 1330 my $this_object = shift @{ $object_row }; 1331 my $input_sth = "select exp_id,warp_id,dateobs from warpRun JOIN fakeRun USING(fake_id) JOIN camRun USING(cam_id) JOIN chipRun USING(chip_id) JOIN rawExp USING(exp_id) "; 1332 $input_sth .= " WHERE warpRun.state = 'full' AND warpRun.label = '$label' AND warpRun.data_group = '$data_group' AND rawExp.filter = '$filter' AND rawExp.object = '$this_object' "; 1333 $input_sth .= " ORDER BY dateobs "; 1334 1335 my $warps = $db->selectall_arrayref( $input_sth ); 1336 1337 if (($#{ $warps } + 1) % 2 != 0) { 1338 print STDERR "diff_queue: Number of input warps to make diffs is not even for target $target and object $this_object! $#{ $warps }\n"; 1339 next; 1340 } 1341 1342 while ($#{ $warps } > -1) { 1343 my $input_warp = shift @{ $warps }; 1344 my $template_warp = shift @{ $warps }; 1345 my $input_exp_id = ${ $input_warp }[0]; 1346 my $template_exp_id = ${ $template_warp }[0]; 1251 1347 1252 # if (($#{ $warps } + 1) % 2 != 0) { 1253 # print STDERR "Number of input warps to make OSS diffs is not even! $#{ $warps }\n"; 1254 # last; 1255 # } 1348 my $input_warp_id = ${ $input_warp }[1]; 1349 my $template_warp_id = ${ $template_warp }[1]; 1256 1350 1257 # while ($#{ $warps } > -1) { 1258 # my $input_warp = shift @{ $warps }; 1259 # my $template_warp = shift @{ $warps }; 1260 # my $input_exp_id = ${ $input_warp }[0]; 1261 # my $template_exp_id = ${ $template_warp }[0]; 1262 1263 # my $input_warp_id = ${ $input_warp }[1]; 1264 # my $template_warp_id = ${ $template_warp }[1]; 1265 1266 # if (verify_uniqueness_diff($input_warp_id,$template_warp_id,$date,$target) != 0) { 1267 # print STDERR "Diffs already queued for this $date $target $input_exp_id $template_exp_id\n"; 1268 # next; 1269 # } 1270 1271 # my $cmd = "$difftool -dbname $dbname -definewarpwarp "; 1272 # $cmd .= "-input_label $label -template_label $label "; 1273 # $cmd .= "-backwards "; # Needed because difftool assumes a different date sorting. 1274 # $cmd .= "-set_workdir $workdir -set_dist_group $dist_group -set_data_group $data_group "; 1275 # $cmd .= " -simple -set_label $label -exp_id $input_exp_id -template_exp_id $template_exp_id "; 1276 # # $cmd .= " -pretend "; 1277 # if (defined($pretend)) { 1278 # $cmd .= ' -pretend '; 1279 # } 1280 # if ($debug == 1) { 1281 # $cmd .= ' -pretend '; 1282 # } 1283 # print STDERR "EXTRA_PROCESSING: $cmd\n"; 1284 # if (($debug == 0)&&(!defined($pretend))) { 1285 # my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1286 # run ( command => $cmd, verbose => $verbose ); 1287 # unless ($success) { 1288 # $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1289 # &my_die("Unable to perform difftool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR); 1290 # } 1291 # } 1292 # } 1293 # } 1294 # } 1295 # } 1296 1351 if (verify_uniqueness_diff($input_warp_id,$template_warp_id,$date,$target) != 0) { 1352 print STDERR "Diffs already queued for this $date $target $input_exp_id $template_exp_id\n"; 1353 next; 1354 } 1355 1356 my $cmd = "$difftool -dbname $dbname -definewarpwarp "; 1357 $cmd .= "-input_label $label -template_label $label "; 1358 $cmd .= "-backwards "; # Needed because difftool assumes a different date sorting. 1359 $cmd .= "-set_workdir $workdir -set_dist_group $dist_group -set_data_group $data_group "; 1360 $cmd .= " -simple -set_label $label -exp_id $input_exp_id -template_exp_id $template_exp_id "; 1361 # $cmd .= " -pretend "; 1362 if (defined($pretend)) { 1363 $cmd .= ' -pretend '; 1364 } 1365 if ($debug == 1) { 1366 $cmd .= ' -pretend '; 1367 print STDERR "diff_queue: $cmd\n"; 1368 } 1369 1370 if (($debug == 0)&&(!defined($pretend))) { 1371 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1372 run ( command => $cmd, verbose => $verbose ); 1373 unless ($success) { 1374 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1375 &my_die("Unable to perform difftool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR); 1376 } 1377 } 1378 } 1379 } 1380 } 1297 1381 1298 1382 … … 1302 1386 ################################################################################ 1303 1387 1304 #sub construct_cleantool_args {1305 #my $date = shift;1306 #my $target = shift;1307 #my $mode = shift;1308 1309 # my $command = $clean_commands{$mode};1310 #my $retention_time;1311 # if (exists($cleanmods_list{$target}{$mode})) {1312 # $retention_time = $cleanmods_list{$target}{$mode};1313 #}1314 #else {1315 # $retention_time = $clean_retention{$mode};1316 #}1317 #if ($retention_time <= 0) {1318 #return("no clean","true");1319 #}1320 1321 #my ($year,$month,$day) = split /-/,$date;1322 #my $dt = DateTime->new(year => $year, month => $month, day => $day,1323 #hour => 0, minute => 0, second => 0, nanosecond => 0,1324 #time_zone => 'Pacific/Honolulu');1388 sub construct_cleantool_args { 1389 my $date = shift; 1390 my $target = shift; 1391 my $mode = shift; 1392 1393 my $command = $clean_config{$mode}{COMMAND}; 1394 my $retention_time; 1395 if (exists($science_config{$target}{$mode})) { 1396 $retention_time = $science_config{$target}{$mode}; 1397 } 1398 else { 1399 $retention_time = $clean_config{$mode}{RETENTION_TIME}; 1400 } 1401 if ($retention_time <= 0) { 1402 return("no clean","true"); 1403 } 1404 1405 my ($year,$month,$day) = split /-/,$date; 1406 my $dt = DateTime->new(year => $year, month => $month, day => $day, 1407 hour => 0, minute => 0, second => 0, nanosecond => 0, 1408 time_zone => 'Pacific/Honolulu'); 1325 1409 1326 #$dt->subtract(days => $retention_time);1327 #my $cleaning_date = $dt->ymd;1328 1329 #my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($cleaning_date,$target);1330 1331 #$command =~ s/\@DBNAME\@/$dbname/;1332 #$command =~ s/\@LABEL\@/$label/;1333 #$command =~ s/\@WORKDIR\@/$workdir/;1334 # $command =~ s/\@OBS_MODE\@/$obs_mode/;1335 #$command =~ s/\@OBJECT\@/$object/;1336 #$command =~ s/\@TESS_ID\@/$tess_id/;1337 #$command =~ s/\@DIST_GROUP\@/$dist_group/;1338 #$command =~ s/\@DATA_GROUP\@/$data_group/;1339 #$command =~ s/\@REDUCTION\@/$reduction/;1340 #$command =~ s/\@CURRENT_DATE\@/$cleaning_date/;1341 1342 #if ($debug == 1) {1343 #$command .= ' -pretend ';1344 #}1345 #return($cleaning_date,$command);1346 #}1347 1348 #sub execute_cleans {1349 #my $date = shift;1350 #my $pretend = shift;1351 1352 #foreach my $mode (sort (keys %clean_config)) {1353 #foreach my $target (sort (keys %science_config)) {1354 # if (exists($noclean_list{$target})) {1355 #next;1356 #}1357 #my ($cleaning_date,$command) = construct_cleantool_args($date,$target,$mode);1358 #if ($cleaning_date eq 'no clean') {1359 #next;1360 #}1361 #print STDERR "$command\n";1362 #if (!(defined($pretend) || $debug == 1)) {1363 # #print STDERR "BEAR IS DRIVING!?\n";1364 #my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =1365 #run ( command => $command, verbose => $verbose );1366 #unless ($success) {1367 #$error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);1368 #&my_die("Unable to perform cleantool ($command): $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR);1369 #}1370 #add_to_macro_list('clean_old',1,$date,$target,$mode);1371 #}1372 #}1373 #}1374 #return(0);1375 #}1410 $dt->subtract(days => $retention_time); 1411 my $cleaning_date = $dt->ymd; 1412 1413 my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($cleaning_date,$target); 1414 1415 $command =~ s/\@DBNAME\@/$dbname/; 1416 $command =~ s/\@LABEL\@/$label/; 1417 $command =~ s/\@WORKDIR\@/$workdir/; 1418 $command =~ s/\@OBSMODE\@/$obs_mode/; 1419 $command =~ s/\@OBJECT\@/$object/; 1420 $command =~ s/\@TESS_ID\@/$tess_id/; 1421 $command =~ s/\@DIST_GROUP\@/$dist_group/; 1422 $command =~ s/\@DATA_GROUP\@/$data_group/; 1423 $command =~ s/\@REDUCTION\@/$reduction/; 1424 $command =~ s/\@CURRENT_DATE\@/$cleaning_date/; 1425 1426 if ($debug == 1) { 1427 $command .= ' -pretend '; 1428 } 1429 return($cleaning_date,$command); 1430 } 1431 1432 sub execute_cleans { 1433 my $date = shift; 1434 my $pretend = shift; 1435 1436 foreach my $mode (sort (keys %clean_config)) { 1437 foreach my $target (sort (keys %science_config)) { 1438 if (exists($science_config{$target}{NOCLEAN})) { 1439 next; 1440 } 1441 my ($cleaning_date,$command) = construct_cleantool_args($date,$target,$mode); 1442 if ($cleaning_date eq 'no clean') { 1443 next; 1444 } 1445 print STDERR "$command\n"; 1446 if (!(defined($pretend) || $debug == 1)) { 1447 # print STDERR "BEAR IS DRIVING!?\n"; 1448 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 1449 run ( command => $command, verbose => $verbose ); 1450 unless ($success) { 1451 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 1452 &my_die("Unable to perform cleantool ($command): $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR); 1453 } 1454 add_to_macro_list('clean_old',1,$date,$target,$mode); 1455 } 1456 } 1457 } 1458 return(0); 1459 } 1376 1460 1377 1461 # … … 1426 1510 my $label = "${target}.nightlyscience"; 1427 1511 my $workdir = "neb://\@HOST\@.0/${dbname}/${target}.nt/${workdir_date}"; 1428 my $obs_mode = $science_config{$target}{OBS _MODE};1512 my $obs_mode = $science_config{$target}{OBSMODE}; 1429 1513 my $object = $science_config{$target}{OBJECT}; 1430 1514 my $comment = $science_config{$target}{COMMENT}; … … 1442 1526 my $trunc_date = $date; $trunc_date =~ s/-//g; 1443 1527 1444 my $exp_type = $detrend_config{$target}{EXP _TYPE};1445 my $det_type = $detrend_config{$target}{DET _TYPE};1446 my $ref_det_id = $detrend_config{$target}{REF_ DET_ID};1528 my $exp_type = $detrend_config{$target}{EXPTYPE}; 1529 my $det_type = $detrend_config{$target}{DETTYPE}; 1530 my $ref_det_id = $detrend_config{$target}{REF_ID}; 1447 1531 my $ref_iter = $detrend_config{$target}{REF_ITER}; 1448 1532 my $maxN = $detrend_config{$target}{MAX_EXP}; … … 1455 1539 else { 1456 1540 $internal_filter = ''; 1457 } 1541 } 1542 unless (defined($maxN)) { 1543 $maxN = 0; 1544 } 1458 1545 my $lc_type = lc($exp_type); 1459 1546 my $label = "${lc_type}${internal_filter}.$trunc_date"; … … 1484 1571 $metadata_out{"ns${N}Macro"} =~ s/\@LABEL\@/$label/; 1485 1572 $metadata_out{"ns${N}Macro"} =~ s/\@WORKDIR\@/$workdir/; 1486 $metadata_out{"ns${N}Macro"} =~ s/\@OBS _MODE\@/$obs_mode/;1573 $metadata_out{"ns${N}Macro"} =~ s/\@OBSMODE\@/$obs_mode/; 1487 1574 $metadata_out{"ns${N}Macro"} =~ s/\@OBJECT\@/$object/; 1488 1575 $metadata_out{"ns${N}Macro"} =~ s/\@COMMENT\@/$comment/; -
branches/czw_branch/20101203/ippconfig/recipes/nightly_science.config
r30014 r30017 59 59 TARGETS METADATA 60 60 NAME STR M31 61 DISTRIBUTION STR M31 61 62 TESS STR M31 62 63 OBSMODE STR M31 63 64 OBJECT STR M31% 64 65 STACKABLE BOOL TRUE 66 MIN_STACK BOOL 8 65 67 DIFFABLE BOOL FALSE 66 68 DIST S16 30 … … 68 70 TARGETS METADATA 69 71 NAME STR MD01 72 DISTRIBUTION STR MD01 70 73 TESS STR MD01.V2 71 74 OBSMODE STR MD 72 75 OBJECT STR MD01% 73 76 STACKABLE BOOL TRUE 77 MIN_STACK BOOL 8 74 78 DIFFABLE BOOL FALSE 75 79 DIST S16 30 … … 77 81 TARGETS METADATA 78 82 NAME STR MD02 83 DISTRIBUTION STR MD02 79 84 TESS STR MD02 80 85 OBSMODE STR MD 81 86 OBJECT STR MD02% 82 87 STACKABLE BOOL TRUE 88 MIN_STACK BOOL 8 83 89 DIFFABLE BOOL FALSE 84 90 DIST S16 30 … … 86 92 TARGETS METADATA 87 93 NAME STR MD03 94 DISTRIBUTION STR MD03 88 95 TESS STR MD03 89 96 OBSMODE STR MD 90 97 OBJECT STR MD03% 91 98 STACKABLE BOOL TRUE 99 MIN_STACK BOOL 8 92 100 DIFFABLE BOOL FALSE 93 101 DIST S16 30 … … 95 103 TARGETS METADATA 96 104 NAME STR MD04 105 DISTRIBUTION STR MD04 97 106 TESS STR MD04 98 107 OBSMODE STR MD 99 108 OBJECT STR MD04% 100 109 STACKABLE BOOL TRUE 110 MIN_STACK BOOL 8 101 111 DIFFABLE BOOL FALSE 102 112 DIST S16 30 … … 104 114 TARGETS METADATA 105 115 NAME STR MD05 116 DISTRIBUTION STR MD05 106 117 TESS STR MD05 107 118 OBSMODE STR MD 108 119 OBJECT STR MD05% 109 120 STACKABLE BOOL TRUE 121 MIN_STACK BOOL 8 110 122 DIFFABLE BOOL FALSE 111 123 DIST S16 30 … … 113 125 TARGETS METADATA 114 126 NAME STR MD06 127 DISTRIBUTION STR MD06 115 128 TESS STR MD06 116 129 OBSMODE STR MD 117 130 OBJECT STR MD06% 118 131 STACKABLE BOOL TRUE 132 MIN_STACK BOOL 8 119 133 DIFFABLE BOOL FALSE 120 134 DIST S16 30 … … 122 136 TARGETS METADATA 123 137 NAME STR MD07 138 DISTRIBUTION STR MD07 124 139 TESS STR MD07 125 140 OBSMODE STR MD 126 141 OBJECT STR MD07% 127 142 STACKABLE BOOL TRUE 143 MIN_STACK BOOL 8 128 144 DIFFABLE BOOL FALSE 129 145 DIST S16 30 … … 131 147 TARGETS METADATA 132 148 NAME STR MD08 149 DISTRIBUTION STR MD08 133 150 TESS STR MD08.V2 134 151 OBSMODE STR MD 135 152 OBJECT STR MD08% 136 153 STACKABLE BOOL TRUE 154 MIN_STACK BOOL 8 137 155 DIFFABLE BOOL FALSE 138 156 DIST S16 30 … … 140 158 TARGETS METADATA 141 159 NAME STR MD09 160 DISTRIBUTION STR MD09 142 161 TESS STR MD09.V2 143 162 OBSMODE STR MD 144 163 OBJECT STR MD09% 145 164 STACKABLE BOOL TRUE 165 MIN_STACK BOOL 8 146 166 DIFFABLE BOOL FALSE 147 167 DIST S16 30 … … 149 169 TARGETS METADATA 150 170 NAME STR MD10 171 DISTRIBUTION STR MD10 151 172 TESS STR MD10.V2 152 173 OBSMODE STR MD 153 174 OBJECT STR MD10% 154 175 STACKABLE BOOL TRUE 176 MIN_STACK BOOL 8 155 177 DIFFABLE BOOL FALSE 156 178 DIST S16 30 … … 158 180 TARGETS METADATA 159 181 NAME STR MD11 182 DISTRIBUTION STR MD11 160 183 TESS STR MD11.V2 161 184 OBSMODE STR MD 162 185 OBJECT STR MD11% 163 186 STACKABLE BOOL TRUE 187 MIN_STACK BOOL 8 164 188 DIFFABLE BOOL FALSE 165 189 DIST S16 30 … … 167 191 TARGETS METADATA 168 192 NAME STR STS 193 DISTRIBUTION STR STS 169 194 TESS STR STS 170 195 OBSMODE STR STS% … … 175 200 TARGETS METADATA 176 201 NAME STR SweetSpot 202 DISTRIBUTION STR SweetSpot 177 203 TESS STR RINGS.V0 178 204 OBSMODE STR SS … … 199 225 TARGETS METADATA 200 226 NAME STR ThreePi 227 DISTRIBUTION STR ThreePi 201 228 TESS STR RINGS.V0 202 229 OBSMODE STR 3PI … … 232 259 REF_ID S64 299 233 260 REF_ITER S32 0 234 MAX S32 10261 MAX_EXP S32 10 235 262 END 236 263 … … 242 269 REF_ITER S32 0 243 270 FILTER STR g.00000 244 MAX S32 10271 MAX_EXP S32 10 245 272 END 246 273 … … 252 279 REF_ITER S32 0 253 280 FILTER STR r.00000 254 MAX S32 10281 MAX_EXP S32 10 255 282 END 256 283 … … 262 289 REF_ITER S32 0 263 290 FILTER STR i.00000 264 MAX S32 10291 MAX_EXP S32 10 265 292 END 266 293 … … 272 299 REF_ITER S32 0 273 300 FILTER STR z.00000 274 MAX S32 10301 MAX_EXP S32 10 275 302 END 276 303 … … 282 309 REF_ITER S32 0 283 310 FILTER STR y.00000 284 MAX S32 10311 MAX_EXP S32 10 285 312 END 286 313 … … 292 319 REF_ITER S32 0 293 320 FILTER STR w.00000 294 MAX S32 10295 END 296 321 MAX_EXP S32 10 322 END 323
Note:
See TracChangeset
for help on using the changeset viewer.
