Changeset 30049 for trunk/ippScripts
- Timestamp:
- Dec 15, 2010, 1:29:28 PM (16 years ago)
- Location:
- trunk
- Files:
-
- 5 edited
- 2 copied
-
. (modified) (1 prop)
-
ippScripts/Build.PL (modified) (1 diff)
-
ippScripts/MANIFEST (modified) (1 diff)
-
ippScripts/scripts/ipp_apply_burntool_single.pl (copied) (copied from branches/czw_branch/20101203/ippScripts/scripts/ipp_apply_burntool_single.pl )
-
ippScripts/scripts/nightly_science.pl (copied) (copied from branches/czw_branch/20101203/ippScripts/scripts/nightly_science.pl )
-
ippScripts/scripts/register_exp.pl (modified) (4 diffs)
-
ippScripts/scripts/register_imfile.pl (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/czw_branch/20101203 (added) merged: 29907-29909,29965,29982,30014,30017-30018,30047-30048
- Property svn:mergeinfo changed
-
trunk/ippScripts/Build.PL
r29530 r30049 105 105 scripts/whichimage 106 106 scripts/automate_stacks.pl 107 scripts/nightly_science.pl 107 108 scripts/lossy_compress_imfile.pl 108 109 scripts/ipp_apply_burntool.pl 110 scripts/ipp_apply_burntool_single.pl 109 111 scripts/make_burntool_pcontrol.pl 110 112 scripts/bundle_detrends.pl -
trunk/ippScripts/MANIFEST
r28375 r30049 37 37 scripts/ds9_cmf_regions.pl 38 38 scripts/automate_stacks.pl 39 scripts/nightly_science.pl 39 40 scripts/lossy_compress_imfile.pl 40 41 scripts/ipp_apply_burntool.pl 42 scripts/ipp_apply_burntool_single.pl 41 43 scripts/make_burntool_pcontrol.pl 42 44 scripts/bundle_detrends.pl -
trunk/ippScripts/scripts/register_exp.pl
r27891 r30049 30 30 my $regtool = can_run('regtool') or (warn "can't find regtool" and $missing_tools = 1); 31 31 my $ppStatsFromMetadata = can_run('ppStatsFromMetadata') or (warn "Can't find ppStatsFromMetadata" and $missing_tools = 1); 32 my $ppConfigDump = can_run('ppConfigDump') or (warn "Can't find ppConfigDump" and $missing_tools = 1); 32 33 if ($missing_tools) { 33 34 warn ("Can't find required tools"); … … 118 119 if (uc($exp_type) eq "NULL") { &my_die ("exp_type not found", $exp_id, $PS_EXIT_CONFIG_ERROR); } 119 120 121 my ($data_group,$dist_group,$chip_workdir,$reduction); 122 ($label,$data_group,$dist_group,$end_stage, 123 $tess_id,$chip_workdir,$reduction) = advance_decisions(&value_for_flag($cmdflags,"-dateobs"), 124 &value_for_flag($cmdflags,"-exp_type"), 125 &value_for_flag($cmdflags,"-obs_mode"), 126 &value_for_flag($cmdflags,"-object"), 127 &value_for_flag($cmdflags,"-comment"), 128 $dbname); 120 129 my $command = "$regtool -addprocessedexp"; 121 130 $command .= " -exp_id $exp_id"; … … 127 136 $command .= " -end_stage $end_stage" if defined $end_stage; 128 137 $command .= " -tess_id $tess_id" if defined $tess_id; 138 $command .= " -data_group $data_group" if defined $data_group; 139 $command .= " -dist_group $dist_group" if defined $dist_group; 140 $command .= " -chip_workdir $chip_workdir" if defined $chip_workdir; 141 $command .= " -reduction $reduction" if defined $reduction; 129 142 $command .= " -state full"; 130 143 $command .= " $cmdflags"; … … 156 169 157 170 ### Pau. 171 sub advance_decisions { 172 my $dateobs = shift; 173 my $exptype = shift; 174 my $obsmode = shift; 175 my $object = shift; 176 my $comment = shift; 177 my $dbname = shift; 178 179 # The strings come pre-quoted. 180 $dateobs =~ s/\'//g; 181 $exptype =~ s/\'//g; 182 $obsmode =~ s/\'//g; 183 $object =~ s/\'//g; 184 $comment =~ s/\'//g; 185 186 print "Inside decision engine\n"; 187 my ($label,$data_group,$dist_group,$end_stage,$tess_id,$chip_workdir,$reduction); 188 my $target; 189 190 if ($exptype ne 'OBJECT') { 191 print "Aborting because exptype doesn't claim to be OBJECT: $exptype\n"; 192 return(undef,undef,undef,"reg",undef,undef,undef); 193 } 194 if ($obsmode eq 'ENGINEERING') { 195 print "Aborting because we don't queue engineering data to chip\n"; 196 return(undef,undef,undef,"reg",undef,undef,undef); 197 } 198 # Grab the configuration data. 199 my %nightlyscience_config = (); 200 my $conf_cmd = "$ppConfigDump -dump-recipe NIGHTLY_SCIENCE -"; 201 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 202 run(command => $conf_cmd, verbose => $verbose); 203 unless ($success) { 204 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 205 &my_die("Unable to perform ppConfigDump: $error_code", $date, $PS_EXIT_SYS_ERROR); 206 } 207 print "data loaded\n"; 208 my $mdcParser = PS::IPP::Metadata::Config->new; 209 my $metadata = $mdcParser->parse(join "", @$stdout_buf); 210 foreach my $entry (@{ $metadata }) { 211 if (${ $entry }{name} eq 'TARGETS') { 212 my @target_data = @{ ${ $entry }{value} }; 213 my $this_target = ''; 214 foreach my $tentry (@target_data) { 215 if (${ $tentry }{name} eq 'NAME') { 216 $this_target = ${ $tentry }{value}; 217 $nightlyscience_config{$this_target}{DISTRIBUTION} = $this_target; 218 } 219 elsif (${ $tentry }{name} eq 'DISTRIBUTION') { 220 $nightlyscience_config{$this_target}{DISTRIBUTION} = ${ $tentry }{value}; 221 } 222 elsif (${ $tentry }{name} eq 'TESS') { 223 $nightlyscience_config{$this_target}{TESS_ID} = ${ $tentry }{value}; 224 } 225 elsif (${ $tentry }{name} eq 'OBSMODE') { 226 $nightlyscience_config{$this_target}{OBSMODE} = ${ $tentry }{value}; 227 $nightlyscience_config{$this_target}{OBSMODE} =~ s/%/\.\*/g; 228 } 229 elsif (${ $tentry }{name} eq 'OBJECT') { 230 $nightlyscience_config{$this_target}{OBJECT} = ${ $tentry }{value}; 231 $nightlyscience_config{$this_target}{OBJECT} =~ s/%/\.\*/g; 232 } 233 elsif (${ $tentry }{name} eq 'COMMENT') { 234 $nightlyscience_config{$this_target}{COMMENT} = ${ $tentry }{value}; 235 $nightlyscience_config{$this_target}{COMMENT} =~ s/%/\.\*/g; 236 } 237 elsif (${ $tentry }{name} eq 'STACKABLE') { 238 $nightlyscience_config{$this_target}{STACKABLE} = ${ $tentry }{value}; 239 } 240 elsif (${ $tentry }{name} eq 'DIFFABLE') { 241 $nightlyscience_config{$this_target}{DIFFABLE} = ${ $tentry }{value}; 242 } 243 elsif (${ $tentry }{name} eq 'REDUCTION') { 244 $nightlyscience_config{$this_target}{REDUCTION} = ${ $tentry }{value}; 245 } 246 } 247 } 248 } 249 print "data parsed\n"; 250 my $found_target; 251 foreach $target (keys %nightlyscience_config) { 252 # print "TEST: $target ($obsmode $object $comment) ($nightlyscience_config{$target}{OBSMODE} $nightlyscience_config{$target}{OBJECT} $nightlyscience_config{$target}{COMMENT}\t"; 253 my $match = 0; 254 my $possible = 0; 255 if (exists($nightlyscience_config{$target}{OBSMODE})) { 256 $possible++; 257 if ($obsmode =~ /$nightlyscience_config{$target}{OBSMODE}/) { 258 $match++; 259 } 260 } 261 if (exists($nightlyscience_config{$target}{OBJECT})) { 262 $possible++; 263 if ($object =~ /$nightlyscience_config{$target}{OBJECT}/) { 264 $match++; 265 } 266 } 267 if (exists($nightlyscience_config{$target}{COMMENT})) { 268 $possible++; 269 if ($comment =~ /$nightlyscience_config{$target}{COMMENT}/) { 270 $match++; 271 } 272 } 273 print "$possible $match\n"; 274 if (($possible > 0)&&($match == $possible)) { 275 $found_target = $target; 276 last; 277 } 278 } 279 unless ($found_target) { 280 print "No acceptible target found.\n"; 281 return(undef,undef,undef,"reg",undef,undef,undef); 282 } 283 print "Found this target: $found_target\n"; 284 print "$dateobs\n"; 285 $target = $found_target; 286 287 my $date = $dateobs; 288 $date =~ s/T.*//; 289 my $workdir_date = $date; 290 $date =~ s/-//g; 291 $workdir_date =~ s%-%/%g; 292 print "$dateobs $date $workdir_date\n"; 293 $label = "${target}.nightlyscience"; 294 $data_group = "${target}.${date}"; 295 $dist_group = $nightlyscience_config{$target}{DISTRIBUTION}; 296 $end_stage = 'warp'; 297 $tess_id = $nightlyscience_config{$target}{TESS_ID}; 298 $chip_workdir = "neb://\@HOST\@.0/${dbname}/${target}.nt/${workdir_date}/"; 299 if (exists($nightlyscience_config{$target}{REDUCTION})) { 300 $reduction = $nightlyscience_config{$target}{REDUCTION}; 301 } 302 else { 303 undef($reduction); 304 } 305 306 307 return ($label,$data_group,$dist_group,$end_stage,$tess_id,$chip_workdir,$reduction); 308 } 309 310 311 158 312 159 313 sub cache_run -
trunk/ippScripts/scripts/register_imfile.pl
r27891 r30049 19 19 use File::Basename qw( basename); 20 20 use IPC::Run; 21 use IPC::Cmd 0.36 qw( can_run );21 use IPC::Cmd 0.36 qw( can_run run ); 22 22 use PS::IPP::Config 1.01 qw( :standard ); 23 use PS::IPP::Metadata::List qw( parse_md_list ); 23 24 use PS::IPP::Metadata::Config; 24 25 use Math::Trig; … … 35 36 my $ppStatsFromMetadata = can_run( 'ppStatsFromMetadata' ) or (warn "Can't find ppStatsFromMetadata" and $missing_tools = 1); 36 37 my $ppConfigDump = can_run( 'ppConfigDump' ) or (warn "Can't find ppConfigDump" and $missing_tools = 1); 38 my $ippApplyBurntoolSingle = can_run( 'ipp_apply_burntool_single.pl' ) or (warn "Can't find ipp_apply_burntool_single" and $missing_tools = 1); 37 39 38 40 my ($cache, $exp_id, $tmp_class_id, $tmp_exp_name, $uri, $bytes, $md5sum, $dbname, $verbose, $no_update, $no_op, $logfile); … … 82 84 83 85 my $cmdflags; 86 my $burntoolStateGood; 84 87 # Run ppStats on the input file 85 88 { … … 114 117 my $burntoolState = 0; 115 118 my $isGPC1 = 0; 116 my$burntoolStateGood = 0;119 $burntoolStateGood = 0; 117 120 foreach my $line (split /\n/, $out1) { 118 121 if ($line =~ /FPA.BURNTOOL.APPLIED/) { … … 174 177 $command .= " -hostname $host" if defined $host; 175 178 $command .= " -dbname $dbname" if defined $dbname; 176 $command .= " -data_state full";179 $command .= " -data_state check_burntool"; 177 180 $command .= " $cmdflags"; 178 181 182 print "$command\n"; 179 183 # determine solar-system parameters 180 184 my $longitude = &value_for_flag($cmdflags, 0.0, "-longitude"); … … 206 210 } 207 211 } 212 213 # This might have a race condition 214 # $date_end = $dateobs; 215 # $date_start = $dateobs - 30 minutes ? dateobs_UTC_midnight? 216 # lock file? 217 # if exp_type = DARK and date > MIDNIGHT HST { wait } 218 # system("ipp_apply_burntool.pl --class_id $class_id --dateobs_begin $date_start --dateobs_end $date_end --dbname gpc1 --logfile /data/$host.0/burntool_logs/$class_id.$start_date.log"); 208 219 209 220 $now_time = localtime(); … … 222 233 print "skipping command: $command\n"; 223 234 } 235 236 # We now have an imfile in the database, check if we can burntool it. If not, continue on. 237 238 { 239 my $mdcParser = PS::IPP::Metadata::Config->new; 240 241 my $class_id = &value_for_flag($cmdflags, 0.0, "-class_id"); 242 my $check_date = &value_for_flag($cmdflags, 0.0, "-dateobs"); 243 $check_date =~ s/T.*$//; 244 my $exp_name = $tmp_exp_name; 245 246 247 my $bt_check_command = "$regtool -checkburntoolimfile "; 248 $bt_check_command .= " -class_id $class_id "; 249 $bt_check_command .= " -date $check_date "; 250 $bt_check_command .= " -valid_burntool $burntoolStateGood "; 251 $bt_check_command .= " -exp_name $exp_name "; 252 $bt_check_command .= " -dbname $dbname" if defined $dbname; 253 254 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 255 run ( command => $bt_check_command, verbose => $verbose); 256 unless ($success) { 257 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 258 &my_die("Unable to perform regtool: $error_code", 259 $class_id, $exp_name, $date, $PS_EXIT_SYS_ERROR); 260 } 261 262 my @whole = split /\n/, (join "", @$stdout_buf); 263 my @single = (); 264 my $exposures; 265 while ( scalar @whole > 0 ) { 266 my $value = shift @whole; 267 push @single, $value; 268 if ($value =~ /^\s*END\s*$/) { 269 push @single, "\n"; 270 271 my $list = parse_md_list( $mdcParser->parse( join( "\n", @single ) ) ); 272 &my_die("Unable to parse output from regtool", 273 $class_id, $exp_name, $date, $PS_EXIT_SYS_ERROR) unless 274 defined $list; 275 push @{ $exposures }, @$list; 276 @single = (); 277 } 278 } 279 280 # We only care about the final entry, as that contains the exposure we are. 281 282 my $regtool_update = "$regtool -updateprocessedimfile "; 283 $regtool_update .= "-dbname $dbname " if defined $dbname; 284 $regtool_update .= "-exp_id $exp_id -class_id $class_id "; 285 286 my $burntool_data = pop(@{ $exposures }); 287 if ($burntool_data->{burnable} == 0) { 288 $regtool_update .= " -burntool_state 0 -set_state pending_burntool "; 289 } 290 else { 291 my $apply_command = "$ippApplyBurntoolSingle --dbname $dbname "; 292 $apply_command .= " --class_id $class_id --exp_id $exp_id "; 293 $apply_command .= " --this_uri $burntool_data->{uri} "; 294 $apply_command .= " --previous_uri $burntool_data->{previous_uri} " if defined $burntool_data->{previous_uri}; 295 $apply_command .= " --imfile_state $burntool_data->{imfile_state} "; 296 $apply_command .= " --verbose " if $verbose; 297 print "$apply_command\n"; 298 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 299 IPC::Cmd::run(command => $apply_command, verbose => $verbose); 300 unless ($success) { 301 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 302 warn ("Unable to perform ipp_apply_burntool_single.pl: $error_code"); 303 exit($error_code); 304 } 305 } 306 307 unless ($no_update) { 308 my ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 309 IPC::Cmd::run(command => $regtool_update, verbose => $verbose); 310 unless ($success) { 311 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 312 warn ("Unable to perform regtool -addprocessedimfile: $error_code"); 313 exit($error_code); 314 } 315 } else { 316 print "skipping command: $command\n"; 317 } 318 319 } 320 321 224 322 225 323 $now_time = localtime();
Note:
See TracChangeset
for help on using the changeset viewer.
