Change Log¶
1.0.3 (2026-02-12)¶
Bug Fixes¶
Bugfix for supporting non-coordinate inputs to transforms supporting quantities. (#706)
1.0.2 (2026-02-11)¶
Bug Fixes¶
Fix two bugs in the
LabelMapperConverter:When roundtripping a
LabelMapperArray, with a non-default number ofinputs, deserialization fails because the init of theLabelMapperArraywill set the number of inputs in the model to the default value of 2, which is then attempted to be overridden by later deseriaization methods.The converter fails when
lazy_loadis set to false and themapperis an array.
Both of these issues have been resolved. (#701)
1.0.1 (2026-01-22)¶
Bug Fixes¶
Fix gwcs evaluation when the input or output frames are
NoneorEmptyFrame. (#684)
Legacy Change Log¶
1.0.0 (2026-01-15)¶
Raise an error when inserting a transform before the first coordinate frame. [#654]
Remove
with_unitsargument from__call__andinvert. Use the Shared API functions instead,pixel_to_worldandworld_to_pixel. [#635]Adjust and fix tests. Replace
loggingwithwarnings. [#659]Update the Native API. [#660]
Update doc dependencies to remove
sphinx-tabsin favor ofsphinx-inline-tabs. [#676]Enable
MyPytype checking. [#657]
0.26.1 (2025-11-19)¶
Fix an indexing bug in
spectroscopy.SellmeierZemaxwhere the outputnfor array-type wavelength inputs had the correct shape, but had the same value for all elements. [#642]Deprecate the private
_toindexfunction in favor of a publicto_indexfunction. [#619]
0.26.0 (2025-09-18)¶
Fix the computation of
lon_polefor Zenitahl projections and declination of +/-90 deg. [#616]Enable
inputs_mappinginselector.LabelMapperArray. [#626]Deprecate
with_unitsargument in favor of the high level Shared API. [#634]
0.25.1 (2025-06-20)¶
Relax the oldest allowed numpy version to 1.25 [#607]
0.25.0 (2025-06-19)¶
Removed from PyPi
Reorganize documentation to have two separate introductions (user and developer) [#604]
Test with latest version of Python and drop Python 3.10 [#569]
Fix API issue with
wcs.numerical_inverse. [#565]Switch to using a new sphinx theme and clean up the documentation. [#580]
Fix bug where “vector” (shape (n,) not shape (1, n)) arrays would loose all their entries except the first if
with_units=Truewas used. [#563]Bugfix for
__call__andinvertincorrectly handling units when involving “parameterless” transforms. [#562]Refactor
wcs.coordinate_framesinto its own sub-module. [#567]Bugfix for
outside_footprintmodifying the input coordinates. [#595]Derive the longitude of the celestial pole from the supplied projection. [#600]
Add
FITSImagingWCSTransform. [#602]
0.24.0 (2025-02-04)¶
Coordinate frames now have a “native” order and then are sorted based on
axes_order. [#457]WCS.numerical_inverseno longer accepts high level objects (with_units=is not supported) useWCS.inverse. [#457]CoordinateFrame.coordinateshas been replaced byCoordinateFrame.to_high_level_coordinates[#457]CoordinateFrame.to_quantityhas been replaced byCoordinateFrame.from_high_level_coordinates. [#457]Inputs to
CelestialFrame, such asaxes_namesare now explicitly in lon, lat order and will re sorted based onaxes_order=. [#457]Implement code linting and automatic formatting. [#544]
Refactor
WCSto use aPipelinebase class which adds basic checks to ensure that the pipeline is valid. These include checking for duplicate frame names and that the last transform isNone. [#545]Bugfix for
WCS.invertandWCS.to_fitsthat prevented evaluation when the attached bounding box happened to have units on its values. [#554]
0.23.0 (skipped)¶
This was skipped to avoid issues with an ongoing JWST release.
0.22.0 (2024-12-19)¶
Replace usages of
copy_arrayswithmemmap[#503]Fix an issue with units in
wcs_from_points. [#507]Fix incorrect units being returned in the low level WCS API. [#512]
Synchronize
region.pywith the copies of it in JWST and Romancal. [#517]Add support for compound bounding boxes and ignored bounding box entries. [#519]
Add
gwcs.examplesmodule, based on the examples located in the testingconftest.py. [#521]Force
bounding_boxto always be returned as aFordered box. [#522]Move the bounding box attachment to the forward transform property. [#532]
Adjust
world_to_array_index_valuesto round to integer coordinates as specified by APE 14. [#525]Add warning filter to asdf extension to prevent the
bounding_boxorder warning for gwcs objects originating from a file. [#526]Fixed a bug where evaluating the inverse transform did not respect the bounding box. [#498]
Improved reliability of inside/outside footprint computations when evaluating inverse transform with bounding box. [#536]
0.21.0 (2024-03-10)¶
Improve documentation. [#483]
Add a minimum version requirement for
asdf-wcs-schemas. [#491]Fix
WCS.__str__for instances without transforms. [#489]
0.20.0 (2023-11-29)¶
Replace
pkg_resourceswithimportlib.metadata. [#478]Serialize and deserialize
pixel_shapewith asdf. [#480]
0.19.0 (2023-09-15)¶
Bug Fixes¶
Synchronize
array_shapeandpixel_shapeattributes of WCS objects. [#439]Fix failures and warnings with numpy 2.0. [#472]
other¶
Remove deprecated old
bounding_box. The new implementation is released with astropy v 5.3. [#458]Refactor
CoordinateFrame.axis_physical_types. [#459]StokesFrameuses nowastropy.coordinates.StokesCoord. [#452]Dropped support for Python 3.8. [#451]
Fixed a call to
astropy.coordinatesinwcstools.wcs_from_points. [#448]Code and docstrings clean up. [#460]
Register all available asdf extension manifests from
asdf-wcs-schemasexcept 1.0.0 (which contains duplicate tag versions). [#469]Register empty extension for 1.0.0 to avoid warning about a missing extension when opening old files. [#475]
0.18.3 (2022-12-23)¶
Bug Fixes¶
Fixed a bug in the estimate of pixel scale in the iterative inverse code. [#423]
Fixed constant term in the polynomial used for SIP fitting. Improved stability and accuracy of the SIP fitting code. [#427]
0.18.2 (2022-09-07)¶
Bug Fixes¶
Corrected the reported requested forward SIP accuracy and reported fit residuals by
to_fits_sip()andto_fits(). [#413, #419]Fixed a bug due to which the check for divergence in
_fit_2D_poly()and hence into_fits()andto_fits_sip()was ignored. [#414]
New Features¶
0.18.1 (2022-03-15)¶
Bug Fixes¶
Remove references to the
sixpackage. [#402]
0.18.0 (2021-12-22)¶
Bug Fixes¶
Updated code in
region.pywith latest improvements and bug fixes fromstsci.skypac.regions.py[#382]Added support to
_compute_lon_pole()for computation oflonpolefor all projections fromastropy.modeling.projections. This also extends support for different projections inwcs_from_fiducial(). [#389]
New Features¶
Enabled
CompoundBoundingBoxsupport for wcs. [#375]Moved schemas to standalone package
asdf-wcs-schemas. Reworked the serialization code to use ASDF converters. [#388]
0.17.1 (2021-11-27)¶
Bug Fixes¶
Fixed a bug with StokesProfile and array types. [#384]
0.17.0 (2021-11-17)¶
Bug Fixes¶
world_axis_object_componentsandworld_axis_object_classesnow ensure unique keys inCompositeFrameandCoordinateFrame. [#356]Fix issue where RuntimeWarning is raised when there are NaNs in coordinates in angle wrapping code [#367]
Fix deprecation warning when wcs is initialized with a pipeline [#368]
Use
CDformalism inWCS.to_fits_sip(). [#380]
New Features¶
wcs_from_pointsnow includes fitting for the inverse transform. [#349]Generalized
WCS.to_fits_sipto be able to create a 2D celestial FITS WCS from celestial subspace of theWCS. Also, nowWCS.to_fits_sipsupports arbitrary order of output axes. [#357]
API Changes¶
Modified interface to
wcs_from_pointsfunction to better match analogous function in astropy. [#349]Model._BoundingBoxwas renamed toModel.ModelBoundingBox. [#376, #377]
0.16.1 (2020-12-20)¶
Bug Fixes¶
Fix a regression with
pixel_to_worldfor output frames with one axis. [#342]
0.16.0 (2020-12-18)¶
New Features¶
Added an option to
to_fits_sip()to be able to specify the reference point (crpix) of the FITS WCS. [#337]Added support for providing custom range of degrees in
to_fits_sip. [#339]
Bug Fixes¶
bounding_boxnow works with tuple ofQuantities. [#331]Fix a formula for estimating
crpixinto_fits_sip()so thatcrpixis near the center of the bounding box. [#337]Allow sub-pixel sampling of the WCS model when computing SIP approximation in
to_fits_sip(). [#338]Fixed a bug in
to_fits_sipdue to whichinv_degreewas ignored. [#339]
0.15.0 (2020-11-13)¶
New Features¶
Added
insert_framemethod to modify the pipeline of aWCSobject. [#299]Added
to_fits_tabmethod to generate FITS header and binary table extension following FITS WCS-TABconvention. [#295]Added
in_imagefunction for testing whether a point in world coordinates maps back to the domain of definition of the forward transformation. [#322]Implemented iterative inverse for some imaging WCS. [#324]
0.14.0 (2020-08-19)¶
New Features¶
Updated versions of schemas for gwcs objects based on latest versions of transform schemas in asdf-standard. [#307]
Added a
wcs.Stepclass to allow serialization to ASDF to use references. [#317]wcs.pipelinenow is a list ofStepinstances instead of a (frame, transform) tuple. UseWCS.pipeline.transformandWCS.pipeline.frameto access them. [#319]
Bug Fixes¶
Fix a bug in polygon fill for zero-width bounding boxes. [#293]
Add an optional parameter
input_frametowcstools.wcs_from_fiducial. [#312]
0.13.0 (2020-03-26)¶
New Features¶
Added two new transforms -
SphericalToCartesianandCartesianToSpherical. [#275, #284, #285]Added
to_fits_sipmethod to generate FITS header with SIP keywords [#286]Added
get_ctype_from_ucdfunction. [#288]
Bug Fixes¶
Fixed an off by one issue in
utils.make_fitswcs_transform. [#290]
0.12.0 (2019-12-24)¶
New Features¶
gwcs.WCSnow supports theworld_axis_object_componentsandworld_axis_object_classesmethods of the low level WCS API as specified by APE 14.Removed astropy-helpers from package. [#249]
Added a method
fix_inputswhich returns an unique WCS from a compound WCS by fixing inputs. [#254]Added two new transforms -
ToDirectionCosinesandFromDirectionCosines. [#256]Added new transforms
WavelengthFromGratingEquation,AnglesFromGratingEquation3D. [#259]gwcs.WCSnow supports the newworld_axis_namesandpixel_axis_namesproperties onLowLevelWCSobjects. [#260]Update the
StokesFrameto work for arrays of coordinates and integrate with APE 14. [#258]Added
Snell3D,SellmeierGlassandSellmeierZemaxtransforms. [#270]
API Changes¶
- Changed the initialization of
TemporalFrameto be consistent with other coordinate frames. [#242]
- Changed the initialization of
Bug Fixes¶
Ensure that
world_to_pixel_valuesandpixel_to_world_valuesalways accept and return floats, even if the underlying transform uses units. [#248]
0.11.0 (2019/07/26)¶
New Features¶
Add a schema and tag for the Stokes frame. [#164]
Added
WCS.pixel_shapeproperty. [#233]
Bug Fixes¶
Update util.isnumerical(…) to recognize big-endian types as numeric. [#225]
Fixed issue in unified WCS API (APE14) for transforms that use
Quantity. [#222]Fixed WCS API issues when
output_frameis 1D, e.g.Spectralonly. [#232]
0.10.0 (12/20/2018)¶
New Features¶
Initializing a
WCSobject with apipelinelist now keeps the completeCoordinateFrameobjects in theWCS.pipeline. The effect is that aWCSobject can now be initialized with apipelinefrom a differentWCSobject. [#174]Implement support for astropy APE 14 (https://doi.org/10.5281/zenodo.1188875). [#146]
Added a
wcs_from_[pointsfunction which creates a WCS object two matching sets of points(x,y)and(ra, dec). [#42]
0.9.0 (2018-05-23)¶
New Features¶
Added a
TemporalFrameto represent relative or absolute time axes. [#125]Removed deprecated
grid_from_domainfunction andWCS.domainproperty. [#119]Support for Python 2.x, 3.0, 3.1, 3.2, 3.3 and 3.4 was removed. [#119]
Add a
coordinate_to_quantitymethod toCoordinateFramewhich handles converting rich coordinate input to numerical values. It is an inverse of thecoordinatesmethod. [#133]Add a
StokesFramewhich converts from ‘I’, ‘Q’, ‘U’, ‘V’ to 0-3. [#133]Support serializing the base
CoordinateFrameclass to asdf, by making a specific tag and schema forFrame2D. [#150]Generalized the footrpint calculation to all output axes. [#167]
API Changes¶
The argument
output="numerical_plus"was replaced by a bool argumentwith_units. [#156]Added a new flag
axis_typeto the footprint method. It controls what type of footprint to calculate. [#167]
Bug Fixes¶
Fixed a bug in
bounding_boxdefinition when the WCS has only one axis. [#117]Fixed a bug in
grid_from_bounding_boxwhich caused the grid to be larger than the image in cases when the bounding box is on the edges of an image. [#121]
0.8.0 (2017-11-02)¶
LabelMapperRangenow returnsLabelMapperRange._no_labelwhen the key is not within any range. [#71]LabelMapperDictnow returnsLabelMapperDict._no_labelwhen the key does not match. [#72]Replace
domainwithbounding_box. [#74]Added a
LabelMappermodel wheremapperis an instance ofModel. [#78]Evaluating a WCS with bounding box was moved to
astropy.modeling. [#86]RegionsSelector now handles the case when a label does not have a corresponding transform and returns RegionsSelector.undefined_transform_value. [#86]
GWCS now deals with axes types which are neither celestial nor spectral as “unknown” and creates a transform equivalent to the FITS linear transform. [#92]
0.7 (2016-12-23)¶
New Features¶
Added
wcs_from_fiducialfunction to wcstools. [#34]Added
domainto the WCS object. [#36]Added
grid_from_domainfunction. [#36]The WCS object can return now an
SkyCoordorQuantityobject. This is triggered by a new parameter to the__call__method,outputwhich takes values of “numericals” (default) or “numericals_plus”. [#64]
API_Changes¶
Added
atolargument toLabelMapperDict, representing the absolute tolerance [#29]The
CoordinateFrame.transform_tomethod was removed [#64]
Bug Fixes¶
Fixed a bug in
LabelMapperDictwhere a wrong index was used.[#29]Changed the order of the inputs when
LabelMapperArrayis evaluated as the inputs are supposed to be image coordinates. [#29]Renamed variables in read_wcs_from_header to match loop variable [#63]
0.5.1 (2016-02-01)¶
Bug Fixes¶
Added ASDF requirement to setup. [#30]
Import OrderedDict from collections, not from astropy. [#32]
0.5 (2015-12-28)¶
Initial release on PYPI.