.. _release_notes:

========================
DrizzlePac Release Notes
========================

The version of DrizzlePac can be identified using ::

> python
>>> import drizzlepac
>>> drizzlepac.__version__

The following notes provide some details on what has been revised for each
version in reverse chronological order (most recent version at the top
of the list).


DrizzlePac v2.1.16 (05-June-2017)
=================================

- Fixed a bug introduced in release v2.1.15 in the logic for merging WCS due to
  which custom WCS scale was being ignored.

DrizzlePac v2.1.15 (26-May-2017)
================================

- ``fits.io`` operations will no longer use memory mapping in order
  to reduce the number of file handles used when running either
  ``astrodrizzle`` or ``tweakreg``. See
  `issue #39 <https://github.com/spacetelescope/drizzlepac/issues/39>`_
  for more details.

- Fixed bugs and improved the logic for merging WCS that is used to define
  ``astrodrizzle``'s output WCS.

- Added ``crpix1`` and ``crpix2`` parameters to custom WCS.


DrizzlePac v2.1.14 (28-Apr-2017)
================================

- Supressed info messages related inconsistent WCS - see
  `issue #60 <https://github.com/spacetelescope/drizzlepac/pull/60>`_ and
  `stwcs issue #25 <https://github.com/spacetelescope/stwcs/issues/25>`_
  for more details.


DrizzlePac v2.1.13 (11-Apr-2017)
================================

- Fixed a bug due to which sky background was subtracted by ``astrodrizzle``
  from the images even though ``skysub`` was set to `False` when
  ``MDRIZSKY`` was already present in input images' headers.


DrizzlePac v2.1.12 (04-Apr-2017)
================================

- ``astrodrizzle`` now will run ``updatewcs()`` on newly created images
  when necessary, e.g., after converting WAVERED FITS to MEF format
  (``*c0f.fits`` to ``*_c0h.fits``) or after unpacking multi-imset STIS
  ``_flt`` files. See
  `PR #56 <https://github.com/spacetelescope/drizzlepac/pull/56>`_ for
  more details.

- Fixed a bug that was preventing processing STIS image data.

- Fixed a bug in reading user input (see
  `issue #51 <https://github.com/spacetelescope/drizzlepac/issues/51>`_).


DrizzlePac v2.1.11 (24-Mar-2017)
================================

Bug fix release (a bug was introduced in v2.1.10).


DrizzlePac v2.1.10 (23-Mar-2017)
================================

Some of the changes introduced in release v2.1.9 were not backward compatible.
This release makes those changes backward compatible.


DrizzlePac v2.1.9 (22-Mar-2017)
===============================

Compatibility improvements with Python 3 and other STScI software packages.


DrizzlePac v2.1.8 (08-Feb-2017)
===============================

- Drizzlepac code will no longer attempt to delete "original" (WCS key 'O')
  resulting in a decreased number of warnings
  (see `issue #35 <https://github.com/spacetelescope/drizzlepac/issues/34>`_ ).

- Negative values are now zeroed in the 'minmed' step before attempting to
  estimate Poisson errors
  (see `issue #22 <https://github.com/spacetelescope/drizzlepac/issues/22>`_).

- Fixed a bug in ``tweakreg`` due to incorrect matrix inversion.

- Improved compatibility with `astropy.io.fits` ('clobber' parameter) and
  `numpy` which has reduced the number of deprecation warnings).

- Existing static masks in the working directory are now overwritten and not
  simply re-used (see
  `issue #23 <https://github.com/spacetelescope/drizzlepac/issues/23>`_).

- Corrected formula for :math:`\sigma` computation in the "create median" step
  to convert background to electrons before computations. This bug was
  producing incorrect :math:`\sigma` for instruments whose gain was different
  from one.

- Improved ``astrodrizzle`` documentation for ``combine_type`` parameter which
  now also documents the formula for :math:`\sigma` computation
  when ``combine_type`` parameter is set to ``'minmed'``.


DrizzlePac v2.1.6 and 2.1.7rc (15-Aug-2016)
===========================================

Package maintenance release.


DrizzlePac v2.1.5 (09-Aug-2016)
===============================

Technical re-release of ``v2.1.4``.


DrizzlePac v2.1.4 (01-Jul-2016)
===============================

The following bug fixes have been implemented:

- ``tweakreg`` crashes when run with a single input image and
  a reference catalog.

- Fixes an issue due to which ``tweakreg``, when updating image headers,
  would not add '-SIP' suffix to CTYPE


DrizzlePac v2.1.3 (16-Mar-2016)
===============================

- Improved ASN input file handling.

- ``astrodrizzle`` does not delete ``d2imfile`` anylonger allowing multiple
  runs of ``updatewcs`` on the same WFPC2 image, see
  `Ticket 1244 <https://trac.stsci.edu/ssb/stsci_python/ticket/1244>`_
  for more details.

- Allow exclusion regions in ``tweakreg`` to be in a different directory and
  allow relative path in exclusion region file name.

- Improved handling of empty input image lists.

- ``tweakreg`` bug fix: use absolute value of polygon area.



DrizzlePac v2.1.2 (12-Jan-2016)
===============================

- ``runastrodriz`` moved to ``drizzlepac`` from ``acstools`` and
  ``wfc3tools`` packages.

- Improved logic for duplicate input detection.

- Improved logic for handling custom WCS parameters in ``astrodrizzle``.

- Compatibility improvements with Python 3.


DrizzlePac v2.1.1
=================

**Available under SSBX/IRAFX starting:** Nov 17, 2015

This release includes the following bug fixes:

- Resolved order of operation problems when processing WFPC2 data with
  DGEOFILEs.

- The conversion of the WFPC2 ``DGEOFILE`` into ``D2IMFILE`` is now
  incorporated into ``STWCS`` v1.2.3 (r47112, r47113, r47114) rather than a
  part of ``astrodrizzle``. This requires users to run updatewcs first, then
  ``astrodrizzle``/``tweakreg`` will work with that WFPC2 data seamlessly
  (as if they were ACS or WFC3 data).

- Compatibility improvements with Python 3.


DrizzlePac(astrodrizzle) v2.1.0
===============================

**Available under SSBX/IRAFX starting:** Nov 2, 2015

This version builds upon the major set of changes implemented in v2.0.0 by not
only fixing some bugs, but also cleaning up/changing/revising some APIs and
docstrings. The complete list of changes includes:

- [API Change] The 'updatewcs' parameter was removed from both the
  ``astrodrizzle`` and ``tweakreg`` interactive TEAL interfaces.
  The 'updatewcs' parameter can still be used with the Python interface for
  both the ``astrodrizzle``. ``astrodrizzle``() and ``tweakreg``. Call the
  ``stwcs.updatewcs.updatewcs()`` function separately before running
  ``astrodrizzle`` or ``tweakreg``.

- [API Change] The stand-alone interface for the blot routine
  (``ablot.blot()``) has been revised to work seamlessly with
  astrodrizzle-generated products while being more obvious how to call it
  correctly. The help file for this task was also heavily revised to document
  all the input parameters and to provide an example of how to use the task.

- [API Change] Coordinate transformation task
  (``pixtopix``/``pixtosky``/``skytopix``) interfaces changed to be more
  consistent, yet remain backward-compatible for now.

- Both ``astrodrizzle`` and ``tweakreg`` now return an output CD matrix which
  has identical cross-terms indicating the same scale and orientation in each
  axis (an orthogonal CD matrix). This relies on a revision to the
  ``stwcs.distortion.utils.output_wcs()`` function.

- The user interfaces to all 3 coordinate transformation tasks now use
  'coordfile' as the input file of coordinates to transform. The use
  of 'coords' has been deprecated, but still can be used if needed. However,
  use of 'coordfile' will always override any input provided simultaneously
  with 'coords' parameter.  Help files have been updated to document this as
  clearly as possible for users.

- User-provided list of input catalogs no longer needs to be matched exactly
  with input files. As long as all input images are included in input catalog
  list in any order, ``tweakreg`` will apply the correct catalog to the
  correct file.

- ``tweakreg`` has been updated to correctly and fully apply source selection
  criteria for both input source catalogs and reference source catalogs based
  on ``fluxmin``, ``fluxmax`` and ``nbright`` for each.

- All use of keyword deletion has been updated in ``drizzlepac`` (and
  ``fitsblender``) to avoid warnings from astropy.

- All 3 coordinate transformation tasks rely on the input of valid WCS
  information for the calculations. These tasks now warn the user when it
  could not find a valid WCS and instead defaulted to using a unity WCS, so
  that the user can understand what input needs to be checked/revised to get
  the correct results.

- Exclusion/inclusion region files that can be used with ``tweakreg`` can now
  be specified in image coordinates and sky coordinates and will only support
  files written out using DS9-compatible format.

- The filename for 'final_refimage' in ``astrodrizzle`` and 'refimage' in
  ``tweakreg`` can now be specified with OR without an extension, such as
  '[sci,1]' or '[0]'.  If no extension is specified, it will automatically
  look for the first extension with a valid HSTWCS and use that. This makes
  the use of this parameter in both place consistent and more general than
  before.

- The reported fit as written out to a file has been slightly modified to
  report more appropriate numbers of significant digits for the results.

- Use of astrolib.coords was removed from ``drizzlepac`` and replaced by use
  of astropy functions instead. This eliminated one more obsolete dependency
  in our software.

- Code was revised to rely entirely on ``astropy.wcs`` instead of stand-alone
  pywcs.

- Code was revised to rely entirely on ``astropy.io.fits`` instead of
  stand-alone pyfits.

- Added `photeq` task to account for inverse sensitivity variations across
  detector chips and/or epochs.

- WFPC2 data from the archive with ``DGEOFILE`` reference files will now need
  to be processed using ``stwcs.updatewcs`` before running them through
  ``astrodrizzle`` or ``tweakreg``.  This update converts the obsolete,
  unsupported ``DGEOFILE`` correction for the WFPC2 data into a ``D2IMFILE``
  specific for each WFPC2 observation, then uses that to convert the WCS based
  on the new conventions used for ACS and WFC3.

This set of changes represents the last major development effort for
``DrizzlePac`` in support of HST.  Support of this code will continue
throughout the lifetime of HST, but will be limited primarily to bug fixes
to keep the code viable as Python libraries used by ``DrizzlePac`` continue
to develop and evolve with the language.


DrizzlePac v2.0.0 Release Notes
===============================

** Available under SSBX/IRAFX starting:** Aug 4, 2014

This version encompasses a large number of updates and revisions to the
``DrizzlePac`` code, including the addition of new tasks and several parameter
name changes. The scope of these changes indicates the level of effort that
went into improving the ``DrizzlePac`` code to make it easier and more
productive for users. The most significant updates to the ``DrizzlePac``
code include:

- The Python code has been updated to work identically (without change) under
  both Python 2.7 and Python 3.x.

- Implementing sky matching, a new algorithm for matching the sky across a set
  of images being combined by ``astrodrizzle``.

- Updating ``tweakreg`` to now align full mosaics where some images may not
  overlap others in the mosaic.

- Added the option to write out single drizzle step images as compressed images
  (to save disk space for large mosaics, and I/O time for single drizzle step).

- Improved ``tweakreg`` residual plots visually while allowing them to be
  written out automatically when ``tweakreg`` gets run in non-interactive mode.

- Renamed parameters in ``tweakreg`` and imagefind to eliminate name clashes.

- Added option to select sources based on sharpness/roundness when ``tweakreg``
  searches for sources.

- Added support for exclusion and inclusion regions arbitrary shape/size when
  ``tweakreg`` searches for sources.

- Added a full set of source detection parameters for reference image to
  support multi-instrument alignment in ``tweakreg``.

- Added support for new (simpler, more robust) ACS calibration of
  time-dependent distortion.

- A full 6-parameter general linear fit can now be performed using
  ``tweakreg``, in addition to shift and rscale.

- Cleaned up logic for sky-subtraction: user can now turn off sky-subtraction
  with skysub=no, and still specify a user-defined sky value as the skyuser
  keyword.  This will reduce(eliminate?) the need to manually set
  ``MDRIZSKY=0``.

In addition to these major updates/changes, numerous smaller bugs were fixed
and other revisions were implemented which affected a small portion of the
use cases, such as:

- headerlet code now accepts lists of files to be updated.

- source sky positions (RA and Dec) now included in match file.

- DQ flags can now be taken into account when performing source finding in
  ``tweakreg``.

- all intermediate files generated by ``astrodrizzle`` will now be removed when
  using 'clean'='yes'.

- a problem was fixed that caused ``createMedian`` to crash where there were no
  good pixels in one of the images (when they did not overlap).

- interpretation of shiftfile now improved to handle arbitrarily-long
  filenames, rather than being limited to 24 character filenames.

- documentation has been updated, sometimes with a lot more extensive
  descriptions.

This version of ``DrizzlePac`` also requires use of the latest release version
of astropy primarily for WCS and FITS I/O support.


DrizzlePac(astrodrizzle) v1.1.16
================================
**Publicly Released through PyPI:** Mar 27, 2014

**Available under SSBX/IRAFX starting:** Mar 13, 2014

- Support for WFPC2 GEIS input images improved to correctly find the associated
  DQ images.

- Static mask files created for all chips in an image now get deleted when
  using the 'group' parameter to only drizzle a single chip or subset of chips.
- Fixed problem caused by changes to ``stsci.tools`` code so that
  ``drizzlepac`` will reference the correct extensions in input images.


DrizzlePac(astrodrizzle) v1.1.15(30-Dec-2013)
=============================================
**Publicly Released through PyPI:** Jan 14, 2014

**Available under SSBX/IRAFX starting:** Jan 6, 2014

Bug fixes
^^^^^^^^^

- Files created or updated by ``drizzlepac``, ``fitsblender``,
  or ``STWCS`` tasks, e.g. ``tweakreg`` or ``apply_headerlet``,
  will now ensure that the ``NEXTEND`` keyword value correctly reflects the
  number of extensions in the FITS file upon completion.


DrizzlePac(astrodrizzle) v1.1.14dev(21-Oct-2013)
================================================
**Installed in OPUS:** Dec 11, 2013

**Available starting:** Oct 28, 2013

Bug fixes
^^^^^^^^^

- DQ arrays in input images now get updated with cosmic-ray masks
  computed by ``astrodrizzle`` when run with the parameter ``in_memory=True``.
  This restored the cosmic-ray masks detected during pipeline processing.


DrizzlePac(astrodrizzle) v1.1.13dev(11-Oct-2013) in IRAFX
=========================================================
**available starting:** Oct 21, 2013

- ``tweakreg`` can now be run in 'batch' mode. This allows the user to generate
  plots and have them saved to disk automatically without stopping processing
  and requiring any user input.


DrizzlePac(astrodrizzle) v1.1.12dev(05-Sep-2013) in IRAFX
=========================================================
**available starting:** Sept 9, 2013

This version fixed a couple of bugs in ``astrodrizzle``; namely,

- Logic was updated to support pixfrac = 0.0 without crashing. Ths code will
  now automatically reset the kernel to 'point' in that case.
- ``astrodrizzle`` now forcibly removes all OPUS WCS keywords from drizzle
  product headers.

- Default rules for generating drizzle product headers (as used in the archive)
  were modified to add definitions for 'float_one', 'int_one', 'zero' that
  generate output values of 1.0, 1, and 0 (zero) respectively for use as
  keyword values. This allows the LTM* rules to replace 'first' with
  'float_one' so that the physical and image coordinates for drizzle
  products are consistent.

Additionally, changes were made to ``STWCS`` for reprocessing use:

- Problems with using ``apply_headerlet_as_primary()`` from the ``STWCS``
  package on WFPC2 data have been corrected in this revision.


DrizzlePac(astrodrizzle) v1.1.11dev(05-Jul-2013) in IRAFX
=========================================================
**Available starting:** July 15, 2013

- AstroDrizzle now can process all STIS data without crashing.


DrizzlePac(astrodrizzle) v1.1.10dev(06-Feb-2013) in IRAFX
=========================================================
**available starting:** May 6, 2013

- The output drizzle image header no longer contains references to D2IM arrays.
  This allows ``tweakreg`` to work with drizzled images as input where 2-D D2IM
  corrections were needed.

- Deprecated references to PyFITS .has_key() methods were also removed from
  the entire package, making it compatible with PyFITS 3.2.x and later.


DrizzlePac(astrodrizzle) v1.1.8dev(06-Feb-2013) in IRAFX
========================================================
**available starting:** Feb 11, 2013

- Fixed a bug in ``astrodrizzle`` which caused blot to raise an exception
  when using 'sinc' interpolation.

- Cleaned up the logic for writing out the results from the pixtopix, pixtosky,
  and skytopix tasks to avoid an Exception when a list of inputs are provided
  and no output file is specified.

- A new parameter was added to the tweakback task to allow a user to specify
  the value of ``WCSNAME`` when updating the FLT images with a new solution
  from a DRZ image header.

- Code in tweakback for updating the header with a new WCS will now
  automatically generate a unique ``WCSNAME`` if the there is a WCS solution in
  the FLT headers with the default or user-defined value of ``WCSNAME``.


DrizzlePac(astrodrizzle) v1.1.7dev(18-Dec-2012) in IRAFX
========================================================
**available starting:** Feb 4, 2013

- Updated astrodrizzle to work with input images which do not have ``WCSNAME``
  defined. This should make it easier to support non-HST input images in the
  future.

- cleared up confusion between flux parameters in imagefindpars and catalog
  inputs in ``tweakreg``.

- turned of use of fluxes for trimming input source catalogs when no flux
  column can be found in input source catalogs.


DrizzlePac(astrodrizzle) v1.1.7dev(18-Dec-2012) in IRAFX
========================================================
**available starting:** Dec 10, 2012

- Update ``tweakreg`` 2d histogram building mode to correctly find the peak
  when all the inputs match with the same offset (no spurious sources in either
  source catalog).

- Fixed a bug so that Ctrl-C does not cause an exception when used while
  ``tweakreg`` is running.

- revised the source finding logic to ignore sources near the image edge,
  a change from how daofind works (daofind expands the image with blanks
  then fits anyway).

- created a new function to apply the nsigma separation criteria to (try to)
  eliminate duplicate entries for the same source from the source list.
  It turns out daofind does have problems with reporting some duplicate sources
  as well. This function does not work perfectly, but works to remove nearly
  all (if not all) duplicates in most cases.


DrizzlePac(astrodrizzle) v1.1.7dev(8-Jan-2012) in IRAFX
=======================================================
**available starting:** Jan 14, 2013

- Bug fixed in updatehdr module to allow shiftfiles without RMS columns to work
  as inputs to manually apply shifts to headers of input images.

- Revised ``astrodrizzle`` to update WCS of all input images BEFORE checking
  whether or not they are valid. This ensures that all files provided as input
  to ``astrodrizzle`` in the pipeline have the headers updated with the
  distortion model and new WCS.

- Images with NGOODPIX=0 now identified for WFC3 and WFPC2 inputs, so they
  can be ignored during ``astrodrizzle`` processing.
- Replaced 2d histogram building code originally written in Python with
  a C function that run about 4x faster.


DrizzlePac(astrodrizzle) v1.1.6dev(5-Dec-2012) in IRAFX
=======================================================
**available starting:** Dec 10, 2012

- ``tweakreg`` v1.1.0 source finding algorithm now runs many times faster
  (no algorithmic changes). No changes have been made yet to speed
  up the 2d histogram source matching code.

- The 'pixtopix' task was updated to make the 'outimage' parameter optional
  by using the input image as the default. This required no API changes, but
  the help files were updated.

- Very minor update to guard against MDRIZTAB being specified without
  any explicit path.

- Update ``astrodrizzle`` to correctly report the exposure time,
  exposure start, and exposure end for the single drizzle products,
  in addition to insuring the final drizzle values remain correct.

- ``astrodrizzle`` also includes initial changes to safeguard the C code
  from getting improperly cast values from the configObj(TEAL) input.


DrizzlePac(astrodrizzle) v1.1.5dev(23-Oct-2012) in IRAFX
========================================================
**available starting:** Oct 29, 2012

- Scaling of sky array for WFC3/IR IVM generation now correct.

- template mask files for WFPC2 no longer generated so that WFPC2 data can now
  be processed using num_cores > 1 (parallel processing).

- interpretation of the 'group' parameter fixed to support a single integer,
  a comma-separated list of integers or a single 'sci,<n>' value. The values
  correspond to the FITS extension number of the extensions that should be
  combined. This fix may also speed up the initialization step as more direct
  use of pyfits was implemented for the interpretation of the 'group'
  parameter.


DrizzlePac(astrodrizzle) v1.1.1(31-Aug-2012) in HST Archive
===========================================================
**available starting:** Sept 26, 2012

The HST Archive and operational calibration pipeline started using this
version on Sept 26, 2012.


DrizzlePac(astrodrizzle) v1.1.4dev(20-Sep-2012) in IRAFX
========================================================
**available starting:** Sept 24, 2012

- Bug fixed to allow use of final_wht_type=IVM for processing WFPC2 data.

- Revised Initialization processing to speed it up by using more up-to-date,
  direct pyfits calls.


DrizzlePac(astrodrizzle) v1.1.3(7-Sep-2012) in IRAFX
====================================================
**available starting:** Sept 17, 2012

- Fixed the logic so that crclean images always get created regardless of the
  value of the 'clean' parameter.


DrizzlePac(astrodrizzle) v1.1.2(5-Sep-2012) in IRAFX
====================================================
**available starting:** Sept 10, 2012

- Remove the restriction of only being able to process images which have
  ``WCSNAME`` keyword as imposed by r15631. The removal of this restriction
  will now allow for processing of non-updated input files with
  ``updatewcs=False`` for cases where no distortion model exists
  for the data (as required by CADC).

- Added log statements reporting what sky value was actually used in the
  drizzle and blot steps


DrizzlePac(astrodrizzle) v1.1.1(30-Aug-2012) in IRAFX
=====================================================
**available starting:** Sept 3, 2012

- Major revision to ``astrodrizzle`` allowing the option to process without
  writing out any intermediate products to disk. The intermediate products
  remain in memory requiring significantly more memory than usual. This
  improves the overall processing time by eliminating as much disk activity
  as possible as long as the OS does not start disk swapping due to lack
  of RAM.

- revised to turn off 'updatewcs' when coeffs=False(no) so that exposures with
  filter combinations not found in the IDCTAB will not cause an error.

DrizzlePac(astrodrizzle) v1.0.7(21-Aug-2012) in IRAFX
=====================================================
**available starting:** Aug 27, 2012

- Fixes problems with missing single_sci images.

- Static mask step revised to skip updates to static mask if all pixel data
  falls within a single histogram bin. This avoids problems with masking out
  entire images, which happens if low S/N SBC data is processed with
  ``static_mask=yes``.


DrizzlePac(astrodrizzle) v1.0.6(14-Aug-2012) in IRAFX
=====================================================
**available starting:** Aug 20, 2012

Use of IVM for final_wht now correct, as previous code used wrong inputs when
IVM weighting was automatically generated by ``astrodrizzle``.


DrizzlePac(astrodrizzle) v1.0.5(8-Aug-2012) in IRAFX
====================================================
**available starting:** Aug 13, 2012

- Completely removed the use of the TIME arrays for weighting IR drizzle
  products so that the photometry for saturated sources in drizzled products
  now comes out correct.

- Corrected a problem with ``astrodrizzle`` which affected processing of WFPC2
  data where CRPIX2 was not found when creating the output single sci image.


stsci_python v2.13 [Includes astrodrizzle v1.0.2(13-July-2012)]
===============================================================
**available starting:** Aug 3, 2012

The complete version of stsci_python can be downloaded from our
`download page <http://www.stsci.edu/institute/software_hardware/pyraf/stsci_python/current/stsci-python-download>`_

- `stsci_python v2.13 Release Notes <http://www.stsci.edu/institute/software_hardware/pyraf/stsci_python/release-notes/releasenotes.2.13>`_

- `Old stsci_python release notes <http://www.stsci.edu/institute/software_hardware/pyraf/stsci_python/release-notes>`_


DrizzlePac(astrodrizzle) v1.0.1(20-June-2012)
=============================================
**Used in archive/pipeline starting:** July 10, 2012

Pipeline and archive started processing ACS data with this version.


DrizzlePac(astrodrizzle) v1.0.0(25-May-2012)
============================================
**Used in archive/pipeline starting:** June 6, 2012

Pipeline and archive first started using ``astrodrizzle`` by processing WFC3
images.
