diff options
Diffstat (limited to 'noao/imred/quadred/src/quad/qproc.cl')
-rw-r--r-- | noao/imred/quadred/src/quad/qproc.cl | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/noao/imred/quadred/src/quad/qproc.cl b/noao/imred/quadred/src/quad/qproc.cl new file mode 100644 index 00000000..d0040d18 --- /dev/null +++ b/noao/imred/quadred/src/quad/qproc.cl @@ -0,0 +1,109 @@ +procedure qproc (image_list) + +begin + struct buffer + string image, answr, imtype + int i, len, nampsx, nampsy + + imtype = "." // envget ("imtype") + i = stridx (",", imtype) + if (i > 0) + imtype = substr (imtype, 1, i-1) + i = strlen (imtype) + + cache ("quadsplit", "quadjoin", "qccdproc", "quadproc") + + + # Validate fixfile + if (fixpix) { + match ("single_readout", fixfile) | scan (buffer) + if (stridx ("#", buffer) == 0) { + buffer = "fixfile " // fixfile // + " cannot be used with multi-readout images" + error (0, buffer) + } + } + + # Initialise interactive query + if (qccdproc.interactive) { + answer.p_value = "yes" + answr = "yes" + } else { + answr = "NO" + } + + fd = image_list + while (fscan (fd, image) != EOF) { + + len = strlen (image) + if (substr(image, len-i+1, len) == imtype) { + image = substr (image, 1, len-i) + } + + # Split out one image for each quadrant and set header sections + #quadsplit (image, output="", + #xskip1=xskip1, xskip2=xskip2, xtrim1=xtrim1, xtrim2=xtrim2, + #ytrim1=ytrim1, ytrim2=ytrim2, clobber=yes) + quadsplit (image, output="", clobber=yes) + + + # Find out of interactive fit is required for this image + if (answr == "yes" || answr == "no") { + printf ("Fit overscan vector for %s interactively\n", image) | + scan (buffer) + answer.p_prompt=buffer + answr = answer + } + + # Overscan correct and trim + if (answr == "yes" || answr == "YES") { + qccdproc.interactive = yes + + print ("YES") | qccdproc (image//".??"//imtype, fixpix=fixpix, + overscan=overscan, trim=trim, readaxis=readaxis, + fixfile=fixfile, biassec="image", trimsec="image", + ccdtype="", max_cache=0, noproc=no, zerocor=no, darkcor=no, + flatcor=no, illumcor=no, fringecor=no, readcor=no, + scancor=no, zero="", dark="", flat="", illum="", fringe="", + minreplace=1., scantype="shortscan", nscan=1, backup="", + logfile="", verbose=no, >> "dev$null") + + # Set parameters of quadproc used for overscan fitting to match + # the ccdproc values which may have been adjusted interactively. + # We do this on every pass in case there is a later interupt + # of task execution. + quadproc.function.p_value = qccdproc.function + quadproc.order.p_value = qccdproc.order + quadproc.sample.p_value = qccdproc.sample + quadproc.naverage.p_value = qccdproc.naverage + quadproc.niterate.p_value = qccdproc.niterate + quadproc.low_reject.p_value = qccdproc.low_reject + quadproc.high_reject.p_value = qccdproc.high_reject + quadproc.grow.p_value = qccdproc.grow + + # Force the parameter update + update ("quadproc") + + } else { + qccdproc.interactive = no + + qccdproc (image//".??"//imtype, fixpix=fixpix, + overscan=overscan, trim=trim, readaxis=readaxis, + fixfile=fixfile, biassec="image", trimsec="image", + ccdtype="", max_cache=0, noproc=no, zerocor=no, darkcor=no, + flatcor=no, illumcor=no, fringecor=no, readcor=no, + scancor=no, zero="", dark="", flat="", illum="", fringe="", + minreplace=1., scantype="shortscan", nscan=1, backup="", + logfile="", verbose=no) + } + + # Combine processed quadrants into single image + quadjoin (image, output="", delete=yes) + + } + + # Reset interactive flag if we haven't recieved a definative NO + if (answr == "no") { + qccdproc.interactive = yes + } +end |