aboutsummaryrefslogtreecommitdiff
path: root/noao/imred/quadred/src/quad/quadproc.cl
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2015-07-08 20:46:52 -0400
commitfa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch)
treebdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/imred/quadred/src/quad/quadproc.cl
downloadiraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz
Initial commit
Diffstat (limited to 'noao/imred/quadred/src/quad/quadproc.cl')
-rw-r--r--noao/imred/quadred/src/quad/quadproc.cl173
1 files changed, 173 insertions, 0 deletions
diff --git a/noao/imred/quadred/src/quad/quadproc.cl b/noao/imred/quadred/src/quad/quadproc.cl
new file mode 100644
index 00000000..3a881cd7
--- /dev/null
+++ b/noao/imred/quadred/src/quad/quadproc.cl
@@ -0,0 +1,173 @@
+procedure quadproc (images)
+
+begin
+ string ims, in_list, cal_list, qp_list
+ int nims
+ struct buffer
+
+ # Freeze input image list
+ in_list = mktemp ("uparm$tmp")
+ ccdlist (images, ccdtype="", names+, > in_list)
+ ims = "@"//in_list
+
+ # Check that the input list contains some images of the specified type.
+ ccdssselect (ims, ccdtype=ccdtype, subset="") | count | scan (nims)
+ if (nims == 0) { # Nothing to do !
+ delete (in_list, ver-)
+ return
+ }
+
+ # Set initial values for the ccdproc parameters used for fitting the
+ # overscan. These parameters may be modified during the interactive
+ # fitting process, the new values being used for all subsequent fits.
+ qccdproc.function = function
+ qccdproc.order = order
+ qccdproc.sample = sample
+ qccdproc.naverage = naverage
+ qccdproc.niterate = niterate
+ qccdproc.low_reject = low_reject
+ qccdproc.high_reject = high_reject
+ qccdproc.grow = grow
+ qccdproc.interactive = interactive
+
+ if (overscan || trim || fixpix) {
+ # Only those images which must be treated specialy are processed
+ # with qproc:
+ # 1) Multiple readout
+ # 2) Not already trimmed
+
+ # First process [OT] any calibration images which WILL BE USED so
+ # that we can be sure they will be reduced explicitly by qproc
+ # rather than automaticaly within ccdproc.
+ qp_list = mktemp ("uparm$tmp")
+
+ if (noproc) {
+
+ cal_list = mktemp ("uparm$tmp")
+ qpcalimage (images=ims, only_param=yes, check=no, > cal_list)
+ qpselect ("@"//cal_list, ccdtype="", stop=no, > qp_list)
+ delete (cal_list, ver-)
+ count (qp_list) | scan (nims)
+ if (nims > 0) {
+ printf ("Calibration images which will be processed:\n")
+ qnoproc (qp_list, fixpix=fixpix, overscan=overscan,
+ trim=trim, fixfile=fixfile, xskip1=xskip1, xskip2=xskip2,
+ xtrim1=xtrim1, xtrim2=xtrim2, ytrim1=ytrim1, ytrim2=ytrim2)
+
+ printf ("\nImages from the input list:\n")
+ }
+
+ } else {
+
+ cal_list = mktemp ("uparm$tmp")
+ qpcalimage (images=ims, only_param=no, check=no, > cal_list)
+ qpselect ("@"//cal_list, ccdtype="", stop=no, > qp_list)
+ delete (cal_list, ver-)
+ count (qp_list) | scan (nims)
+ if (nims > 0) {
+ qproc (qp_list, fixpix=fixpix, overscan=overscan, trim=trim,
+ readaxis=readaxis, fixfile=fixfile, xskip1=xskip1,
+ xskip2=xskip2, xtrim1=xtrim1, xtrim2=xtrim2, ytrim1=ytrim1,
+ ytrim2=ytrim2)
+
+ }
+ }
+
+ delete (qp_list, ver-)
+
+ # Now process all the remaining images.
+ qpselect (ims, ccdtype=ccdtype, stop=no, >> qp_list)
+
+ if (noproc) {
+ qnoproc (qp_list, fixpix=fixpix, overscan=overscan,
+ trim=trim, fixfile=fixfile, xskip1=xskip1, xskip2=xskip2,
+ xtrim1=xtrim1, xtrim2=xtrim2, ytrim1=ytrim1, ytrim2=ytrim2)
+ } else {
+ qproc (qp_list, fixpix=fixpix, overscan=overscan, trim=trim,
+ readaxis=readaxis, fixfile=fixfile, xskip1=xskip1,
+ xskip2=xskip2, xtrim1=xtrim1, xtrim2=xtrim2, ytrim1=ytrim1,
+ ytrim2=ytrim2)
+ }
+
+ delete (qp_list, ver-)
+
+ }
+
+ # Do all other operations with the standard ccdproc.
+
+ if (noproc) {
+
+ # Handle those images that will be processed with qproc ....
+ qpselect (ims, ccdtype=ccdtype, stop=no, >> qp_list)
+
+ # We must also include the calibration images or ccdproc will
+ # complain about missing calibrations.
+ qpcalimage (images=ims, only_param=no, check=no, > cal_list)
+ qpselect ("@"//cal_list, ccdtype="", stop=yes, >> qp_list)
+
+ if (zerocor || darkcor || flatcor || illumcor || fringecor ||
+ readcor || scancor) {
+ qccdproc ("@"//qp_list, noproc=yes,
+ fixpix=no, overscan=no, trim=no, zerocor=zerocor,
+ darkcor=darkcor, flatcor=flatcor, illumcor=illumcor,
+ fringecor=fringecor, readcor=readcor, scancor=scancor,
+ ccdtype=ccdtype, max_cache=max_cache, readaxis=readaxis,
+ fixfile=fixfile, biassec="image", trimsec="image", zero=zero,
+ dark=dark, flat=flat, illum=illum, fringe=fringe,
+ minreplace=minreplace, scantype=scantype, nscan=nscan)
+ }
+
+ printf ("\n")
+ delete (qp_list, ver-)
+
+ # ..... and those that won't
+ qpselect (ims, ccdtype=ccdtype, stop=yes, >> qp_list)
+
+ qccdproc ("@"//qp_list, noproc=yes,
+ fixpix=fixpix, overscan=overscan, trim=trim, zerocor=zerocor,
+ darkcor=darkcor, flatcor=flatcor, illumcor=illumcor,
+ fringecor=fringecor, readcor=readcor, scancor=scancor,
+ ccdtype=ccdtype, max_cache=max_cache, readaxis=readaxis,
+ fixfile=fixfile, biassec="image", trimsec="image", zero=zero,
+ dark=dark, flat=flat, illum=illum, fringe=fringe,
+ minreplace=minreplace, scantype=scantype, nscan=nscan)
+
+ delete (qp_list, ver-)
+
+ } else {
+
+ # 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)
+ }
+ }
+
+ qccdproc (ims, ccdtype=ccdtype, max_cache=max_cache, noproc=no,
+ fixpix=fixpix, overscan=overscan, trim=trim, zerocor=zerocor,
+ darkcor=darkcor, flatcor=flatcor, illumcor=illumcor,
+ fringecor=fringecor, readcor=readcor, scancor=scancor,
+ readaxis=readaxis, fixfile=fixfile, biassec="image",
+ trimsec="image", zero=zero, dark=dark, flat=flat, illum=illum,
+ fringe=fringe, minreplace=minreplace, scantype=scantype,
+ nscan=nscan, backup=backup, interactive=interactive,
+ verbose=verbose, logfile=logfile)
+
+ # Set task parameters used for overscan fitting to the ccdproc
+ # values which may have been adjusted interactively
+ function.p_value = qccdproc.function
+ order.p_value = qccdproc.order
+ sample.p_value = qccdproc.sample
+ naverage.p_value = qccdproc.naverage
+ niterate.p_value = qccdproc.niterate
+ low_reject.p_value = qccdproc.low_reject
+ high_reject.p_value = qccdproc.high_reject
+ grow.p_value = qccdproc.grow
+
+ }
+
+ delete (in_list, ver-)
+end