From fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 Mon Sep 17 00:00:00 2001
From: Joseph Hunkeler <jhunkeler@gmail.com>
Date: Wed, 8 Jul 2015 20:46:52 -0400
Subject: Initial commit

---
 noao/twodspec/apextract/doc/apextractsys.hlp | 415 +++++++++++++++++++++++++++
 1 file changed, 415 insertions(+)
 create mode 100644 noao/twodspec/apextract/doc/apextractsys.hlp

(limited to 'noao/twodspec/apextract/doc/apextractsys.hlp')

diff --git a/noao/twodspec/apextract/doc/apextractsys.hlp b/noao/twodspec/apextract/doc/apextractsys.hlp
new file mode 100644
index 00000000..a93d9f56
--- /dev/null
+++ b/noao/twodspec/apextract/doc/apextractsys.hlp
@@ -0,0 +1,415 @@
+.help apextract Aug90 noao.twodspec.apextract
+
+.ce
+APEXTRACT System Notes
+
+
+\fBIntroduction\fR
+
+The \fBapextract\fR package is a complex package with a simple
+purpose, the extraction of one dimensional spectra from two dimensional
+images.  The complexity arises from the many algorithms and parameters
+involved.  To manage the complexity of the algorithms, features, parameters,
+functionality, and documentation the package has been organized in terms
+of logical functions which may be invoked in a number of ways.  The
+logical functions are:
+.ls o
+Automatically find a specified number of spectra and assign default
+apertures.  Apertures may also be inherited from another image or
+defined using an interactive graphical interface called the \fIaperture
+editor\fR.
+.le
+.ls o
+Recenter apertures on the image spectrum profiles.
+.le
+.ls o
+Resize apertures based on spectrum profile width.
+.le
+.ls o
+Interactively define or adjust aperture definitions using a graphical
+interface called the \fIaperture editor\fR.  All function may also
+be performed from this editor and, so, provides an alternative
+method of processing and extracting spectra.
+.le
+.ls o
+Trace the positions of spectra profiles from a starting image line
+or column to other image lines or columns and fit a smooth function.
+The trace function is used to shift the center of the apertures
+at each dispersion point in the image.
+.le
+.ls o
+Extract the flux in the apertures into one dimensional spectra in various
+formats.  This includes possible background subtraction, variance
+weighting, and bad pixel rejection.
+.le
+
+The package is logically organized around these functions.  Each
+function has a task devoted to it.  The description of the parameters
+and algorithms for each function are organized according to these
+tasks; namely under the help topics \fBapdefault, apfind, aprecenter,
+apresize, apedit, aptrace\fR, and \fBapsum\fR.  However, each task has
+parameters to allow selecting some or all of the other functions, hence
+it is not necessary to use the individual tasks and often it is more
+convenient to use just the extraction task for all operations.  It is
+also possible to perform all the functions from within a graphical
+interface called the aperture editor.  This is usually only used to
+define and modify aperture definitions but it also has the capability
+to trace spectra and extract them.
+
+Each of the functions has many different options and parameters.  When
+broken down into individual tasks the parameters are also sorted by
+their function though there are then some mutual interdependencies.
+This parameter decomposition was what was available prior to the
+addition of the task \fBapall\fR.  This is the central task of the
+package which performs any and all of the functions required for the
+extraction of spectra and also collects all the parameters into one
+parameter set.  It is recommended that \fBapall\fR be used because it
+collects all the parameters in one place eliminating confusion over
+where a particular parameter is defined.
+
+In summary, the package consists of a number of logical functions which
+are documented by the individual tasks named for that function, but the
+functions are also integrated into each task and the aperture editor to
+providing many different ways for the user to choose to perform the
+functions.
+
+This document describes some of the implementation details and features
+which are hidden from the normal user.
+
+
+\fBParameters\fR
+
+The tasks actually use hidden parameter sets for almost all parameters.
+To see all the parameter sets type
+
+.nf
+	ap> ?_ apextract
+.fi
+
+The relation between the tasks and the hidden parameter sets is given below.
+
+.nf
+	PSET	   TASK
+	apparams - apdefault, apfind, aprecenter, apresize,
+		   apedit, aptrace, apsum, apmask, apscatter
+	apall1   - apall
+	apfit1   - apfit
+	apflat1  - apflatten
+	apnorm1  - apnormalize
+.fi
+
+The hidden parameter sets may be viewed in any of the normal ways
+\fBeparam\fR, \fBlparam\fR, or just by typing their name, except
+their names may not be abbreviated.  Their purpose is to redirect
+parameters to visible parameter sets, to hide some parameters which
+are not meant to be changed by the user, and to include parameters
+used for queries.
+
+Most of the redirected parameters go to a single visible parameter set
+or to package parameters.
+The interesting exception is \fBapparams\fR which provides the
+parameter linkage between the various functional tasks like
+\fBapfind\fR, \fBaptrace\fR, \fBapsum\fR, etc.  Below is a reproduction
+of this parameter set.
+
+.ce
+APPARAMS Hidden Parameter Set
+
+.nf
+				   I R A F  
+                    Image Reduction and Analysis Facility
+PACKAGE = apextract
+   TASK = apparams
+    
+(format =            )_.format) Extracted spectra format
+(extras =        )apsum.extras) Extract sky, sigma, etc.?
+(dbwrite=                  yes) Write to database?
+(initial=                  yes) Initialize answers?
+(verbose=           )_.verbose) Verbose output?
+                                
+                                # DEFAULT APERTURE PARAMETERS
+
+(upper  =     )apdefault.upper) Upper aperture limit relative to center
+(apidtab= )apdefault.apidtable) Aperture ID table (optional)
+                                
+                                # DEFAULT BACKGROUND PARAMETERS
+
+(b_funct= )apdefault.b_function) Background function
+(b_order=   )apdefault.b_order) Background function order
+(b_sampl=  )apdefault.b_sample) Background sample regions
+(b_naver= )apdefault.b_naverage) Background average or median
+(b_niter= )apdefault.b_niterate) Background rejection iterations
+(b_low_r= )apdefault.b_low_reject) Background lower rejection sigma
+(b_high_= )apdefault.b_high_reject) Background upper rejection sigma
+(b_grow =    )apdefault.b_grow) Background rejection growing radius
+                                
+                                # APERTURE CENTERING PARAMETERS
+
+(width  =        )apedit.width) Profile centering width
+(radius =       )apedit.radius) Profile centering radius
+(thresho=    )apedit.threshold) Detection threshold for profile centering
+                                
+                                # AUTOMATIC FINDING AND ORDERING PARAMETERS
+
+(nfind  =        )apfind.nfind) Number of apertures to be found automatically
+(minsep =       )apfind.minsep) Minimum separation between spectra
+(maxsep =       )apfind.maxsep) Maximum separation between spectra
+(order  =        )apfind.order) Order of apertures
+                                
+                                # RECENTERING PARAMETERS
+
+(apertur= )aprecenter.apertures) Select apertures
+(npeaks =   )aprecenter.npeaks) Select brightest peaks
+(shift  =    )aprecenter.shift) Use average shift instead of recentering?
+                                
+                                # RESIZING PARAMETERS
+
+(llimit =     )apresize.llimit) Lower aperture limit relative to center
+(ulimit =     )apresize.ulimit) Upper aperture limit relative to center
+(ylevel =     )apresize.ylevel) Fraction of peak or intensity for automatic widt(peak   =       )apresize.peak) Is ylevel a fraction of the peak?
+(bkg    =        )apresize.bkg) Subtract background in automatic width?
+(r_grow =     )apresize.r_grow) Grow limits by this factor
+(avglimi=  )apresize.avglimits) Average limits over all apertures?
+                                
+                                # EDITING PARAMETERS
+
+e_output=                       Output spectra rootname
+e_profil=                       Profile reference image
+(t_nsum =        )aptrace.nsum) Number of dispersion lines to sum
+(t_step =        )aptrace.step) Tracing step
+(t_width=        )apedit.width) Centering width for tracing
+(t_funct=    )aptrace.function) Trace fitting function
+(t_order=       )aptrace.order) Trace fitting function order
+(t_sampl=      )aptrace.sample) Trace sample regions
+(t_naver=    )aptrace.naverage) Trace average or median
+(t_niter=    )aptrace.niterate) Trace rejection iterations
+(t_low_r=  )aptrace.low_reject) Trace lower rejection sigma
+(t_high_= )aptrace.high_reject) Trace upper rejection sigma
+(t_grow =        )aptrace.grow) Trace rejection growing radius
+                                
+                                # EXTRACTION PARAMETERS
+
+(backgro=    )apsum.background) Background to subtract (none|average|fit)
+(skybox =        )apsum.skybox) Box car smoothing length for sky
+(weights=       )apsum.weights) Extraction weights (none|variance)
+(clean  =         )apsum.clean) Detect and replace bad pixels?
+(niterat=                    2) Number of profile fitting iterations
+(saturat=    )apsum.saturation) Saturation level
+(readnoi=     )apsum.readnoise) Read out noise sigma (photons)
+(gain   =          )apsum.gain) Photon gain (photons/data number)
+(lsigma =        )apsum.lsigma) Lower rejection threshold
+(usigma =        )apsum.usigma) Upper rejection threshold
+(maxtilt=                    3) Maximum excursion for line/column fitting
+(polysep=                 0.95) Marsh algorithm polynomial spacing
+(polyord=                   10) Marsh algorithm polynomial order
+(nsubaps=       )apsum.nsubaps) Number of subapertures per aperture
+                                
+                                # ANSWER PARAMETERS
+
+(ansclob=                   no)  
+(ansclob=                   no)  
+(ansdbwr=                  yes)  
+(ansdbwr=                  yes)  
+(ansedit=                  yes)  
+(ansextr=                  yes)
+(ansfind=                  yes)  
+(ansfit =                  yes)  
+(ansfits=                  yes)  
+(ansfits=                  yes)  
+(ansfits=                  yes)  
+(ansfits=                  yes)  
+(ansfitt=                  yes)  
+(ansfitt=                  yes)  
+(ansflat=                  yes)  
+(ansmask=                  yes)  
+(ansnorm=                  yes)  
+(ansrece=                  yes)  
+(ansresi=                  yes)  
+(ansrevi=                  yes)  
+(ansrevi=                  yes)  
+(ansscat=                  yes)  
+(anssmoo=                  yes)  
+(anstrac=                   no)  
+(mode   =                    q)
+.fi
+
+Note how the parameters are redirected to a variety of tasks.
+
+
+\fBInvisible Parameters\fR
+
+The following algorithm parameters are not visible to the normal user
+and are described only here.
+.ls dbwrite = yes
+Write to database?  Writing to the database is a function just like
+find, edit, extract, etc.  When the task is interactive a query is
+made whether to write to the database which may be answered with the
+usual four values.  When noninteractive the database writing is automatic.
+This parameter provides the possibility of turning off database writing.
+.le
+.ls initialize = yes
+Initialize default queries?  Normally each invocation of a task results
+in new queries independent of the last responses in a prior invocation
+and based only on the functions selected; NO for those not selected and
+yes for those selected.  By setting this to no either the prior values
+may be used or the response values may be set independently of the
+function flags.  This is used in scripts to tie together different
+invocations of the task and to finely control the queries.
+.le
+.ls e_output, e_profile
+These are query parameters used when extraction is invoked from the
+aperture editor.
+.le
+ 
+The following parameters are part of the variance weighted and cleaning
+extractions.  They are described further in \fBapprofiles\fR.
+.ls niterate = 2
+Number of rejection iterations in the profile determination when cleaning.
+Iteration of the profile is slow and the low order fitting function
+is not very sensitive to deviant points.
+.le
+.ls maxtilt = 3
+Maximum excursion separating the two profile fitting algorithms.
+.le
+.ls polysep = 0.95
+Marsh algorithm polynomial spacing.
+.le
+.ls polyorder = 10
+Marsh algorithm polynomial order.
+.le
+
+
+\fBQuery Mechanism and Invisible Query Parameters\fR
+
+The querying mechanism of the \fBapextract\fR package is a nice feature
+but has some complexities in implementation.  At the bottom of the
+mechanism are CL checks of the parameters described below.  The parameter
+is accessed first as a hidden parameter.  If the value is YES or NO
+then the appropriate function is performed or not.  If the value is
+lower case then the task supplies a prompt string, which varies by
+including the image and/or aperture involved, the mode of the
+parameter is changed to query, and the parameter is requested again
+leading to a CL query of the user with the current default value.
+Finally, the parameter is returned to hidden mode.
+
+If the \fIinitialize\fR parameter is no then the initial default
+query values are those set before the task is invoked.  This provides
+very fine control of the query mechanism and linking different
+invocations of the tasks to previous user responses.   It is intended
+only for complex scripts such as those in the spectroscopic \fBimred\fR
+packages.  Normally the initial values of the parameters are set
+during task startup  based on the function flags.  If a flag is no
+then the related query parameter is NO.  If the function flag is yes
+then when the task is interactive the initial value is yes otherwise
+it is YES.  The solely interactive functions, such as editing, are
+set to NO when the task is noninteractive regardless of the function
+selection.
+.ls ansclobber, ansclobber1
+Used to define the action to be taken if an output image would be clobbered.
+Normally the action is to query if interactive and not clobber if
+noninteractive.  The first parameter acts as the function switch and
+the second as the actual query.
+.le
+.ls ansdbwrite, ansdbwrite1
+The second parameter is used by the task to mark whether any changes have
+been made that might require a database update.  The first parameter is
+the actual query parameter for the \fIdbwrite\fR function flag.
+.le
+.ls ansedit
+Query parameter for the interactive editing function.
+.le
+.ls ansextract
+Query parameter for the extraction function.
+.le
+.ls ansfind
+Query parameter for the find function.
+.le
+.ls ansfit
+Query parameter for the fit function of \fBapfit\fR.
+.le
+.ls ansfitscatter
+Query parameter for the interactive fitscatter function of \fBapscatter\fR.
+.le
+.ls ansfitsmooth
+Query parameter for the interactive fitsmooth function of \fBapscatter\fR.
+.le
+.ls ansfitspec
+Query parameter for the interactive fitspec function of \fBapflatten\fR
+and \fBapnormalize\fR.  This applies to each image.
+.le
+.ls ansfitspec1
+Query parameter for the interactive fitspec function of \fBapflatten\fR
+and \fBapnormalize\fR.  This applies to each aperture in an image.
+.le
+.ls ansfittrace
+Query parameter for the interactive fittrace function.
+This applies to each image.
+.le
+.ls ansfittrace1
+Query parameter for the interactive fittrace function.
+This applies to each aperture in an image.
+.le
+.ls ansflat
+Query parameter for the flatten function of \fBapflatten\fR.
+.le
+.ls ansmask
+Query parameter for the mask function of \fBapmask\fR.
+.le
+.ls ansnorm
+Query parameter for the normalize function of \fBapnormalize\fR.
+.le
+.ls ansrecenter
+Query parameter for the recenter function.
+.le
+.ls ansresize
+Query parameter for the resize function.
+.le
+.ls ansreview
+Query parameter for the interactive extraction review function.
+This applies to each image.
+.le
+.ls ansreview1
+Query parameter for the interactive extraction review function.
+This applies to each aperture in an image.
+.le
+.ls ansscat
+Query parameter for the subtract function of \fBapscatter\fR.
+.le
+.ls anssmooth
+Query parameter for the smooth function of \fBapscatter\fR.
+.le
+.ls anstrace
+Query parameter for the trace function.
+.le
+
+
+\fBTask Entry Points\fR
+
+Logical tasks in IRAF are organized as multiple procedures in one physical
+task selected by the IRAF main.  The \fBapextract\fR package extends
+this concept to a lower level.  All of the package tasks go through
+one procedure, \fBapall\fR.  This procedure handles all of the
+startup details and breaks the logical task down into selected
+functions which are implemented as other procedures.  There are
+a couple of interesting and unusual features of this organization.
+
+IRAF physical tasks may map multiple logical task names to the same
+procedure.  However, the procedure will not know under what name it
+was called.  In this package we want to know the logical task name
+in order to select the appropriate hidden parameter set and to
+make minor adjustments in what the tasks do while maintaining the
+same basic logical flow and source code.  To do this dummy entry
+points are used whose only function is to call \fBapall\fR and
+pass an indication of the task name.
+
+Based on the task name a named parameter set is opened with \fBclopset\fR
+and then all CLIO calls use the returned pointer and can be blind to the
+actual parameter set used.
+
+In addition to the tasks defined in the package and their associated
+parameter sets there is one more task entry point called \fBapscript\fR
+with parameter set \fBapscript\fR.  It is intended for use in scripts
+as it's name implies.  For this reason it does not need an intermediate
+hidden parameter set.  For examples of it's use see the \fBimred\fR
+packages such as \fBnessie\fR.
+.endhelp
-- 
cgit 

