STSDAS v3.2 Full Release Notes CHANGES IN PYRAF SUPPORT In pyexecute.cl the option for how the temporary file used to determine the current package gets deleted was modified so that it doesn't ask the user for permission. CHANGES TO APPLICATIONS DATA.FITS In the readfits.cl script, the 'oldirafname' parameter is set to no to avoid file clobbering problems. ANALYSIS.DITHER - MULTIDRIZZLE Although MultiDrizzle has been available for download separately from STSDAS for some time now, we are including MultiDrizzle in STSDAS for the first time in STSDAS v3.2. MultiDrizzle is an attempt to automate the steps necessary to produce a cosmic-ray cleaned image from individual dithered exposures even when there is only 1 exposure at each dither position. MultiDrizzle applies the following steps: - Apply a mask to each input exposure (usually from the data quality file that is produced with each image by the calibration pipeline). - Determine the sky background in each exposure, and subtract it. - Determine an output image configuration large enough to hold the dithered exposures. - Drizzle each input exposure singly onto this output reference configuration. - Combine the dithered images to remove cosmic rays and other blemishes, using either median, clipped mean or 'minmed' (median, or minimum if only two valid pixels at that location) algorithm. - Blot back the combined image onto each individual exposure's configuration. The provides a 'reference' image that can be used to detect the presence of cosmic rays in each input exposure. - Compare the input exposures with their corresponding blotted 'clean' image and label discrepant pixels as 'bad'. The gradient of the input exposure is also used in deciding whether a pixel is to be labelled as bad; the criterion for labelling a pixel as bad is loosened in regions where the gradient is large otherwise most star-like objects would be mislabelled as cosmic rays. - Drizzle each image into a final output image, rejecting pixels labelled as cosmic rays MultiDrizzle is implemented as a large and complex Python script, calling many IRAF tasks as part of its operation. There is an effort underway to completely re-write MultiDrizzle without using IRAF tasks at all, which will eliminate the need for many of the I/O steps required by MultiDrizzle (since IRAF cannot work with in-memory Python data), and even allow MultiDrizzle to be run under Microsoft Windows. Although much of MultiDrizzle's functionality was already in place at the time of the release of STSDAS 3.1, it was not felt to be ready for general use. In the meantime, several fixes made to MultiDrizzle and PyDrizzle (which MultiDrizzle makes heavy use of) have improved it's resilience and versatility. However, as with all new and complex software, we anticipate that problems will occur and strongly encourage users to submit bug reports to help@stsci.edu. - DITHER Error checking was added to dither.cl to check for the existence of the MultiDrizzle package, along with a message pointing users where they can download the package. This should not be necessary with the inclusion of MultiDrizzle in STSDAS 3.2 - PYDRIZZLE Most of the changes to PyDrizzle were bug fixes. New functionality includes the addition of NICMOS support, converting the shiftfile interpretation to recognize either 'relative' or 'absolute' as the same, and adding the ability to specify a directory for the location of ASCII coefficients files (new parameter 'idcdir' in pydrizzle.par). Changes made to fix problems: V3REF in the 'defaultmodel' was reset to 1 to avoid errors in computing the 'troll' angle (specifically, divide by zero). Registration problems seen when using absolute shifts provided in arcseconds were corrected. The default reference image is now set to be the first in the input list. Problems with 'mergeWCS' that caused the reference position to be miscomputed when applying scale changes were corrected. 'runDrizzle' methods were modified to operate on individual parlists. 'WCSObject' was modified to be more robust in its search of keywords. Problems with interpretation of 'cubic' coeffs files for WFPC2 were corrected. A problem with calling 'runBlot' was corrected. Bugs affecting ACS that were introduced in fixes for WFPC2 treatment of cubic coeffs files were fixed; including, removing unnecessary calls to mergeWCS in 'buildPars'. Problems with 'transformMetachip' were corrected to allow _crj.fits and _asn.fits inputs to produce identical outputs when SkyField objects are specified. Overlap logic was removed to avoid problems with small subarrays. 1 was added to 'nref' in 'getRange' to account for an additional 2 to outputsize in 'getRange' to keep registration. 'mergeWCS' was corrected to properly scale output. Using an empty 'SkyField' object with 'resetPars' produced an output shape of [1,1] due to the use of 'ref.wcs' in 'transformMetachip'; this was fixed. 'crpix1/2' was removed from the computation of 'delta_refx/y' used in 'calcNewCorners' to correct an offset introduced to subarrays which had caused the overlap logic (previously removed in an earlier version) to fail in the pipeline for small subarrays. Problems in using a reference image as output and correctly applying rotations from shift file were corrected. Input WCS with shifts are now not updated; the shift and rotation is instead applied in 'buildPars'. This corrects the problem seen in WFPC2 data with chips moving wildly when applying shifts due to not accounting for rotations and scales of each chip. A new algorithm, 'WBACKWCS', in 'applyAsnShifts' was implemented to properly convert shifts in undistorted frames to each distorted input WCS. The WBACKWCS algorithm replaces the need to use the '.invert()' method of the model, and provides a fully general solution without iteration. Iteration of 'undistortWCS' and 'buildMetachip' was added to 'buildProduct' so that the final product will be built using the same offsets as 'drizzle' uses. The 'recenter()' method in the WCSObject class was corrected to provide a fully general solution for shifting the reference position of a WCS from off-center to the center of the frame, including orientation and plate scale changes. This replaces the 'TROLL' function used before without requiring the use of the PA_V3 keyword (or any like it). Shifts are now computed solely from 'wcsfit' in 'buildPars'. 'drutil.wcsfit' was revised to accept an ObsGeometry class as input rather than a full Observation class. SkyField init() now extracts ra, dec, orient, and psize from input WCS. The 'mergeWCS()' method was modified to compute rotated output sizes, instead of just scaling the input size. Offsets in 'GeometryModel.convert()' were removed so that coefficients are shifted by 1 (by default) to match usage by 'drizzle'. Also offsets were removed from 'drutil.getRange()' as well. 'wtraxy()' was implemented in ObsGeometry class to support 'WBACKWCS' 'undistortWCS' was revised to match results from 'drizzle'. The WCSObject class was updated to report value of '.orient' derived from the CD matrix regardless of value of ORIENTAT in header, while preserving the header value in '.orientat'. ANALYSIS.FITTING In the n2gaussfit task, when the task parameter "sigma" was set to INDEF, this caused the Gaussian random number generator in the nlfit package to fail. It did not crash, but generated incorrect values. This has been fixed. ANALYSIS.ISOPHOTE A few bugs were fixed: - In the 'bmodel.cl' script, part of the code that generated an unwanted prompt was deleted - In the 'ellipse' task, an incorrect function definition had been causing floating-point errors on Linux systems; this has been fixed. - A parameter was mispelled in the script. While this did not cause problems with IRAF's CL, Pyraf correctly refused to accept it. CONTRIB.REDSHIFT A couple of problems were fixed in this package: - 'getimage' was failing to read image headers longer than 36 cards. The section that reads header records was changed so that the whole header is read - The line number parameter was added to the .par file for the fquot task GRAPHICS.STPLOT The 'siaper' task was modified to remove all references to the LTM and LTV keywords. This transformation is already included in the WCS keywords (e.g., in the CD matrix), so it is not appropriate to apply it again. The 'stfov' script and documentation were updated to reflect the installation of ACS in Servicing Mission 3B. The 'igi' task was modified to remove the aspect ratio scaling when drawing ellipses, so that they come out circular on a square region of a plot page. Some unused variables were delete to clean up the build warning messages. HST_CALIB.ACS This version (4.4) implements the following fixes/revisions/upgrades: The PHOTMODE keyword for WFC now only reports 'WFC1' to reflect the cross-normalization of the DQE and flatfields of the ACS WFC chips. When calculating the bias value from the overscan regions of the CCDs, a 2-stage clipping algorithm is now used to mitigate against strong biases in the calculation of the standard deviation by cosmic rays, star bleeds, etc. Pixels that are found to be at the full well of the CCD are now flagged separately from those pixels that are past the saturation level of the Analog to Digital converter. Saturated pixels are now set to the value of the ATOD_SATURATE parameter, which has been revised to 65534. In the BPIXTAB reference file, the CCDAMP and CCDGAIN columns are now optional. SCALENSE was removed from the computation of the error in ACSREJ. An indexing problem for subarray data in 'findover' for biassect[0] was fixed. A memory problem was fixed to handle arbitrary buffer lengths, not just those divisible by 8. aXe was upgraded to v1.3. Details are available from the aXe web site, http://www.stecf.org/software/aXe/ HST_CALIB.STIS The Q factor algorithm in calstis6 gave incorrect values for low source flux levels and long exposure times. The corrected algorithm now corrects the mean dark counts and read noise for the extraction width and does not multiply the mean dark counts by the exposure time. The MEANDARK parameter is now computed using the median instead of the average. The CTI correction was being applied to the net count rate; it is now being applied to the flux. The gross count rate G used in the computation now includes dark counts and spurious charge. The background count rate B' is per pixel, rather than per 7-pixel extraction region. The description of 'a2center' in the x1d help file was improved, and the connection with 'maxsrch' was described. Descriptions of the parameters 'bksmode' and 'bksorder' were added. 'doppinfo' is now included in the list of directories in the mkpkg file. A bug is fixed in the calstis6idt status messages, so that the completion statement is now printed. An uninitialized variable for the time-dependent sensitivity correction caused CALSTIS to stop with the message that the TDSTAB (but with a blank name) was not found. This error only occurs if the uninitialized variable happens to have the value 1, which should be rare but did occur for one dataset. The variable is now initialized correctly. CALSTIS occasionally failed with the rather obscure error message: "illegal input string 'crsigmas'". This error occurs only rarely and only under Linux. It is due to the so-called "excess precision" problem on x86 machines. There was code in CALSTIS that assumed that two floating point variables should test equal if one has just been assigned to the value of the other, but this can fail if one of the variables is in a register (with 10 bytes) and the other variable is in memory (four bytes). The code has been rewritten to avoid the assumption of equality. calstis7 has been improved by applying a correction for the slit angle. Wavecals taken with the fiducial apertures now produce accurate wavelengths. A new column was added to the aperture description table for storing the slit angles.