IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 4, 2010, 1:44:20 PM (16 years ago)
Author:
watersc1
Message:

Updates to nightly science processing to queue detrend verify runs for a sampling of the detrend data for that date. It's set to off for the time being, until the config file information is finalized.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ippScripts/scripts/automate_stacks.pl

    r27938 r28222  
    2020my $stacktool= can_run('stacktool') or (warn "Can't find stacktool" and $missing_tools = 1);
    2121my $difftool = can_run('difftool') or (warn "Can't find difftool" and $missing_tools = 1);
     22my $dettool = can_run('dettool') or (warn "Can't find dettool" and $missing_tools = 1);
    2223my $ppConfigDump = can_run('ppConfigDump') or (warn "Can't find ppConfigDump" and $missing_tools = 1);
    2324my $mkBTpcontrol = can_run('make_burntool_pcontrol.pl') or (warn "Can't find make_burntool_pcontrol.pl" and $missing_tools = 1);
     
    5960my ( $check_registration, $define_burntool, $queue_burntool, $check_chips, $queue_chips);
    6061my ( $check_stacks, $queue_stacks, $check_diffs, $queue_diffs, $clean_old);
     62my ( $check_detrends, $queue_detrends);
    6163
    6264GetOptions(
     
    8183    'check_stacks'         => \$check_stacks,
    8284    'queue_stacks'         => \$queue_stacks,
     85    'check_detrends'          => \$check_detrends,
     86    'queue_detrends'          => \$queue_detrends,
    8387    'check_diffs'          => \$check_diffs,
    8488    'queue_diffs'          => \$queue_diffs,
     
    105109           --check_stacks         Confirm that stacks can be built.
    106110           --queue_stacks         Issue stacktool commands to queue stacks.
     111           --check_detrends       Confirm that detrend verify runs can be built.
     112           --queue_detrends       Issue dettool commands to queue detrend verify runs.
    107113           --check_diffs          Confirm that diffs can be done.
    108114           --queue_diffs          Issue difftool commands to queue diffs.
     
    115121          ) unless
    116122    defined $check_registration or defined $define_burntool or defined $queue_burntool or
    117     defined $queue_chips or defined $queue_stacks or
    118     defined $check_chips or defined $check_stacks or
     123    defined $queue_chips or defined $queue_stacks or $queue_detrends or
     124    defined $check_chips or defined $check_stacks or $check_detrends or
    119125    defined $test_mode or defined $clean_old or defined $check_mode;
    120126
     
    128134my %stackable_list = ();
    129135my %reduction_class = ();
     136my @detrend_list = ();
     137my %dettype_list = ();
     138my %exptype_list = ();
     139my %refID_list = ();
     140my %refIter_list = ();
     141my %detfilter_list = ();
     142my %detmax_list = ();
    130143my %clean_commands = ();
    131144my %clean_retention = ();
     
    158171        }
    159172    }
    160 #    if (${ $entry }{name} eq 'RETENTION_TIME') {
    161 #        $retention_time = ${ $entry }{value};
    162 #    }
    163173    elsif (${ $entry }{name} eq 'FILTERS') {
    164174        push @filter_list, ${ $entry }{value};
     
    195205        }
    196206    }
    197 }
    198 
    199 
    200 
     207    elsif (${ $entry }{name} eq 'DETRENDS') {
     208        my @detrend_data = @{ ${ $entry }{value} };
     209        my $this_detrend = '';
     210        foreach my $dentry (@detrend_data) {
     211            if (${ $dentry }{name} eq 'NAME') {
     212                $this_detrend = ${ $dentry }{value};
     213                push @detrend_list, $this_detrend;
     214            }
     215            elsif (${ $dentry }{name} eq 'DETTYPE') {
     216                $dettype_list{$this_detrend} = ${ $dentry }{value};
     217            }
     218            elsif (${ $dentry }{name} eq 'EXPTYPE') {
     219                $exptype_list{$this_detrend} = ${ $dentry }{value};
     220            }
     221            elsif (${ $dentry }{name} eq 'REF_ID') {
     222                $refID_list{$this_detrend} = ${ $dentry }{value};
     223            }
     224            elsif (${ $dentry }{name} eq 'REF_ITER') {
     225                $refIter_list{$this_detrend} = ${ $dentry }{value};
     226            }
     227            elsif (${ $dentry }{name} eq 'FILTER') {
     228                $detfilter_list{$this_detrend} = ${ $dentry }{value};
     229            }
     230            elsif (${ $dentry }{name} eq 'MAX') {
     231                $detmax_list{$this_detrend} = ${ $dentry }{value};
     232            }
     233        }
     234    }           
     235}
    201236
    202237unless(defined($date)) {
     
    256291    return_metadata($date);
    257292    unless (defined($test_mode) || defined($check_mode)) { exit(0); }
     293}
     294if (defined($check_detrends) || defined($test_mode)) {
     295    $metadata_out{nsState} = 'CHECKDETRENDS';
     296    &execute_detrends($date,"pretend");
     297    return_metadata($date);
     298    unless (defined($test_mode) || defined($check_mode)) { exit(0); }
     299}
     300if (defined($queue_detrends)) {
     301    $metadata_out{nsState} = 'QUEUEDETRENDS';
     302    &execute_detrends($date,"pretend");
     303    return_metadata($date);
     304    exit(0);
    258305}
    259306if (defined($define_burntool) || defined($test_mode)) {
     
    498545
    499546    my $cmd = "$chiptool";
    500     $cmd .= ' -simple -dbname gpc1 -definebyquery -set_end_stage warp ';
     547    $cmd .= " -simple -dbname $dbname -definebyquery -set_end_stage warp ";
    501548    $cmd .= " -set_label $label ";
    502549    $cmd .= " -set_workdir $workdir -set_dist_group $dist_group ";
     
    566613}
    567614
     615
     616
    568617sub chip_queue {
    569618    my $date = shift;
     
    612661
    613662#
     663# Detrend verification
     664################################################################################
     665
     666sub construct_dettool_cmd {
     667    my $date = shift;
     668    my $target = shift;
     669
     670    my ($label,$workdir,$filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN) = get_dettool_parameters($date,$target);
     671   
     672    my $select = "-select_dateobs_begin ${date}T00:00:00 -select_dateobs_end ${date}T23:59:59 ";
     673    $date =~ s/-//g;
     674
     675    my $cmd = "$dettool";
     676    $cmd .= " -pretend ";
     677    $cmd .= " -simple -dbname $dbname -definebyquery -det_type $det_type ";
     678    $cmd .= " -mode verify -ref_det_id $ref_det_id -ref_iter $ref_iter ";
     679    $cmd .= " $select ";
     680    $cmd .= " -inst $camera ";
     681    $cmd .= " -select_exp_type $exp_type ";
     682    $cmd .= " -select_filter $filter " if defined($filter);
     683    $cmd .= " -workdir $workdir ";
     684    $cmd .= " -label $label ";
     685    if ($maxN > 0) {
     686        $cmd .= " -random_subset -random_limit $maxN ";
     687    }
     688    if ($debug == 1) {
     689        $cmd .= ' -pretend ';
     690    }
     691    print STDERR "$cmd\n";
     692    return($cmd);
     693}   
     694
     695sub verify_uniqueness_detverify {
     696    my $date = shift;
     697    my $target = shift;
     698
     699    my ($label,$workdir,$filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN) = get_dettool_parameters($date,$target);
     700   
     701    my $db = init_gpc_db();
     702    my $sth = "SELECT * FROM detRun WHERE workdir = '$workdir' AND ref_det_id = $ref_det_id AND ref_iter = $ref_iter";
     703    my $data_ref = $db->selectall_arrayref( $sth );
     704
     705    return($#{ $data_ref } + 1);
     706}
     707
     708sub pre_detrend_queue {
     709    my $date = shift;
     710    my $target = shift;
     711   
     712    my $command = construct_dettool_cmd($date,$target) . ' -pretend ';
     713    my ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
     714        run ( command => $command, verbose => $verbose);
     715    unless ($success) {
     716        $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);
     717        &my_die("Unable to perform dettool: $error_code", 0,0, $date, $PS_EXIT_SYS_ERROR);
     718    }
     719   
     720    my @input_exposures = split /\n/, (join '', @$stdout_buf);
     721    return($#input_exposures + 1);
     722}
     723
     724sub detrend_queue {
     725    my $date = shift;
     726    my $target = shift;
     727   
     728    my $command = construct_dettool_cmd($date,$target);
     729    my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) =
     730        run ( command => $command, verbose => $verbose);
     731    unless ($success) {
     732        $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR);
     733        &my_die("Unable to perform chiptool: $error_code", 0,0,$date, $PS_EXIT_SYS_ERROR);
     734    }
     735    $metadata_out{nsState} = 'DETREND_QUEUED';
     736    return(0);
     737}
     738
     739sub execute_detrends {
     740    my $date = shift;
     741    my $pretend = shift;
     742    my $exposures = 0;
     743    foreach my $target (@detrend_list) {
     744        my ($Nexposures) = pre_detrend_queue($date,$target);
     745        if ($Nexposures == 0) {
     746            print STDERR "execute_detrends: Target $target on $date had no exposures.\n";
     747            next;
     748        }
     749        $exposures++;
     750        unless(defined($pretend)) {
     751            detrend_queue($date,$target);
     752        }
     753    }
     754    if ($exposures == 0) {
     755        $metadata_out{nsState} = 'DETREND_DROP';
     756    }
     757}
     758
     759#
    614760# Stacking
    615761################################################################################
     
    627773    my $cmd = "$stacktool";
    628774#    $cmd .= ' -pretend -simple -dbname gpc1 -definebyquery -min_new 4 ';  # Probably silly, but I want to be safe and not overwrite
    629     $cmd .= ' -simple -dbname gpc1 -definebyquery ';
     775    $cmd .= " -simple -dbname $dbname -definebyquery ";
    630776    $cmd .= " -set_label $label -select_label $label ";
    631777    $cmd .= " -set_workdir $workdir -set_dist_group $dist_group ";
     
    779925    my ($label,$workdir,$obs_mode,$object,$comment,$tess_id,$dist_group,$data_group,$reduction) = get_tool_parameters($cleaning_date,$target);
    780926    my $args = $command;
    781     $args .= " -dbname gpc1 -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -label $label -data_group $data_group ";
     927    $args .= " -dbname $dbname -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -label $label -data_group $data_group ";
    782928    if ($debug == 1) {
    783929        $args .= ' -pretend ';
     
    826972
    827973    my $label = "${target}.nightlyscience";
    828     my $workdir = "neb://\@HOST\@.0/gpc1/${target}.nt/${workdir_date}";
     974    my $workdir = "neb://\@HOST\@.0/${dbname}/${target}.nt/${workdir_date}";
    829975    my $obs_mode = $obsmode_list{$target};
    830976    my $object   = $object_list{$target};
     
    837983}
    838984
     985sub get_dettool_parameters {
     986    my $date = shift;
     987    my $target = shift;
     988    my $workdir_date = $date; $workdir_date =~ s%-%/%g;
     989    my $trunc_date = $date; $trunc_date =~ s/-//g;
     990
     991    my $exp_type = $exptype_list{$target};
     992    my $det_type = $dettype_list{$target};
     993    my $ref_det_id = $refID_list{$target};
     994    my $ref_iter = $refIter_list{$target};
     995    my $det_filter = $detfilter_list{$target};
     996    my $internal_filter;
     997    if (defined($det_filter)) {
     998        $internal_filter = $det_filter; $internal_filter =~ s/\..*//;
     999        $internal_filter = '.' . $internal_filter;
     1000    }
     1001    else {
     1002        $internal_filter = '';
     1003    }
     1004    my $maxN = $detmax_list{$target};   
     1005   
     1006    my $lc_type = lc($exp_type);
     1007    my $label = "${lc_type}${internal_filter}.$trunc_date";
     1008    my $workdir = 'neb://@HOST@.0/' . $dbname . "/detverify.nt/${workdir_date}/${lc_type}${internal_filter}";
     1009    return($label,$workdir,$det_filter,$exp_type,$det_type,$ref_det_id,$ref_iter,$maxN);
     1010}
    8391011
    8401012sub init_gpc_db {
Note: See TracChangeset for help on using the changeset viewer.