Changeset 19627 for trunk/ippScripts/scripts/detrend_resid_exp.pl
- Timestamp:
- Sep 21, 2008, 5:31:39 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ippScripts/scripts/detrend_resid_exp.pl (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ippScripts/scripts/detrend_resid_exp.pl
r19332 r19627 21 21 22 22 use IPC::Cmd 0.36 qw( can_run run ); # tools to run UNIX programs with control over I/O 23 # use IPC::Run qw ( start finish timeout ); 24 use IPC::Run; 25 23 26 use PS::IPP::Metadata::Config; # tools to parse the psMetadataConfig files 24 use PS::IPP::Metadata::Stats; 27 28 # XXX drop: moved to ppStatsFromMetadata 29 # use PS::IPP::Metadata::Stats; 25 30 26 31 use PS::IPP::Metadata::List qw( parse_md_list ); # tools to parse a metadata into a hash list … … 69 74 # load IPP config information for the specified camera 70 75 $ipprc->define_camera($camera); 71 if ($redirect) { 72 my $logDest = $ipprc->filename("LOG.EXP", $outroot) 73 or &my_die("Missing entry from camera config", $det_id, $iter, $exp_id, $PS_EXIT_CONFIG_ERROR); 74 $ipprc->redirect_output($logDest); 75 } 76 77 my $logDest = $ipprc->filename("LOG.EXP", $outroot) or &my_die("Missing entry from camera config", $det_id, $iter, $exp_id, $PS_EXIT_CONFIG_ERROR); 78 79 $ipprc->redirect_output($logDest) if $redirect; 76 80 77 81 # Recipes to use based on reduction class … … 83 87 my $recipe2 = $ipprc->reduction($reduction, 'JPEG_BIN2_RESID_' . uc($det_type)); # Recipe to use 84 88 &my_die("Unrecognised detrend type: $det_type", $det_id, $iter, $PS_EXIT_PROG_ERROR) unless defined $recipe2; 85 86 # values to extract from output metadata and the stats to calculate87 # XXX -bg_mean_stdev should take rms of bg_mean_stdev if bg_mean_stdev != 0 (A)88 # XXX -bg_mean_stdev should take stdev of bg_mean if bg_mean_stdev == 0 (B)89 # XXX (A) if imfile.Ncomp > 1, (B) if imfile.Ncomp == 190 my $STATS =91 [92 # KEYWORD STATISTIC CHIPTOOL FLAG93 { name => "bg", type => "mean", flag => "-bg", dtype => "float" },94 { name => "bg_mean_stdev", type => "stdev", flag => "-bg_mean_stdev", dtype => "float" },95 { name => "bg_stdev", type => "rms", flag => "-bg_stdev", dtype => "float" },96 { name => "bg_skewness", type => "mean", flag => "-bg_skewness", dtype => "float" },97 { name => "bg_kurtosis", type => "mean", flag => "-bg_kurtosis", dtype => "float" },98 { name => "bin_stdev", type => "rms", flag => "-bin_stdev", dtype => "float" },99 { name => "fringe_0", type => "mean", flag => "-fringe_0", dtype => "float" },100 { name => "fringe_1", type => "rms", flag => "-fringe_1", dtype => "float" },101 { name => "fringe_2", type => "stdev", flag => "-fringe_2", dtype => "float" },102 { name => "user_1", type => "mean", flag => "-user_1", dtype => "float" }, # fringe residual103 { name => "user_2", type => "rms", flag => "-user_2", dtype => "float" }, # fringe residual104 { name => "user_1", type => "stdev", flag => "-user_3", dtype => "float" }, # fringe residual105 ];106 my $stats = PS::IPP::Metadata::Stats->new($STATS); # Stats parser107 89 108 90 # Look for programs we need … … 110 92 my $dettool = can_run('dettool') or (warn "Can't find dettool" and $missing_tools = 1); 111 93 my $ppImage = can_run('ppImage') or (warn "Can't find ppImage" and $missing_tools = 1); 94 my $ppStatsFromMetadata = can_run('ppStatsFromMetadata') or (warn "Can't find ppStatsFromMetadata" and $missing_tools = 1); 112 95 if ($missing_tools) { 113 96 warn("Can't find required tools."); … … 116 99 117 100 # Get list of imfile files 101 my $cmdflags; 118 102 my ($files, $command, $success, $error_code, $full_buf, $stdout_buf, $stderr_buf); 119 103 { … … 142 126 &my_die("Unable to parse metadata list", $det_id, $iter, $exp_id, $PS_EXIT_PROG_ERROR); 143 127 144 # Parse the statistics on the residual image 145 $stats->parse($metadata) or &my_die("Unable to find all values in statistics output.", $det_id, $iter, $exp_id, $PS_EXIT_PROG_ERROR); 128 # since I can't figure out how to do input and output within PERL, I'm writing to a temp file 129 my ($statFile, $statName) = tempfile( "/tmp/$exp_tag.detresid.$det_id.$iter.stats.XXXX", UNLINK => !$save_temps ); 130 foreach my $line (@$stdout_buf) { 131 print $statFile $line; 132 } 133 close $statFile; 134 135 $command = "$ppStatsFromMetadata $statName - DETREND_RESID_EXP"; 136 ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 137 run(command => $command, verbose => $verbose); 138 unless ($success) { 139 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 140 warn("Unable to perform ppSTatsFromMetadata: $error_code\n"); 141 exit($error_code); 142 } 143 144 foreach my $line (@$stdout_buf) { 145 $cmdflags .= " $line"; 146 } 147 print "cmdflags: $cmdflags\n"; 146 148 } 147 149 … … 377 379 378 380 # basic ensemble stats 379 my $mean = $stats->value_for_flag ("-bg");380 my $meanStdev = $stats->value_for_flag ("-bg_mean_stdev");381 my $stdev = $stats->value_for_flag ("-bg_stdev");382 my $binStdev = $stats->value_for_flag ("-bin_stdev");383 my $fringe_mean = $stats->value_for_flag ("-fringe_0");384 my $fringe_err = $stats->value_for_flag ("-fringe_1");385 my $fringe_mean_stdev = $stats->value_for_flag ("-fringe_2");386 my $dfringe_mean = $stats->value_for_flag ("-fringe_resid_0");387 my $dfringe_err = $stats->value_for_flag ("-fringe_resid_1");388 my $dfringe_mean_stdev = $stats->value_for_flag ("-fringe_resid_2");381 my $mean = &value_for_flag ($cmdflags, "-bg"); 382 my $meanStdev = &value_for_flag ($cmdflags, "-bg_mean_stdev"); 383 my $stdev = &value_for_flag ($cmdflags, "-bg_stdev"); 384 my $binStdev = &value_for_flag ($cmdflags, "-bin_stdev"); 385 my $fringe_mean = &value_for_flag ($cmdflags, "-fringe_0"); 386 my $fringe_err = &value_for_flag ($cmdflags, "-fringe_1"); 387 my $fringe_mean_stdev = &value_for_flag ($cmdflags, "-fringe_2"); 388 my $dfringe_mean = &value_for_flag ($cmdflags, "-fringe_resid_0"); 389 my $dfringe_err = &value_for_flag ($cmdflags, "-fringe_resid_1"); 390 my $dfringe_mean_stdev = &value_for_flag ($cmdflags, "-fringe_resid_2"); 389 391 390 392 # other stats (flux depends on bg and exp_time) … … 506 508 $command .= ' -reject' if $reject; 507 509 $command .= " -dbname $dbname" if defined $dbname; 508 $command .= $ stats->cmdflags();510 $command .= $cmdflags; 509 511 510 512 unless ($no_update) { … … 527 529 } 528 530 531 532 sub value_for_flag 533 { 534 my $cmdflags = shift; 535 my $flag = shift; 536 537 my $value = 0.0; 538 if ($cmdflags =~ m|$flag|) { 539 ($value) = $cmdflags =~ m|$flag\s+(\S+)|; 540 } 541 $value; 542 } 529 543 530 544 sub my_die
Note:
See TracChangeset
for help on using the changeset viewer.
