IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 60


Ignore:
Timestamp:
Feb 24, 2003, 2:33:15 PM (23 years ago)
Author:
eugene
Message:

fixed up space check on /tmp, error handling issues

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/perl/src/dads.detrend

    r44 r60  
    22# calls flatten.flips & defringe, but no flips components directly
    33
    4 $CLEANUP = 1;
     4$CLEANUP     = 1;
    55$DO_DEFRINGE = 0;
    66$DO_DEMODE   = 0;
    77
    8 sub vsystem {
    9     print STDERR "@_\n";
    10     $status = system ("@_");
    11     $status;
    12 }
    13 
    14 sub goodbye {
    15     die "@_\n";
    16 }
    17 
    188if (@ARGV != 3) { die "USAGE: dads.detrend (input) (outbase) (level)\n" }
    199
    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
    2915$level = "\U$level\E";
    3016if (($level ne "PERFECT") && ($level ne "BEST") && ($level ne "RAW")) {
     
    3420if ($level eq "BEST") { $close = "-close"; }
    3521
    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 
    4222# check for input file (must be MEF)
    4323if (! -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.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
    68 
    69 # create output lists:
    70 @fitlist = ();
    71 @detlist = ();
    72 @demlist = ();
    73 foreach $ccd (@ccdn) {
    74 
    75     # create output name
    76     $name = "$outdir/$base$ccd.fits";
    77     @fitlist = (@fitlist, $name);
    78 
    79     # create tmp detrended name
    80     $name = "$workdir/$base$ccd.det";
    81     # $name = $workdir . $middle . "det";
    82     @detlist = (@detlist, $name);
    83 
    84     # create tmp demoded name
    85     $name = "$workdir/$base$ccd.dem";
    86     # $name = $workdir . $middle . "dem";
    87     @demlist = (@demlist, $name);
    88 
    89     # create tmp defringed name
    90     $name = "$workdir/$base$ccd.def";
    91     # $name = $workdir . $middle . "def";
    92     @deflist = (@deflist, $name);
    93 }
    9424
    9525# for raw distribution, simply use fhtool to split the files:
     
    10333}
    10434
    105 # load abstracted keywords  (NEED error checking!!)
     35# force output directory to exist
     36if (! -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
    10646($typekwd, $filtkwd, $exptkwd) = split (" ", `gconfig IMAGETYPE-KEYWORD FILTER-KEYWORD EXPTIME-KEYWORD`);
    10747if ($?) { die "ERROR: config system missing keyword abstractions\n"; }
     
    11151if ($?) { die "ERROR: failure reading header keywords (1)\n"; }
    11252
     53# check for valid imagetype & filter
    11354if ($type ne "OBJECT") { die "ERROR: $input: wrong image type\n"; }
    11455$filter = `filtnames $filtvalue`; chop $filter;
    11556if ($?) { die "ERROR: filter not found\n"; }
    11657
    117 # recipe file defines detrend types & cutoff exptime values
     58# check recipe file for detrend types & cutoff exptime values
    11859$recipefile = `gconfig DETREND_RECIPES`; chop $recipefile;
    11960($detypes, $cutoffs) = split (" ", `gconfig -c $recipefile $filter`);
     
    14687if ($raster ne "FULL") { die "ERROR: $input: sub-rastered image\n"; }
    14788
    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
     90print STDOUT "\n";
     91print STDOUT "image: $input, filter: $filter, exptime: $exptime\n";
     92print 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;
     105if ($DO_DEMODE)   { $Need ++; }
     106if ($DO_DEFRINGE) { $Need ++; }
     107$Nneed = $Need*$Nbyte*1.01;
     108
     109# choose a work directory (/tmp vs $outdir):
     110$workdir = $outdir;
     111if ($Nfree > $Nneed) {
     112    $workdir = "/tmp";
     113}
     114
     115print 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 = ();
     124foreach $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
    151144# detrend  $input[ccd] @detlist
    152145# demode   @detlist    @demlist
    153146# defringe @demlist    @deflist
    154147# if we skip a step, re-assign list as needed:
     148
     149# assign input / output lists
    155150if ( $DO_DEFRINGE &&  $DO_DEMODE) { @deflist = @fitlist; }
    156151if ( $DO_DEFRINGE && !$DO_DEMODE) { @deflist = @fitlist; @demlist = @detlist; }
     
    160155# run the detrend system
    161156for ($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");
    163158    if ($status) { &escape ("ERROR: problem running flatten on $input, $ccds[$i]"); }
    164159}
     
    191186
    192187if ($DO_DEMODE) {
    193     $status = vsystem ("demodemap $detlist $demlist $close");
     188    $status = &vsystem ("demodemap $detlist $demlist $close");
    194189    if ($status) { &escape ("ERROR: problem running demodemap on $outdir"); }
    195190}
    196191
    197192if ($DO_DEFRINGE) {
    198     $status = vsystem ("defringe $demlist $deflist $close");
     193    $status = &vsystem ("defringe $demlist $deflist $close");
    199194    if ($status) { &escape ("ERROR: problem running defringe on $outdir"); }
    200195}
     
    228223   
    229224    if (-e $detlist) { unlink ($detlist); }
    230     if (-e $demlist) { unlink ($detlist); }
    231     if (-e $deflist) { unlink ($detlist); }
     225    if (-e $demlist) { unlink ($demlist); }
     226    if (-e $deflist) { unlink ($deflist); }
    232227   
    233228    return;
     
    244239}
    245240
     241sub vsystem {
     242    print STDERR "@_\n";
     243    $status = system ("@_");
     244    $status;
     245}
     246
     247sub goodbye {
     248    die "@_\n";
     249}
     250
Note: See TracChangeset for help on using the changeset viewer.