Changeset 60
- Timestamp:
- Feb 24, 2003, 2:33:15 PM (23 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/perl/src/dads.detrend (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/perl/src/dads.detrend
r44 r60 2 2 # calls flatten.flips & defringe, but no flips components directly 3 3 4 $CLEANUP = 1;4 $CLEANUP = 1; 5 5 $DO_DEFRINGE = 0; 6 6 $DO_DEMODE = 0; 7 7 8 sub vsystem {9 print STDERR "@_\n";10 $status = system ("@_");11 $status;12 }13 14 sub goodbye {15 die "@_\n";16 }17 18 8 if (@ARGV != 3) { die "USAGE: dads.detrend (input) (outbase) (level)\n" } 19 9 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 27 28 # level may be: 'perfect', 'best', 'raw' 10 $input = $ARGV[0]; # input : /path/path/654321o.fits 11 $outdir = $ARGV[1]; # output: /path/path/654321p 12 $level = $ARGV[2]; # level : perfect, best, raw 13 14 # validate level 29 15 $level = "\U$level\E"; 30 16 if (($level ne "PERFECT") && ($level ne "BEST") && ($level ne "RAW")) { … … 34 20 if ($level eq "BEST") { $close = "-close"; } 35 21 36 # force output directory to exist37 if (! -d $outdir) {38 system ("mkdir -p $outdir");39 if ($?) { die "ERROR: can't create output directory\n"; }40 }41 42 22 # check for input file (must be MEF) 43 23 if (! -e $input) { die "ERROR: input file not found\n"; } 44 45 # get image size:46 @words = stat ($input);47 $Nbyte = $words[7];48 49 # check space on /tmp:50 @answer = `df -k /tmp`;51 @words = split (" ", $answer[1]);52 $Nfree = $words[3]*1024;53 54 # choose a work directory (/tmp vs $outdir):55 $workdir = $outdir;56 if ($Nfree > 3*$Nbyte) {57 $workdir = "/tmp";58 }59 60 # extract image rootname from $outdir:61 $base = &basename ($outdir);62 63 # output files are $workdir/$basename$ccdn.ext64 @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 matches68 69 # create output lists:70 @fitlist = ();71 @detlist = ();72 @demlist = ();73 foreach $ccd (@ccdn) {74 75 # create output name76 $name = "$outdir/$base$ccd.fits";77 @fitlist = (@fitlist, $name);78 79 # create tmp detrended name80 $name = "$workdir/$base$ccd.det";81 # $name = $workdir . $middle . "det";82 @detlist = (@detlist, $name);83 84 # create tmp demoded name85 $name = "$workdir/$base$ccd.dem";86 # $name = $workdir . $middle . "dem";87 @demlist = (@demlist, $name);88 89 # create tmp defringed name90 $name = "$workdir/$base$ccd.def";91 # $name = $workdir . $middle . "def";92 @deflist = (@deflist, $name);93 }94 24 95 25 # for raw distribution, simply use fhtool to split the files: … … 103 33 } 104 34 105 # load abstracted keywords (NEED error checking!!) 35 # force output directory to exist 36 if (! -d $outdir) { 37 system ("mkdir -p $outdir"); 38 if ($?) { die "ERROR: can't create output directory\n"; } 39 } 40 41 # load ccd config information 42 @ccdn = split (" ", `cameraconfig -ccdn`); if ($?) { die "ERROR in cameraconfig\n"; } 43 @ccds = split (" ", `cameraconfig -ccds`); if ($?) { die "ERROR in cameraconfig\n"; } 44 45 # load abstracted keywords 106 46 ($typekwd, $filtkwd, $exptkwd) = split (" ", `gconfig IMAGETYPE-KEYWORD FILTER-KEYWORD EXPTIME-KEYWORD`); 107 47 if ($?) { die "ERROR: config system missing keyword abstractions\n"; } … … 111 51 if ($?) { die "ERROR: failure reading header keywords (1)\n"; } 112 52 53 # check for valid imagetype & filter 113 54 if ($type ne "OBJECT") { die "ERROR: $input: wrong image type\n"; } 114 55 $filter = `filtnames $filtvalue`; chop $filter; 115 56 if ($?) { die "ERROR: filter not found\n"; } 116 57 117 # recipe file definesdetrend types & cutoff exptime values58 # check recipe file for detrend types & cutoff exptime values 118 59 $recipefile = `gconfig DETREND_RECIPES`; chop $recipefile; 119 60 ($detypes, $cutoffs) = split (" ", `gconfig -c $recipefile $filter`); … … 146 87 if ($raster ne "FULL") { die "ERROR: $input: sub-rastered image\n"; } 147 88 148 # (skip check availablility of detrend frames; flatten.flips, detrend, demode all do this!) 149 150 # final output is @fitlist 89 # print a summary of the processing 90 print STDOUT "\n"; 91 print STDOUT "image: $input, filter: $filter, exptime: $exptime\n"; 92 print STDOUT "detrend processing: defringe: $DO_DEFRINGE, demode: $DO_DEMODE, level: $level\n\n"; 93 94 # get image size: 95 @words = stat ($input); 96 $Nbyte = $words[7]; 97 98 # check space on /tmp: 99 @answer = `df -k /tmp`; 100 @words = split (" ", $answer[1]); 101 $Nfree = $words[3]*1024; 102 103 # need space in workdir for one image for each of DEMODE & DEFRINGE: 104 $Need = 0; 105 if ($DO_DEMODE) { $Need ++; } 106 if ($DO_DEFRINGE) { $Need ++; } 107 $Nneed = $Need*$Nbyte*1.01; 108 109 # choose a work directory (/tmp vs $outdir): 110 $workdir = $outdir; 111 if ($Nfree > $Nneed) { 112 $workdir = "/tmp"; 113 } 114 115 print STDERR "Need workspace for $Need images: $Nfree vs $Nneed\n"; 116 117 # extract image rootname from $outdir: 118 $base = &basename ($outdir); 119 120 # create output lists: 121 @fitlist = (); 122 @detlist = (); 123 @demlist = (); 124 foreach $ccd (@ccdn) { 125 126 # create output name 127 $name = "$outdir/$base$ccd.fits"; 128 @fitlist = (@fitlist, $name); 129 130 # create tmp detrended name 131 $name = "$workdir/$base$ccd.det"; 132 @detlist = (@detlist, $name); 133 134 # create tmp demoded name 135 $name = "$workdir/$base$ccd.dem"; 136 @demlist = (@demlist, $name); 137 138 # create tmp defringed name 139 $name = "$workdir/$base$ccd.def"; 140 @deflist = (@deflist, $name); 141 } 142 143 # final output is @fitlist 151 144 # detrend $input[ccd] @detlist 152 145 # demode @detlist @demlist 153 146 # defringe @demlist @deflist 154 147 # if we skip a step, re-assign list as needed: 148 149 # assign input / output lists 155 150 if ( $DO_DEFRINGE && $DO_DEMODE) { @deflist = @fitlist; } 156 151 if ( $DO_DEFRINGE && !$DO_DEMODE) { @deflist = @fitlist; @demlist = @detlist; } … … 160 155 # run the detrend system 161 156 for ($i = 0; $i < @ccds; $i++) { 162 $status = vsystem ("flatten.flips $close -quiet $input $detlist[$i] $ccds[$i] mef");157 $status = &vsystem ("flatten.flips $close -quiet $input $detlist[$i] $ccds[$i] mef"); 163 158 if ($status) { &escape ("ERROR: problem running flatten on $input, $ccds[$i]"); } 164 159 } … … 191 186 192 187 if ($DO_DEMODE) { 193 $status = vsystem ("demodemap $detlist $demlist $close");188 $status = &vsystem ("demodemap $detlist $demlist $close"); 194 189 if ($status) { &escape ("ERROR: problem running demodemap on $outdir"); } 195 190 } 196 191 197 192 if ($DO_DEFRINGE) { 198 $status = vsystem ("defringe $demlist $deflist $close");193 $status = &vsystem ("defringe $demlist $deflist $close"); 199 194 if ($status) { &escape ("ERROR: problem running defringe on $outdir"); } 200 195 } … … 228 223 229 224 if (-e $detlist) { unlink ($detlist); } 230 if (-e $demlist) { unlink ($de tlist); }231 if (-e $deflist) { unlink ($de tlist); }225 if (-e $demlist) { unlink ($demlist); } 226 if (-e $deflist) { unlink ($deflist); } 232 227 233 228 return; … … 244 239 } 245 240 241 sub vsystem { 242 print STDERR "@_\n"; 243 $status = system ("@_"); 244 $status; 245 } 246 247 sub goodbye { 248 die "@_\n"; 249 } 250
Note:
See TracChangeset
for help on using the changeset viewer.
