Changeset 44
- Timestamp:
- Feb 14, 2003, 1:57:43 AM (23 years ago)
- Location:
- trunk/Ohana/src/perl/src
- Files:
-
- 4 edited
-
dads.detrend (modified) (9 diffs)
-
elixir.postrun (modified) (1 diff)
-
fr.frstats (modified) (2 diffs)
-
fr.mklists (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/perl/src/dads.detrend
r17 r44 16 16 } 17 17 18 if (@ARGV != 3) { die "USAGE: dads.detrend (inbase) (outbase) (level)\n" } 18 if (@ARGV != 3) { die "USAGE: dads.detrend (input) (outbase) (level)\n" } 19 20 $input = $ARGV[0]; 21 $outdir = $ARGV[1]; 22 $level = $ARGV[2]; 23 24 # input : /path/path/654321o.fits 25 # output: /path/path/654321p 26 # use last leaf of dir path as file rootname 19 27 20 28 # level may be: 'perfect', 'best', 'raw' 21 $level = "\U$ ARGV[2]\E";29 $level = "\U$level\E"; 22 30 if (($level ne "PERFECT") && ($level ne "BEST") && ($level ne "RAW")) { 23 31 die "ERROR: invalid entry for (level)\n"; … … 26 34 if ($level eq "BEST") { $close = "-close"; } 27 35 28 if (! -d $ARGV[1]) { mkdir ($ARGV[1], 0777); } 29 30 # get input list: 31 @rawlist = <$ARGV[0]/*.raw>; 32 if (@rawlist == 0) { die "ERROR: no files found\n";}33 34 # get total image size:35 $Nbyte = 0; 36 foreach $file (@rawlist) { 37 @words = stat ($file); 38 $Nbyte += $words[7];39 } 36 # force output directory to exist 37 if (! -d $outdir) { 38 system ("mkdir -p $outdir"); 39 if ($?) { die "ERROR: can't create output directory\n"; } 40 } 41 42 # check for input file (must be MEF) 43 if (! -e $input) { die "ERROR: input file not found\n"; } 44 45 # get image size: 46 @words = stat ($input); 47 $Nbyte = $words[7]; 40 48 41 49 # check space on /tmp: … … 44 52 $Nfree = $words[3]*1024; 45 53 46 # choose a work directory (/tmp vs $ ARGV[1]):47 $workdir = $ ARGV[1];54 # choose a work directory (/tmp vs $outdir): 55 $workdir = $outdir; 48 56 if ($Nfree > 3*$Nbyte) { 49 57 $workdir = "/tmp"; 50 58 } 59 60 # extract image rootname from $outdir: 61 $base = &basename ($outdir); 62 63 # output files are $workdir/$basename$ccdn.ext 64 @ccdn = split (" ", `cameraconfig -ccdn`); if ($?) { die "ERROR in cameraconfig\n"; } 65 @ccds = split (" ", `cameraconfig -ccds`); if ($?) { die "ERROR in cameraconfig\n"; } 66 67 # NEED to check Nccd = NEXTEND, check that list of input ccds matches 51 68 52 69 # create output lists: … … 54 71 @detlist = (); 55 72 @demlist = (); 56 foreach $in (@rawlist) { 57 ($middle) = $in =~ /$ARGV[0](\S+)raw$/; 73 foreach $ccd (@ccdn) { 58 74 59 75 # create output name 60 $name = $ARGV[1] . $middle . "fits";76 $name = "$outdir/$base$ccd.fits"; 61 77 @fitlist = (@fitlist, $name); 62 78 63 79 # create tmp detrended name 64 $name = $workdir . $middle . "det"; 80 $name = "$workdir/$base$ccd.det"; 81 # $name = $workdir . $middle . "det"; 65 82 @detlist = (@detlist, $name); 66 83 67 84 # create tmp demoded name 68 $name = $workdir . $middle . "dem"; 85 $name = "$workdir/$base$ccd.dem"; 86 # $name = $workdir . $middle . "dem"; 69 87 @demlist = (@demlist, $name); 70 88 71 89 # create tmp defringed name 72 $name = $workdir . $middle . "def"; 73 @deflist = (@delist, $name); 74 } 75 76 # for raw distribution, we don't check image charatersitics 90 $name = "$workdir/$base$ccd.def"; 91 # $name = $workdir . $middle . "def"; 92 @deflist = (@deflist, $name); 93 } 94 95 # for raw distribution, simply use fhtool to split the files: 77 96 if ($level eq "RAW") { 78 for ($i = 0; $i < @rawlist; $i++) {79 $status = system ("mv $rawlist[$i] $fitlist[$i]"); 80 if ($status) { die "ERROR: failed to remame raw file $rawlist[$i]\n"; } 81 }97 system ("rmdir $outdir"); 98 if ($?) { die "ERROR: can't remove target directory for fhtool\n"; } 99 system ("fhtool $input $outdir"); 100 if ($?) { die "ERROR: failure in fhtool\n"; } 82 101 print STDOUT "SUCCESS: finished with dads.detrend\n"; 83 102 exit 0; 84 103 } 85 104 86 # use first image to test image characteristics 87 $name = $rawlist[0]; 88 89 $typekwd = `gconfig IMAGETYPE-KEYWORD`; chop $typekwd; 90 $filtkwd = `gconfig FILTER-KEYWORD`; chop $filtkwd; 91 $exptkwd = `gconfig EXPTIME-KEYWORD`; chop $exptkwd; 92 $answer = `cameraconfig -ccds`; 93 @ccds = split (" ", $answer); 94 95 # check the IMAGETYP: 96 $answer = `echo $name | fields $typekwd`; 97 ($tmp, $type) = split (" ", $answer); 98 if ($type ne "OBJECT") { die "ERROR: $name: wrong image type\n"; } 99 100 # this should be abstracted to the filter or recipe file... 101 # check the FILTER and EXPTIME, include fringe correction?: 102 $answer = `echo $name | fields $exptkwd $filtkwd`; 103 ($junk, $exptime, $filtvalue) = split (" ", $answer); 104 $filtvalue = "\U$filtvalue\E"; 105 # load abstracted keywords (NEED error checking!!) 106 ($typekwd, $filtkwd, $exptkwd) = split (" ", `gconfig IMAGETYPE-KEYWORD FILTER-KEYWORD EXPTIME-KEYWORD`); 107 if ($?) { die "ERROR: config system missing keyword abstractions\n"; } 108 109 # extract keyword values: 110 ($junk, $type, $exptime, $filtvalue) = split (" ", `echo $input | fields $typekwd $exptkwd $filtkwd`); 111 if ($?) { die "ERROR: failure reading header keywords (1)\n"; } 112 113 if ($type ne "OBJECT") { die "ERROR: $input: wrong image type\n"; } 105 114 $filter = `filtnames $filtvalue`; chop $filter; 106 # check valid answer here 107 108 # set defringe and/or demode based on filter & exptime 109 if ($filter eq "R") { 110 $DO_DEMODE = ($exptime > 60); 111 } 112 if ($filter eq "I") { 113 $DO_DEFRINGE = ($exptime > 60); 114 $DO_DEMODE = ($exptime > 60); 115 } 116 if ($filter eq "Z") { 117 $DO_DEFRINGE = ($exptime > 60); 118 $DO_DEMODE = ($exptime > 60); 119 } 120 if ($filter eq "NB920") { 121 $DO_DEFRINGE = ($exptime > 60); 122 $DO_DEMODE = ($exptime > 60); 115 if ($?) { die "ERROR: filter not found\n"; } 116 117 # recipe file defines detrend types & cutoff exptime values 118 $recipefile = `gconfig DETREND_RECIPES`; chop $recipefile; 119 ($detypes, $cutoffs) = split (" ", `gconfig -c $recipefile $filter`); 120 if ($?) { die "ERROR: failure to get detrend recipes\n"; } 121 @detypes = split (",", $detypes); 122 @cutoffs = split (",", $cutoffs); 123 124 # check for DEFRINGE, DEMODE 125 $DO_DEFRINGE = 0; 126 for ($i = 0; $i < @detypes; $i++) { 127 if ($detypes[$i] eq "fringe") { 128 if ($exptime >= $cutoffs[$i]) { $DO_DEFRINGE = 1; } 129 last; 130 } 131 } 132 $DO_DEMODE = 0; 133 for ($i = 0; $i < @detypes; $i++) { 134 if ($detypes[$i] eq "modes") { 135 if ($exptime >= $cutoffs[$i]) { $DO_DEMODE = 1; } 136 last; 137 } 123 138 } 124 139 125 140 # check the GEOMETRY: 126 $answer = `echo $name | fields CCDBIN1 CCDBIN2 RASTER`; 127 @words = split (" ", $answer); 128 if (($words[1] != 1) || ($words[2] != 1)) { die "ERROR: $name: binned image\n"; } 129 if ($words[3] ne "FULL") { die "ERROR: $name: sub-rastered image\n"; } 130 131 # check for valid detrend frames of needed types (this needs to be implemented with the -recipe function) 132 133 # check for mode frame: 134 if ($DO_DEMODE) { 135 $name = $rawlist[0]; 136 $status = system ("detsearch -quiet -image $name $ccds[0] split -type modes $close"); 137 if ($status) { die "ERROR: can't get valid mode file\n"; } 138 } 139 140 # check for fringe frame: 141 if ($DO_DEFRINGE) { 142 foreach $name (@rawlist) { 143 $status = system ("detsearch -quiet -image $name $ccds[0] split -type fringe $close"); 144 if ($status) { die "ERROR: can't get valid fringe frame for this image\n"; } 145 } 146 } 147 148 # check for detrend frame: 149 foreach $name (@rawlist) { 150 $status = system ("detsearch -quiet -image $name $ccds[0] split -type bias $close"); 151 $status = system ("detsearch -quiet -image $name $ccds[0] split -type dark $close"); 152 $status = system ("detsearch -quiet -image $name $ccds[0] split -type mask $close"); 153 $status = system ("detsearch -quiet -image $name $ccds[0] split -type flat $close"); 154 if ($status) { die "ERROR: can't get valid fringe frame for this image\n"; } 155 } 156 157 # final output is @fitlist 158 # detrend @rawlist @detlist 159 # demode @detlist @demlist 160 # defringe @demlist @deflist 141 ($tmp, $bin1, $bin2, $raster) = split (" ", `echo $input | fields CCDBIN1 CCDBIN2 RASTER`); 142 if ($?) { die "ERROR: failure reading header keywords (2)\n"; } 143 144 if ($bin1 != 1) { die "ERROR: $input: binned image\n"; } 145 if ($bin2 != 1) { die "ERROR: $input: binned image\n"; } 146 if ($raster ne "FULL") { die "ERROR: $input: sub-rastered image\n"; } 147 148 # (skip check availablility of detrend frames; flatten.flips, detrend, demode all do this!) 149 150 # final output is @fitlist 151 # detrend $input[ccd] @detlist 152 # demode @detlist @demlist 153 # defringe @demlist @deflist 161 154 # if we skip a step, re-assign list as needed: 162 155 if ( $DO_DEFRINGE && $DO_DEMODE) { @deflist = @fitlist; } … … 166 159 167 160 # run the detrend system 168 for ($i = 0; $i < @rawlist; $i++) { 169 170 $status = vsystem ("flatten.flips $close -quiet $rawlist[$i] $detlist[$i] $ccds[$i] split"); 171 if ($status) { &escape ("ERROR: problem running flatten on $rawlist[$i]"); } 161 for ($i = 0; $i < @ccds; $i++) { 162 $status = vsystem ("flatten.flips $close -quiet $input $detlist[$i] $ccds[$i] mef"); 163 if ($status) { &escape ("ERROR: problem running flatten on $input, $ccds[$i]"); } 172 164 } 173 165 174 166 # we need files containing detlist, demlist, deflist: 175 167 if ($DO_DEMODE || $DO_DEFRINGE) { 176 $detlist = "$ ARGV[1].detlist";168 $detlist = "$outdir.detlist"; 177 169 open (FILE, ">$detlist"); 178 170 foreach $name (@detlist) { … … 182 174 } 183 175 if ($DO_DEMODE) { 184 $demlist = "$ ARGV[1].demlist";176 $demlist = "$outdir.demlist"; 185 177 open (FILE, ">$demlist"); 186 178 foreach $name (@demlist) { … … 190 182 } 191 183 if ($DO_DEFRINGE) { 192 $deflist = "$ ARGV[1].deflist";184 $deflist = "$outdir.deflist"; 193 185 open (FILE, ">$deflist"); 194 186 foreach $name (@deflist) { … … 200 192 if ($DO_DEMODE) { 201 193 $status = vsystem ("demodemap $detlist $demlist $close"); 202 if ($status) { &escape ("ERROR: problem running demodemap on $ ARGV[1]"); }194 if ($status) { &escape ("ERROR: problem running demodemap on $outdir"); } 203 195 } 204 196 205 197 if ($DO_DEFRINGE) { 206 198 $status = vsystem ("defringe $demlist $deflist $close"); 207 if ($status) { &escape ("ERROR: problem running defringe on $ ARGV[1]"); }199 if ($status) { &escape ("ERROR: problem running defringe on $outdir"); } 208 200 } 209 201 … … 241 233 return; 242 234 } 235 236 sub basename { 237 238 my ($file) = $_[0]; 239 my ($base, @words); 240 241 @words = split ("/", $file); 242 $base = $words[-1]; 243 return $base; 244 } 245 -
trunk/Ohana/src/perl/src/elixir.postrun
r17 r44 147 147 148 148 if (! -d "$datdir/$runid") { mkdir ("$datdir/$runid", 0777); } 149 vsystem ("mk.ptlist -run $runid > $ptlist"); 149 ($tmp, $start, $stop) = split (" ", `mkrun run $runid`); 150 if ($?) { &escape ("error in RUNID $runid"); } 151 vsystem ("imsearch -type object -trange $start $stop -pt > $ptlist"); 150 152 vsystem ("elixir -D mode sexcomplete $ptlist >& $ptlog &"); 151 153 -
trunk/Ohana/src/perl/src/fr.frstats
r17 r44 30 30 close (MANA); 31 31 if ($?) { &escape ("problem with fr.frstats -fitpars"); } 32 33 &goodbye; 34 } 35 36 # apply fit parameters for given chip 37 if ($ARGV[0] eq "-applyfit") { 38 39 if (@ARGV != 4) { die "USAGE: fr.frstats -applyfit (imlist) (fitpars) (output)\n"; } 40 $list = $ARGV[1]; 41 $pars = $ARGV[2]; 42 $output = $ARGV[3]; 43 44 if (-e $output) { unlink $output; } 45 46 # run mana script: 47 open (MANA, "|mana --norc"); 48 print MANA "input $script\n"; 49 print MANA "applyfitstats $list $pars $output\n"; 50 print MANA "exit 1\n"; 51 close (MANA); 52 if ($?) { &escape ("problem with fr.frstats -applyfit"); } 32 53 33 54 &goodbye; … … 135 156 136 157 sub goodbye { 137 print STDOUT " SUCCESS:finished with fr.stats\n";158 print STDOUT "finished with fr.stats\n"; 138 159 exit 0; 139 160 } -
trunk/Ohana/src/perl/src/fr.mklists
r17 r44 20 20 } 21 21 22 $answer = `cameraconfig $elixir -ccds`;23 @ccds = split (" ", $answer); 22 @ccds = split (" ", `cameraconfig -ccdn`); 23 if ($?) { die "error in config\n"; } 24 24 25 25 $STAT_XCLD = 0; … … 122 122 123 123 open (FILE, ">$ARGV[2]"); 124 for ($i = 0; $i < @ccds; $i++) {124 foreach $ccd (@ccds) { 125 125 $name = $ARGV[1]; 126 $name =~ s/CCDNUM/$ccd s[$i]/;126 $name =~ s/CCDNUM/$ccd/; 127 127 print FILE "$name\n"; 128 128 } … … 285 285 286 286 $master = $ARGV[1]; 287 $imstats = $ARGV[2]; 288 $statlist = $ARGV[3]; 289 $ccd id= $ARGV[4];287 $imstats = $ARGV[2]; # list of basic image stats 288 $statlist = $ARGV[3]; # list of image stat files (1 line per frame) 289 $ccd = $ARGV[4]; 290 290 $output = $ARGV[5]; 291 291 292 $ccd = -1; 293 for ($i = 0; $i < @ccds; $i++) { 294 if ($ccdid eq $ccds[$i]) { 295 $ccd = $i; 296 last; 297 } 298 } 299 if ($ccd == -1) { &escape ("error in CCD ID"); } 292 # $ccd = `cameraconfig -N $ccdid`; 293 # if ($ccd eq "") { &escape ("error in CCD ID"); } 300 294 301 295 open (FILE, $master); … … 313 307 if (@master != @statlist) { &escape ("mismatch in master & statlist file lengths"); } 314 308 309 # find image with strongest fringe amplitude 310 $fringemax = ""; 311 for ($i = 0; $i < @imstats; $i++) { 312 $line = $master[$i]; chop $line; 313 ($path, $root, $mode, $status) = split (" ", $line); 314 if ($status != $STAT_KEEP) { next; } 315 316 $line = $imstats[$i]; chop $line; 317 ($SKY, $fringe, $dfringe) = split (" ", $line); 318 if ($fringemax eq "") { $fringemax = $fringe; } 319 if ($fringemax < $fringe) { $fringemax = $fringe; } 320 } 321 print "fringemax: $fringemax\n"; 322 315 323 open (FILE, ">$output"); 316 317 324 for ($i = 0; $i < @master; $i++) { 318 325 $line = $master[$i]; chop $line; … … 322 329 $line = $imstats[$i]; chop $line; 323 330 ($SKY, $fringe, $dfringe) = split (" ", $line); 324 331 $frnorm = $fringe / $fringemax; 332 # imcombred is not renormalizing: this will force fringe amplitude to a useful level 333 334 # file is list of fringe stats (1 line per chip) 325 335 $file = $statlist[$i]; chop $file; 326 336 open (STAT, "$file"); … … 333 343 # compare $sky with average sky $SKY? 334 344 $dsky = $sky - $SKY; 335 print "$i: $dsky\n"; 336 print FILE "$name $sky $fringe 0.0 0.0\n"; 345 print FILE "$name $sky $frnorm\n"; 337 346 } 338 347 close (FILE);
Note:
See TracChangeset
for help on using the changeset viewer.
