- Maintenance release.
- Use a more robust algorithm for computing intersection polygon area that
ignores intersection polygons that raise
MalformedPolygonError
in thespherical_geometry
package. This may result in sub-optimal alignment order but in practice, it should have minimal effect on the end result. [#205] align_wcs
now will raise a custom exception of typeNotEnoughCatalogs
when there are not enough input catalogs to perform alignment. [#203]XYXYMatch
now will raise a custom exception of typeMatchSourceConfusionError
when multipe reference sources match a single input source. [#204]
- Fix a bug in the
imalign.align_wcs
function due to which reference catalog would not get expanded even for successful alignments, essentially disablingexpand_refcat
option. [#201]
- Improved the quality of the expanded reference catalog when
expand_refcat
is set to True in thealign_wcs
function by not using input catalogs that failed to align in the expanded reference catalog. [#195] - Reduce memory & compute needed by _xy_2dhist by pruning distant pairs with a kdtree. This is a purely internal change that does not affect the results of the algorithm. [#196]
- Addressed compatibility issues with Python 3.12. Re-organized package setup machinery. [#188]
- Mistaken tagging.
- Fixed a bug in the
linalg
module due to which computation of the inverse matrix would fallback to custom implementation instead of usingnumpy
implementation. [#185] - Fixed incompatibilities with the future (version 2.0) release of
numpy
. [#185]
- Added
bb_policy
argument to theWCSGroupCatalog
to control when to switch to an aproximate method of computing of the bounding polygon of a group of images. The default value is set to 50. Also added equivalentgroup_bb_policy
argument to bothfit_wcs
andalign_wcs
functions. [#176]
- Fixed a bug in the
XYXYMatch
due to which bin size for the 2D histogram pre-match alignment did not account for the pixel scale in the tangent plane. This required a change in the API ofXYXYMatch.__call__
which now _must_ havetp_pscale
as input and also inputs catalogs now _must_ contain'TPx'
and'TPy'
columns. [#173] - Deprecated
'tp_wcs'
argument of theXYXYMatch.__call__()
method. Use'tp_pscale'
instead. [#173]
- Exposed in top-level functions parameter
clip_accum
that controls whether or not to reset the list of "bad" (clipped out) sources after each clipping iteration during model fitting. [#169] - Deprecated
tweakwcs.tpwcs
module in favor oftweakwcs.correctors
. [#170] - Deprecated the following classes in the
tweakwcs.tpwcs
module: tweakwcs.tpwcs.TPWCS
in favor oftweakwcs.correctors.WCSCorrector
;tweakwcs.tpwcs.JWSTgWCS
in favor oftweakwcs.correctors.JWSTWCSCorrector
;tweakwcs.tpwcs.FITSWCS
in favor oftweakwcs.correctors.FITSWCSCorrector
. [#170]
- Deprecated the following classes in the
- Deprecated
tweakwcs.matchutils.TPMatch
class. Usetweakwcs.matchutils.XYXYMatch
instead. [#170] - Removed
tanplane_wcs
argument of theWCSGroupCatalog.apply_affine_to_wcs()
method.tanplane_wcs
was deprecated since 0.6.5. It was replaced withref_tpwcs
. [#170] - Deprecated
tpwcs
argument of theWCSImageCatalog.__init__()
as welltpwcs
property of the same class. Usecorrector
instead. [#170] - Deprecated
tpwcs
argument of thetweakwcs.imalign.fit_wcs()
in favor ofcorrector
. [#170]
This is almost exclusively a maintenance release except for close vertices in the convex hull issue to make the code more robust.
- Set
gwcs
min version to 0.14. [#158] - Set
astropy
min version to 5.0.4. [#153] - Remove consecutive convex hull vertices that are very close to each other. [#147]
- Fix a bug due to which
minobj
parameter toWCSGroupCatalog.align_to_ref()
andalign_wcs()
was ignored. [#144] - Make peak finding code switch to center-of-mass algorithm when estimated 2D parabolic fit estimates a peak outside of the fit box. Reduce accuracy loss in computation. [#143]
- Make code more robust to exceptions in the
spherical_geometry
package. [#138] - Fixed a bug in
matchutils._find_peak()
due to which it could return coordinates of the peak that were outside of the image. [#136] - Fixed a bug in how re-projection was computed when
center
of the transformations was provided. [#135]
- Added support for detecting and using velocity aberration corrected
V2-V3
frames when available in JWST WCS ('v2v3vacorr'
). [#130]
- Added
linearfit.fit_rshift
function to support a newfitgeom
fitting mode'rshift'
that fits only for shifts and a rotation. [#128]
- Added
ref_tpwcs
parameter toimalign.fit_wcs()
,imalign.align_wcs()
,wcsimage.WCSGroupCatalog.align_to_ref()
to allow alignment to be performed in user-specified distortion-free tangent plane. [#125] - Renamed
tanplane_wcs
parameter inwcsimage.WCSGroupCatalog.apply_affine_to_wcs()
toref_tpwcs
.tanplane_wcs
parameter was deprecated and will be removed in a future release. [#125]
- Bug fix: Unable to initialize
JWSTgWCS
tangent-plane corrector from an already corrected WCS. [#122] - Fix a bug in how corrections are applied to a previously corrected JWST WCS. [#120]
- Do not attempt to extract center of linear transformation when not available
in
'fit_info'
. [#119]
- Fixed a bug due to which reprojection transformation for JWST gWCS was computed at wrong location in the tangent plane. [#118]
- When WCS has valid bounding box, estimate scale at the center of the bounding box. [#117]
- Adjust the point at which tangent plane-to-tangent plane transformation is computed by 1/2 pixels for JWST corrections. This correction should have no measurable impact on computed corrections. [#115]
- Fixed a bug in applying JWST correction for the case when alignment is performed twice on the same image. Due to this bug the inverse transformation was not updated. [#112]
- Fix a possible crash when aligning FITS WCS images due to an unusual way
stwcs.wcsutil.all_world2pix
handles (or not) scalar arguments. [#110] - Modified the angle at which the reported rotation angles are reported.
Now rotation angles have the range
[-180, 180]
degrees. [#109] - Added support FITS WCS that use
PC
matrix instead of theCD
matrix used in HSTs WCS. [#108] - Bug fix for alignment of multi-chip FITS images: correction of how transformations from the reference tangent plane are converted to individual images' tangent planes. [#106]
- Significant re-organization of the
fit_info
dictionary.rot
now becomesproper_rot
androtxy
now becomesrot
containing onlyrotx
androty
. Also,scale
now is a tuple of only two scalessx
andsy
. The geometric mean scale is now a separate field'<scale>'
as well as the arithmetic mean of rotation angles ('<rot>'
). Finally,'offset'
in the fit functions from thelinearfit
module was renamed to'shift'
in order to match the same field returned by functions from theimalign
module. [#105] - Linear fit functions now return the fit matrix
F
instead of its transpose. [#100] - Linear fit functions (in the
linearfit
module) uselongdouble
for internal computations. [#100] - Re-designed the
JWSTgWCS
corrector class to rely exclusively on basic models available inastropy
andgwcs
instead of theTPCorr
class provided by thejwst
pipeline. This eliminates the need to install thejwst
pipeline in order to alignJWST
images. [#96, #98]
- Added logic to allow some input catalogs to be empty and to allow the alignment to proceed as long as there are at least two non-empty (image or group) input catalogs. [#94]
- Fixed a deprecation issue in logging and added logic to compute image group's catalog name using a common prefix (if exists) of the names of constituent images. [#92]
- Package version is now handled by
setuptools_scm
. [#93]
- Fixed a bug in the "2dhist" algorithm resulting in a crash when 2D histogram has multiple maxima of the same value and no other value larger than one. [#90]
- Fixed a bug due to which a warning log message "Failed to align catalog..." would be issued for successful alignments. [#84]
- Fixed a bug in creation of WCS image groups with empty catalogs. [#84]
- Fixed a bug in
match2ref
when it was run in a non-matching mode (match=None
) dute to which it was impossible to detect the case when reference catalog has a different length from a supposedly matched WCS group catalog. [#84] - Fixed a bug in computation of the bounding polygon of a reference catalog containing only two sources. [#84]
- Fixed a bug in
convex_hull()
resulting in incorrect type being returned in case of empty input coordinate lists or whne only one point is provided. [#84] - Implemented a more robust estimate of the maximum type supported by
numpy.linalg.inv
. [#82] - Renamed
wcsutils.planar_rot_3D
towcsutils.planar_rot_3d
. [#75] - Renamed
wcsutils.cartesian2spherical
towcsutils.cartesian_to_spherical
andwcsutils.spherical2cartesian
towcsutils.spherical_to_cartesian
. [#71] - Improved "2dhist" algorithm that performs simple catalog pre-alignment used for source matching. [#69]
- Changed the default value of the
searchrad
parameter inmatchutils.TPMatch
to 3. [#69]
- Fixed incorrect pointer type introduced in previous release [#67].
- Fixed VS2017 compiler error,
"void *": unknown size
. [#62, #63, #64]
- Package maintenance release.
- Fixed a bug due to which the fitting code would crash is
wuv
were provided butwxy
were set toNone
. [#60]
- Code cleanup: removed debug print statements. [#59]
- Matched indices, linear fit results and fit residuals are now set in the
input "WCS catalogs"
meta['fit_info']
instead ofmeta['tweakwcs_info']
. [#57] - Updated example notebook to reflect changes to API. [#57]
- Allow
TPWCS
classes to setmeta
during object instantiation. This allows attaching, for example, a source catalog to the tangent-plane WCS corrector object. [#57] align_wcs
no longer supportsNDData
input. Instead catalogs can be provided directly in themeta
attribute ofTPWCS
-derived WCS "correctors". This fundamentally transfers the responsibility of instantiating the correct tangent-plane WCS to the caller. This, in turn, will allow future WCS to be supported by providing a customTPWCS
-derived corrector defined externally totweakwcs
package. Second benefit is that image data no longer need to be kept in memory inNDData
objects as image data are not needed for image alignment once catalogs have been created. [#57]- Renamed
tweak_wcs
tofit_wcs
andtweak_image_wcs
toalign_wcs
. [#57] - Fixed a bug due to which the code might crash due to an undefined
ra
variable, see issue #55. [#56] tweak_image_wcs()
now returns effective reference catalog used for image alignment. [#54]- Modified how IDs are assigned to the reference catalog source positions when
expand_refcat
is True: instead of having all sources numbered consecutively starting with 1, now the code will attempt to preserve the original IDs (if any) of the input reference catalog (refcat
) or an input image used as a reference catalog and consecutively number only the sources being added to therefcat
. [#54] - Modified the clipping algorithm to start with all valid sources at each
iteration. In other words, clippings do not accumulate by default.
Old behavior can be replicated by setting
clip_accum
to True. [#53] - Cleaned-up
iter_linear_fit
interface as well as simplified thefit
dictionary returned byiter_linear_fit
. [#53] - Added option to specify statistics used for clipping. [#51, #52]
- Corrected a bug in the non-weighted
rscale
fit. [#49] - Corrected a bug in the computation of
RMSE
for the "general" fit. [#47] - Added computation of
MAE
of the fit (in addition toRMSE
), see [Mean Absolute Error](https://en.wikipedia.org/wiki/Mean_absolute_error). [#47] - Renamed
RMSD
toRMSE
(Root-Mean-Square Error). [#47]
- Fixed the formula for computing
RMSD
of non-weighted fit. [#46]
- Fixed Read-The-Docs build failure. [#45]
- Implemented higher-accuracy matrix inversion. [#42]
- Bug fix related to not switching to using
bounding_box
instead ofpixel_shape
. [#41] - Added support for optional
'weight'
column in catalogs indicating the weight of each source in fitting linear transformations. [#41] - Add support for weights to the linear fitting routines. [#40]
- Replaced the use of
RMS
for each axis with a singleRMSD
value, see [Root-Mean-Square Deviation](https://en.wikipedia.org/wiki/Root-mean-square_deviation). [#40] - Rely on
pixel_bounds
[see APE 14](https://github.com/astropy/astropy-APEs/blob/master/APE14.rst) when available for computation of image's bounding box. [#39] - Fix a bug in the computation of the world coordinates of the fitted (aligned) sources. [#36]
- Fix swapped reported reference and input indices of sources used for fitting. [#34]
- Fix for non-initialized C arrays. [#34]
- Changelog correction. [#33]
- Fixeded a bug due to which
'fit_ref_idx'
and'fit_input_idx'
fields in thefit
dictionary were never updated. [#31] jwst
(pipeline) package is no longer a hard dependency. [#30]- Removed unnecessary install dependencies. [#30]
- Documentation improvements. [#30, #32]
- Corrected 'RA', 'DEC' units used to compute bounding polygon for the reference catalog. [#30]
- Updated
C
code to avoidnumpy
deprecation warnings. [#30]
- Added support for aligning FITS WCS. [#15, #16]
- Added keywords to
meta
attributes of theTPWCS
andNDData
to allow easy access to the match and fit information. [#20, #21, #28] - Package and setup re-design. Support for
readthedocs
. [#23] - Documentation improvements. [#17, #18]
- Numerous other bug fixes, code clean-up, documentation improvements and enhancements. [#2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #13, #14, #19, #22, #24, #25, #26, #27, #28, #29]
Initial release. [#1]