- The minimum required Python is now 3.8. [#1279]
- The minimum required Numpy is now 1.18. [#1279]
- The minimum required Astropy is now 5.0. [#1279]
- The minimum required Matplotlib is now 3.1. [#1279]
- The minimum required scikit-image is now 0.15.0 [#1279]
- The minimum required gwcs is now 0.16.0 [#1279]
photutils.background
- Added an
alpha
keyword to theBackground2D.plot_meshes
method. [#1286]
- Added an
photutils.aperture
- Fixed a bug in
aperture_photometry
where an error was not raised if the data and error arrays have different units. [#1285].
- Fixed a bug in
photutils.background
- Removed the deprecated
background_mesh_ma
andbackground_rms_mesh_ma
Background2D
properties. [#1280]
- Removed the deprecated
photutils.centroid
- Removed the deprecated
centroid_epsf
andgaussian1d_moments
functions. [#1280] - Importing tools from the centroids subpackage now requires including the subpackage name. [#1280]
- Removed the deprecated
photutils.morphology
- Importing tools from the morphology subpackage now requires including the subpackage name. [#1280]
photutils.segmentation
- Removed the deprecated
source_properties
function and theSourceProperties
andLegacySourceCatalog
classes. [#1280] - Removed the deprecated the
filter_kernel
keyword in thedetect_sources
,deblend_sources
, andmake_source_mask
functions. [#1280]
- Removed the deprecated
- The metadata in output tables now contains version information for all dependencies. [#1274]
photutils.centroid
- Extra keyword arguments can be input to
centroid_sources
that are then passed on to thecentroid_func
if supported. [#1276,#1278]
- Extra keyword arguments can be input to
photutils.segmentation
- Added
copy
method toSourceCatalog
. [#1264] - Added
kron_photometry
method toSourceCatalog
. [#1264] - Added
add_extra_property
,remove_extra_property
,remove_extra_properties
, andrename_extra_property
methods andextra_properties
attribute toSourceCatalog
. [#1264, #1268] - Added
name
andoverwrite
keywords toSourceCatalog
circular_photometry
andfluxfrac_radius
methods. [#1264] SourceCatalog
fluxfrac_radius
was improved for cases where the source flux doesn't monotonically increase with increasing radius. [#1264]- Added
meta
andproperties
attributes toSourceCatalog
. [#1268] - The
SourceCatalog
output table (usingto_table
)meta
dictionary now includes a field for the date/time. [#1268] - Added
SourceCatalog
make_kron_apertures
method. [#1268] - Added
SourceCatalog
plot_circular_apertures
andplot_kron_apertures
methods. [#1268]
- Added
photutils.segmentation
- If
detection_catalog
is input toSourceCatalog
then the detection centroids are used to calculate thecircular_aperture
,circular_photometry
, andfluxfrac_radius
. [#1264] - Units are applied to
SourceCatalog
circular_photometry
output if the input data has units. [#1264] SourceCatalog
circular_photometry
returns scalar values if catalog is scalar. [#1264]SourceCatalog
fluxfrac_radius
returns aQuantity
with pixel units. [#1264]- Fixed a bug where the
SourceCatalog
detection_catalog
was not indexed/sliced whenSourceCatalog
was indexed/sliced. [#1268] SourceCatalog
circular_photometry
now returns NaN for completely-masked sources. [#1268]SourceCatalog
kron_flux
is always NaN for sources wherekron_radius
is NaN. [#1268]SourceCatalog
fluxfrac_radius
now returns NaN ifkron_flux
is zero. [#1268]
- If
photutils.centroids
- A
ValueError
is now raised incentroid_sources
if the inputxpos
orypos
is outside of the inputdata
. [#1276] - A
ValueError
is now raised incentroid_quadratic
if the inputxpeak
orypeak
is outside of the inputdata
. [#1276] - NaNs are now returned from
centroid_sources
where the centroid failed. This is usually due to abox_size
that is too small when using a fitting-based centroid function. [#1276]
- A
photutils.segmentation
- Renamed the
SourceCatalog
circular_aperture
method tomake_circular_apertures
. The old name is deprecated. [#1268] - The
SourceCatalog
kron_params
keyword must have a minimum circular radius that is greater than zero. The default value is now 1.0. [#1268] detect_sources
now usesastropy.convolution.convolve
, which allows for masking pixels. [#1269]
- Renamed the
- The minimum required scipy version is 1.6.0 [#1239]
photutils.aperture
- Added a
mask
keyword to thearea_overlap
method. [#1241]
- Added a
photutils.background
- Improved the performance of
Background2D
by up to 10-50% when the optionalbottleneck
package is installed. [#1232] - Added a
masked
keyword to the background classesMeanBackground
,MedianBackground
,ModeEstimatorBackground
,MMMBackground
,SExtractorBackground
,BiweightLocationBackground
,StdBackgroundRMS
,MADStdBackgroundRMS
, andBiweightScaleBackgroundRMS
. [#1232] - Enable all background classes to work with
Quantity
inputs. [#1233] - Added a
markersize
keyword to theBackground2D
methodplot_meshes
. [#1234] - Added
__repr__
methods to all background classes. [#1236] - Added a
grid_mode
keyword toBkgZoomInterpolator
. [#1239]
- Improved the performance of
photutils.detection
- Added a
xycoords
keyword toDAOStarFinder
andIRAFStarFinder
. [#1248]
- Added a
photutils.psf
- Enabled the reuse of an output table from
BasicPSFPhotometry
and its subclasses as an initial guess for another photometry run. [#1251] - Added the ability to skip the
group_maker
step by inputing an initial guess table with agroup_id
column. [#1251]
- Enabled the reuse of an output table from
photutils.aperture
- Fixed a bug when converting between pixel and sky apertures with a
gwcs
object. [#1221]
- Fixed a bug when converting between pixel and sky apertures with a
photutils.background
- Fixed an issue where
Background2D
could fail when using the'pad'
edge method. [#1227]
- Fixed an issue where
photutils.detection
- Fixed the
DAOStarFinder
import deprecation message. [#1195]
- Fixed the
photutils.morphology
- Fixed an issue in
data_properties
where a scalar background input would raise an error. [#1198]
- Fixed an issue in
photutils.psf
- Fixed an issue in
prepare_psf_model
whenxname
oryname
wasNone
where the model offsets were applied in the wrong direction, resulting in the initial photometry guesses not being improved by the fit. [#1199]
- Fixed an issue in
photutils.segmentation
- Fixed an issue in
SourceCatalog
where the user-inputmask
was ignored whenapermask_method='correct'
for Kron-related calculations. [#1210] - Fixed an issue in
SourceCatalog
where thesegment
array could incorrectly have units. [#1220]
- Fixed an issue in
photutils.utils
- Fixed an issue in
ShepardIDWInterpolator
to allow its initialization with scalar data values and coordinate arrays having more than one dimension. [#1226]
- Fixed an issue in
photutils.aperture
- The
ApertureMask.get_values()
function now returns an empty array if there is no overlap with the data. [#1212] - Removed the deprecated
BoundingBox.slices
andPixelAperture.bounding_boxes
attributes. [#1215]
- The
photutils.background
- Invalid data values (i.e., NaN or inf) are now automatically masked
in
Background2D
. [#1232] - The background classes
MeanBackground
,MedianBackground
,ModeEstimatorBackground
,MMMBackground
,SExtractorBackground
,BiweightLocationBackground
,StdBackgroundRMS
,MADStdBackgroundRMS
, andBiweightScaleBackgroundRMS
now return by default anumpy.ndarray
withnp.nan
values representing masked pixels instead of a masked array. A masked array can be returned by settingmasked=True
. [#1232] - Deprecated the
Background2D
attributesbackground_mesh_ma
andbackground_rms_mesh_ma
. They have been renamed tobackground_mesh_masked
andbackground_rms_mesh_masked
. [#1232] - By default,
BkgZoomInterpolator
now usesgrid_mode=True
. For zooming 2D images, this keyword should be set to True, which makes the interpolator's behavior consistent withscipy.ndimage.map_coordinates
,skimage.transform.resize
, andOpenCV (cv2.resize)
. If backwards-compatiblity is needed with older Photutils' versions, setgrid_mode=False
. [#1239]
- Invalid data values (i.e., NaN or inf) are now automatically masked
in
photutils.centroid
- Deprecated the
gaussian1d_moments
andcentroid_epsf
functions. [#1240]
- Deprecated the
photutils.datasets
- Removed the deprecated
random_state
keyword in theapply_poisson_noise
,make_noise_image
,make_random_models_table
, andmake_random_gaussians_table
functions. [#1244] make_random_models_table
andmake_random_gaussians_table
now return an astropyQTable
with version metadata. [#1247]
- Removed the deprecated
photutils.detection
DAOStarFinder
,IRAFStarFinder
, andfind_peaks
now return an astropyQTable
with version metadata. [#1247]- The
StarFinder
label
column was renamed toid
for consistency with the other star finder classes. [#1254]
photutils.isophote
- The
Isophote
to_table
method nows return an astropyQTable
with version metadata. [#1247]
- The
photutils.psf
BasicPSFPhotometry
,IterativelySubtractedPSFPhotometry
, andDAOPhotPSFPhotometry
now return an astropyQTable
with version metadata. [#1247]
photutils.segmentation
- Deprecated the
filter_kernel
keyword in thedetect_sources
,deblend_sources
, andmake_source_mask
functions. It has been renamed to simplykernel
for consistency withSourceCatalog
. [#1242] - Removed the deprecated
random_state
keyword in themake_cmap
method. [#1244] - The
SourceCatalog
to_table
method nows return an astropyQTable
with version metadata. [#1247]
- Deprecated the
photutils.utils
- Removed the deprecated
check_random_state
function. [#1244] - Removed the deprecated
random_state
keyword in themake_random_cmap
function. [#1244]
- Removed the deprecated
- The minimum required python version is 3.7. [#1120]
photutils.aperture
- The
PixelAperture.plot()
method now returns a list ofmatplotlib.patches.Patch
objects. [#923] - Added an
area_overlap
method forPixelAperture
objects that gives the overlapping area of the aperture on the data. [#874] - Added a
get_overlap_slices
method and acenter
attribute toBoundingBox
. [#1157] - Added a
get_values
method toApertureMask
that returns a 1D array of mask-weighted values. [#1158, #1161] - Added
get_overlap_slices
method toApertureMask
. [#1165]
- The
photutils.background
- The
Background2D
class now accepts astropyNDData
,CCDData
, andQuantity
objects as data inputs. [#1140]
- The
photutils.detection
- Added a
StarFinder
class to detect stars with a user-defined kernel. [#1182]
- Added a
photutils.isophote
- Added the ability to specify the output columns in the
IsophoteList
to_table
method. [#1117]
- Added the ability to specify the output columns in the
photutils.psf
- The
EPSFStars
class is now usable with multiprocessing. [#1152] - Slicing
EPSFStars
now returns anEPSFStars
instance. [#1185]
- The
photutils.segmentation
- Added a modified, significantly faster,
SourceCatalog
class. [#1170, #1188, #1191] - Added
circular_aperture
andcircular_phometry
methods to theSourceCatalog
class. [#1188] - Added
fwhm
property to theSourceCatalog
class. [#1191] - Added
fluxfrac_radius
method to theSourceCatalog
class. [#1192] - Added a
bbox
attribute toSegmentationImage
. [#1187]
- Added a modified, significantly faster,
photutils.aperture
- Slicing a scalar
Aperture
object now raises an informative error message. [#1154] - Fixed an issue where
ApertureMask.multiply
fill_value
was not applied to pixels outside of the aperture mask, but within the aperture bounding box. [#1158] - Fixed an issue where
ApertureMask.cutout
would raise an error iffill_value
was non-finite and the input array was integer type. [#1158] - Fixed an issue where
RectangularAnnulus
with a non-defaulth_in
would give an incorrectApertureMask
. [#1160]
- Slicing a scalar
photutils.isophote
- Fix computation of gradient relative error when gradient=0. [#1180]
photutils.psf
- Fixed a bug in
EPSFBuild
where a warning was raised if the inputsmoothing_kernel
was annumpy.ndarray
. [#1146] - Fixed a bug that caused photometry to fail on an
EPSFmodel
with multiple stars in a group. [#1135] - Added a fallback
aperture_radius
for PSF models without a FWHM or sigma attribute, raising a warning. [#740]
- Fixed a bug in
photutils.segmentation
- Fixed
SourceProperties
local_background
to work with Quantity data inputs. [#1162] - Fixed
SourceProperties
local_background
for sources near the image edges. [#1162] - Fixed
SourceProperties
kron_radius
for sources that are completely masked. [#1164] - Fixed
SourceProperties
Kron properties for sources near the image edges. [#1167] - Fixed
SourceProperties
Kron mask correction. [#1167]
- Fixed
photutils.aperture
- Deprecated the
BoundingBox
slices
attribute. Use theget_overlap_slices
method instead. [#1157]
- Deprecated the
photutils.centroid
- Removed the deprecated
fit_2dgaussian
function andGaussianConst2D
class. [#1147] - Importing tools from the centroids subpackage without including the subpackage name is deprecated. [#1190]
- Removed the deprecated
photutils.detection
- Importing the
DAOStarFinder
,IRAFStarFinder
, andStarFinderBase
classes from the deprecatedfindstars.py
module is now deprecated. These classes can be imported usingfrom photutils.detection import <class>
. [#1173] - Importing the
find_peaks
function from the deprecatedcore.py
module is now deprecated. This function can be imported usingfrom photutils.detection import find_peaks
. [#1173]
- Importing the
photutils.morphology
- Importing tools from the morphology subpackage without including the subpackage name is deprecated. [#1190]
photutils.segmentation
- Deprecated the
"mask_all"
option in theSourceProperties
kron_params
keyword. [#1167] - Deprecated
source_properties
,SourceProperties
, andLegacySourceCatalog
. Use the newSourceCatalog
function instead. [#1170] - The
detect_threshold
function was moved to thesegmentation
subpackage. [#1171] - Removed the ability to slice
SegmentationImage
. Instead slice thesegments
attribute. [#1187]
- Deprecated the
photutils.background
- Improved the performance of
Background2D
(e.g., by a factor of ~4 with 2048x2048 input arrays when using the default interpolator). [#1103, #1108]
- Improved the performance of
photutils.background
- Fixed a bug with
Background2D
where usingBkgIDWInterpolator
would give incorrect results. [#1104]
- Fixed a bug with
photutils.isophote
- Corrected calculations of upper harmonics and their errors [#1089]
- Fixed bug that caused an infinite loop when the sample extracted from an image has zero length. [#1129]
- Fixed a bug where the default
fixed_parameters
inEllipseSample.update()
were not defined. [#1139]
photutils.psf
- Fixed a bug where very incorrect PSF-fitting uncertainties could be returned when the astropy fitter did not return fit uncertainties. [#1143]
- Changed the default
recentering_func
inEPSFBuilder
, to avoid convergence issues. [#1144]
photutils.segmentation
- Fixed an issue where negative Kron radius values could be returned, which would cause an error when calculating Kron fluxes. [#1132]
- Fixed an issue where an error was raised with
SegmentationImage.remove_border_labels()
withrelabel=True
when no segments remain. [#1133]
photutils.psf
- Fixed checks on
oversampling
factors. [#1086]
- Fixed checks on
- The minimum required python version is 3.6. [#952]
- The minimum required astropy version is 4.0. [#1081]
- The minimum required numpy version is 1.17. [#1079]
- Removed
astropy-helpers
and updated the package infrastructure as described in Astropy APE 17. [#915]
photutils.aperture
- Added
b_in
as an optional ellipse annulus keyword. [#1070] - Added
h_in
as an optional rectangle annulus keyword. [#1070]
- Added
photutils.background
- Added
coverage_mask
andfill_value
keyword options toBackground2D
. [#1061]
- Added
photutils.centroids
- Added quadratic centroid estimator function
(
centroid_quadratic
). [#1067]
- Added quadratic centroid estimator function
(
photutils.psf
- Added the ability to use odd oversampling factors in
EPSFBuilder
. [#1076]
- Added the ability to use odd oversampling factors in
photutils.segmentation
- Added Kron radius, flux, flux error, and aperture to
SourceProperties
. [#1068] - Added local background to
SourceProperties
. [#1075]
- Added Kron radius, flux, flux error, and aperture to
photutils.isophote
- Fixed a typo in the calculation of the
b4
higher-order harmonic coefficient inbuild_ellipse_model
. [#1052] - Fixed a bug where
build_ellipse_model
falls into an infinite loop when the pixel to fit is outside of the image. [#1039] - Fixed a bug where
build_ellipse_model
falls into an infinite loop under certain image/parameters input combinations. [#1056]
- Fixed a typo in the calculation of the
photutils.psf
- Fixed a bug in
subtract_psf
caused by using a fill_value of np.nan with an integer input array. [#1062]
- Fixed a bug in
photutils.segmentation
- Fixed a bug where
source_properties
would fail with unitlessgwcs.wcs.WCS
objects. [#1020]
- Fixed a bug where
photutils.utils
- The
effective_gain
parameter incalc_total_error
can now be zero (or contain zero values). [#1019]
- The
photutils.aperture
- Aperture pixel positions can no longer be shaped as 2xN. [#953]
- Removed the deprecated
units
keyword inaperture_photometry
andPixelAperture.do_photometry
. [#953] PrimaryHDU
,ImageHDU
, andHDUList
can no longer be input toaperture_photometry
. [#953]- Removed the deprecated the Aperture
mask_area
method. [#953] - Removed the deprecated Aperture plot keywords
ax
andindices
. [#953]
photutils.background
- Removed the deprecated
ax
keyword inBackground2D.plot_meshes
. [#953] Background2D
keyword options can not be input as positional arguments. [#1061]
- Removed the deprecated
photutils.centroids
centroid_1dg
,centroid_2dg
,gaussian1d_moments
,fit_2dgaussian
, andGaussianConst2D
have been moved to a newphotutils.centroids.gaussian
module. [#1064]- Deprecated
fit_2dgaussian
andGaussianConst2D
. [#1064]
photutils.datasets
- Removed the deprecated
type
keyword inmake_noise_image
. [#953] - Renamed the
random_state
keyword (deprecated) toseed
inapply_poisson_noise
,make_noise_image
,make_random_models_table
, andmake_random_gaussians_table
functions. [#1080]
- Removed the deprecated
photutils.detection
- Removed the deprecated
snr
keyword indetect_threshold
. [#953]
- Removed the deprecated
photutils.psf
- Added
flux_residual_sigclip
as an input parameter, allowing for custom sigma clipping options inEPSFBuilder
. [#984] - Added
extra_output_cols
as a parameter toBasicPSFPhotometry
,IterativelySubtractedPSFPhotometry
andDAOPhotPSFPhotometry
. [#745]
- Added
photutils.segmentation
- Removed the deprecated
SegmentationImage
methodscmap
andrelabel
. [#953] - Removed the deprecated
SourceProperties
values
andcoords
attributes. [#953] - Removed the deprecated
xmin/ymin
andxmax/ymax
properties. [#953] - Removed the deprecated
snr
andmask_value
keywords inmake_source_mask
. [#953] - Renamed the
random_state
keyword (deprecated) toseed
in themake_cmap
method. [#1080]
- Removed the deprecated
photutils.utils
- Removed the deprecated
random_cmap
,mask_to_mirrored_num
,get_version_info
,filter_data
, andstd_blocksum
functions. [#953] - Removed the deprecated
wcs_helpers
functionspixel_scale_angle_at_skycoord
,assert_angle_or_pixel
,assert_angle
, andpixel_to_icrs_coords
. [#953] - Deprecated the
check_random_state
function. [#1080] - Renamed the
random_state
keyword (deprecated) toseed
in themake_random_cmap
function. [#1080]
- Removed the deprecated
photutils.isophote
- Fixed computation of upper harmonics
a3
,b3
,a4
, andb4
in the ellipse fitting algorithm. [#1008]
- Fixed computation of upper harmonics
photutils.psf
- Fix to algorithm in
EPSFBuilder
, causing issues where ePSFs failed to build. [#974] - Fix to
IterativelySubtractedPSFPhotometry
where an error could be thrown when aFinder
was passed which did not returnNone
if no sources were found. [#986] - Fix to
centroid_epsf
where the wrong oversampling factor was used along the y axis. [#1002]
- Fix to algorithm in
photutils.psf
- Fix to
IterativelySubtractedPSFPhotometry
where the residual image was not initialized whenbkg_estimator
was not supplied. [#942]
- Fix to
photutils.segmentation
- Fixed a labeling bug in
deblend_sources
. [#961] - Fixed an issue in
source_properties
when the inputdata
is aQuantity
array. [#963]
- Fixed a labeling bug in
- Any WCS object that supports the astropy shared interface for WCS is now supported. [#899]
- Added a new
photutils.__citation__
andphotutils.__bibtex__
attributes which give a citation for photutils in bibtex format. [#926]
photutils.aperture
- Added parameter validation for all aperture classes. [#846]
- Added
from_float
,as_artist
,union
andintersection
methods toBoundingBox
class. [#851] - Added
shape
andisscalar
properties to Aperture objects. [#852] - Significantly improved the performance (~10-20 times faster) of
aperture photometry, especially when using
errors
andQuantity
inputs with many aperture positions. [#861] aperture_photometry
now supportsNDData
withStdDevUncertainty
to input errors. [#866]- The
mode
keyword in theto_sky
andto_pixel
aperture methods was removed to implement the shared WCS interface. All WCS transforms now include distortions (if present). [#899]
photutils.datasets
- Added
make_gwcs
function to create an examplegwcs.wcs.WCS
object. [#871]
- Added
photutils.isophote
- Significantly improved the performance (~5 times faster) of ellipse fitting. [#826]
- Added the ability to individually fix the ellipse-fitting parameters. [#922]
photutils.psf
- Added new centroiding function
centroid_epsf
. [#816]
- Added new centroiding function
photutils.segmentation
- Significantly improved the performance of relabeling in
segmentation images (e.g.,
remove_labels
,keep_labels
). [#810] - Added new
background_area
attribute toSegmentationImage
. [#825] - Added new
data_ma
attribute toSegment
. [#825] - Added new
SegmentationImage
methods:find_index
,find_indices
,find_areas
,check_label
,keep_label
,remove_label
, andreassign_labels
. [#825] - Added
__repr__
and__str__
methods toSegmentationImage
. [#825] - Added
slices
,indices
, andfiltered_data_cutout_ma
attributes toSourceProperties
. [#858] - Added
__repr__
and__str__
methods toSourceProperties
andSourceCatalog
. [#858] - Significantly improved the performance of calculating the
background_at_centroid
property inSourceCatalog
. [#863] - The default output table columns (source properties) are defined
in a publicly-accessible variable called
photutils.segmentation.properties.DEFAULT_COLUMNS
. [#863] - Added the
gini
source property representing the Gini coefficient. [#864] - Cached (lazy) properties can now be reset in
SegmentationImage
subclasses. [#916] - Significantly improved the performance of
deblend_sources
. It is ~40-50% faster for large images (e.g., 4k x 4k) with a few thousand of sources. [#924]
- Significantly improved the performance of relabeling in
segmentation images (e.g.,
photutils.utils
- Added
NoDetectionsWarning
class. [#836]
- Added
photutils.aperture
- Fixed an issue where the
ApertureMask.cutout
method would drop the data units whencopy=True
. [#842] - Fixed a corner-case issue where aperture photometry would return NaN for non-finite data values outside the aperture but within the aperture bounding box. [#843]
- Fixed an issue where the
celestial_center
column (for sky apertures) would be a length-1 array containing aSkyCoord
object instead of a length-1SkyCoord
object. [#844]
- Fixed an issue where the
photutils.isophote
- Fixed an issue where the linear fitting mode was not working. [#912]
- Fixed the radial gradient computation [#934].
photutils.psf
- Fixed a bug in the
EPSFStar
register_epsf
andcompute_residual_image
computations. [#885] - A ValueError is raised if
aperture_radius
is not input and cannot be determined from the inputpsf_model
. [#903] - Fixed normalization of ePSF model, now correctly normalizing on undersampled pixel grid. [#817]
- Fixed a bug in the
photutils.segmentation
- Fixed an issue where
deblend_sources
could fail for sources with labels that are a power of 2 and greater than 255. [#806] SourceProperties
andsource_properties
will no longer raise an exception if a source is completely masked. [#822]- Fixed an issue in
SourceProperties
andsource_properties
where inf values in the data array were not automatically masked. [#822] error
andbackground
arrays are now always masked identically to the inputdata
. [#822]- Fixed the
perimeter
property to take into account the source mask. [#822] - Fixed the
background_at_centroid
source property to use bilinear interpolation. [#822] - Fixed
SegmentationImage
outline_segments
to include outlines along the image boundaries. [#825] - Fixed
SegmentationImage.is_consecutive
to returnTrue
only if the labels are consecutive and start with label=1. [#886] - Fixed a bug in
deblend_sources
where sources could be deblended too much whenconnectivity=8
. [#890] - Fixed a bug in
deblend_sources
where thecontrast
parameter had little effect if the original segment contained three or more sources. [#890]
- Fixed an issue where
photutils.utils
- Fixed a bug in
filter_data
where units were dropped for dataQuantity
objects. [#872]
- Fixed a bug in
photutils.aperture
- Deprecated inputting aperture pixel positions shaped as 2xN. [#847]
- Renamed the
celestial_center
column tosky_center
in theaperture_photometry
output table. [#848] - Aperture objects defined with a single (x, y) position (input as
1D) are now considered scalar objects, which can be checked with
the new
isscalar
Aperture property. [#852] - Non-scalar Aperture objects can now be indexed, sliced, and iterated. [#852]
- Scalar Aperture objects now return scalar
positions
andbounding_boxes
properties and itsto_mask
method returns anApertureMask
object instead of a length-1 list containing anApertureMask
. [#852] - Deprecated the Aperture
mask_area
method. [#853] - Aperture
area
is now an attribute instead of a method. [#854] - The Aperture plot keyword
ax
was deprecated and renamed toaxes
. [#854] - Deprecated the
units
keyword inaperture_photometry
and thePixelAperture.do_photometry
method. [#866, #861] - Deprecated
PrimaryHDU
,ImageHDU
, andHDUList
inputs toaperture_photometry
. [#867] - The
aperture_photometry
function moved to a newphotutils.aperture.photometry
module. [#876] - Renamed the
bounding_boxes
attribute for pixel-based apertures tobbox
for consistency. [#896] - Deprecated the
BoundingBox
as_patch
method (instead useas_artist
). [#851]
photutils.background
- The
Background2D
plot_meshes
keywordax
was deprecated and renamed toaxes
. [#854]
- The
photutils.datasets
- The
make_noise_image
type
keyword was deprecated and renamed todistribution
. [#877]
- The
photutils.detection
- Removed deprecated
subpixel
keyword forfind_peaks
. [#835] DAOStarFinder
,IRAFStarFinder
, andfind_peaks
now returnNone
if no source/peaks are found. Also, for this case aNoDetectionsWarning
is issued. [#836]- Renamed the
snr
(deprecated) keyword tonsigma
indetect_threshold
. [#917]
- Removed deprecated
photutils.isophote
- Isophote central values and intensity gradients are now returned to the output table. [#892]
- The
EllipseSample
update
method now needs to know the fix/fit state of each individual parameter. This can be passed to it via aGeometry
instance, e.g.,update(geometry.fix)
. [#922]
photutils.psf
FittableImageModel
and subclasses now allow for differentoversampling
factors to be specified in the x and y directions. [#834]- Removed
pixel_scale
keyword fromEPSFStar
,EPSFBuilder
, andEPSFModel
. [#815] - Added
oversampling
keyword tocentroid_com
. [#816] - Removed deprecated
Star
,Stars
, andLinkedStar
classes. [#894] - Removed
recentering_boxsize
andcenter_accuracy
keywords and addednorm_radius
andshift_value
keywords inEPSFBuilder
. [#817] - Added
norm_radius
andshift_value
keywords toEPSFModel
. [#817]
photutils.segmentation
- Removed deprecated
SegmentationImage
attributesdata_masked
,max
, andis_sequential
and methodsarea
andrelabel_sequential
. [#825] - Renamed
SegmentationImage
methodscmap
(deprecated) tomake_cmap
andrelabel
(deprecated) toreassign_label
. The newreassign_label
method gains arelabel
keyword. [#825] - The
SegmentationImage
segments
andslices
attributes now have the same length aslabels
(noNone
placeholders). [#825] detect_sources
now returnsNone
if no sources are found. Also, for this case aNoDetectionsWarning
is issued. [#836]- The
SegmentationImage
inputdata
array must contain at least one non-zero pixel and must not contain any non-finite values. [#836] - A
ValueError
is raised if an empty list is input intoSourceCatalog
or no valid sources are defined insource_properties
. [#836] - Deprecated the
values
andcoords
attributes inSourceProperties
. [#858] - Deprecated the unused
mask_value
keyword inmake_source_mask
. [#858] - The
bbox
property now returns aBoundingBox
instance. [#863] - The
xmin/ymin
andxmax/ymax
properties have been deprecated with the replacements having abbox_
prefix (e.g.,bbox_xmin
). [#863] - The
orientation
property is now returned as aQuantity
instance in units of degrees. [#863] - Renamed the
snr
(deprecated) keyword tonsigma
inmake_source_mask
. [#917]
- Removed deprecated
photutils.utils
- Renamed
random_cmap
tomake_random_cmap
. [#825] - Removed deprecated
cutout_footprint
function. [#835] - Deprecated the
wcs_helpers
functionspixel_scale_angle_at_skycoord
,assert_angle_or_pixel
,assert_angle
, andpixel_to_icrs_coords
. [#846] - Removed deprecated
interpolate_masked_data
function. [#895] - Deprecated the
mask_to_mirrored_num
function. [#895] - Deprecated the
get_version_info
,filter_data
, andstd_blocksum
functions. [#918]
- Renamed
- Versions of Numpy <1.11 are no longer supported. [#783]
photutils.detection
DAOStarFinder
andIRAFStarFinder
gain two new parameters:brightest
to keep the topbrightest
(based on the flux) objects in the returned catalog (after all other filtering has been applied) andpeakmax
to exclude sources with peak pixel values larger or equal topeakmax
. [#750]- Added a
mask
keyword toDAOStarFinder
andIRAFStarFinder
that can be used to mask regions of the input image. [#759]
photutils.psf
- The
Star
,Stars
, andLinkedStars
classes are now deprecated and have been renamedEPSFStar
,EPSFStars
, andLinkedEPSFStars
, respectively. [#727] - Added a
GriddedPSFModel
class for spatially-dependent PSFs. [#772] - The
pixel_scale
keyword inEPSFStar
,EPSFBuilder
andEPSFModel
is now deprecated. Use theoversampling
keyword instead. [#780]
- The
photutils.detection
- The
find_peaks
function now returns an emptyastropy.table.Table
instead of an empty list if the input data is an array of constant values. [#709] - The
find_peaks
function will no longer issue a RuntimeWarning if the input data contains NaNs. [#712] - If no sources/peaks are found,
DAOStarFinder
,IRAFStarFinder
, andfind_peaks
now will return an empty table with column names and types. [#758, #762]
- The
photutils.psf
- The
photutils.psf.funcs.py
module was renamedphotutils.psf.utils.py
. Theprepare_psf_model
andget_grouped_psf_model
functions were also moved to this newutils.py
module. [#777]
- The
photutils.aperture
- If a single aperture is input as a list into the
aperture_photometry
function, then the output columns will be calledaperture_sum_0
andaperture_sum_err_0
(if errors are used). Previously these column names did not have the trailing "_0". [#779]
- If a single aperture is input as a list into the
photutils.segmentation
- Fixed a bug in the computation of
sky_bbox_ul
,sky_bbox_lr
,sky_bbox_ur
in theSourceCatalog
. [#716]
- Fixed a bug in the computation of
- Updated background and detection functions that call
astropy.stats.SigmaClip
orastropy.stats.sigma_clipped_stats
to support both theiriters
(for astropy < 3.1) andmaxiters
keywords. [#726]
- Versions of Python <3.5 are no longer supported. [#702, #703]
- Versions of Numpy <1.10 are no longer supported. [#697, #703]
- Versions of Pytest <3.1 are no longer supported. [#702]
pytest-astropy
is now required to run the test suite. [#702, #703]- The documentation build now uses the Sphinx configuration from
sphinx-astropy
rather than fromastropy-helpers
. [#702]
photutils.aperture
- Added
plot
andto_aperture
methods toBoundingBox
. [#662] - Added default theta value for elliptical and rectangular apertures. [#674]
- Added
photutils.centroid
- Added a
centroid_sources
function to calculate centroid of many sources in a single image. [#656] - An n-dimensional array can now be input into the
centroid_com
function. [#685]
- Added a
photutils.datasets
- Added a
load_simulated_hst_star_image
function to load a simulated HST WFC3/IR F160W image of stars. [#695]
- Added a
photutils.detection
- Added a
centroid_func
keyword tofind_peaks
. Thesubpixels
keyword is now deprecated. [#656] - The
find_peaks
function now returnsSkyCoord
objects in the table instead of separate RA and Dec. columns. [#656] - The
find_peaks
function now returns an empty Table and issues a warning when no peaks are found. [#668]
- Added a
photutils.psf
- Added tools to build and fit an effective PSF (
EPSFBuilder
andEPSFFitter
). [#695] - Added
extract_stars
function to extract cutouts of stars used to build an ePSF. [#695] - Added
EPSFModel
class to hold a fittable ePSF model. [#695]
- Added tools to build and fit an effective PSF (
photutils.segmentation
- Added a
mask
keyword to thedetect_sources
function. [#621] - Renamed
SegmentationImage
max
attribute tomax_label
.max
is deprecated. [#662] - Added a
Segment
class to hold the cutout image and properties of single labeled region (source segment). [#662] - Deprecated the
SegmentationImage
area
method. Instead, use theareas
attribute. [#662] - Renamed
SegmentationImage
data_masked
attribute todata_ma
.data_masked
is deprecated. [#662] - Renamed
SegmentationImage
is_sequential
attribute tois_consecutive
.is_sequential
is deprecated. [#662] - Renamed
SegmentationImage
relabel_sequential
attribute torelabel_consecutive
.relabel_sequential
is deprecated. [#662] - Added a
missing_labels
property toSegmentationImage
. [#662] - Added a
check_labels
method toSegmentationImage
. Thecheck_label
method is deprecated. [#662]
- Added a
photutils.utils
- Deprecated the
cutout_footprint
function. [#656]
- Deprecated the
photutils.aperture
- Fixed a bug where quantity inputs to the aperture classes would sometimes fail. [#693]
photutils.detection
- Fixed an issue in
detect_sources
where in some cases sources with a size less thannpixels
could be returned. [#663] - Fixed an issue in
DAOStarFinder
where in some cases a few too many sources could be returned. [#671]
- Fixed an issue in
photutils.isophote
- Fixed a bug where isophote fitting would fail when the initial center was not specified for an image with an elongated aspect ratio. [#673]
photutils.segmentation
- Fixed
deblend_sources
when other sources are in the neighborhood. [#617] - Fixed
source_properties
to handle the case where the data contain one or more NaNs. [#658] - Fixed an issue with
deblend_sources
where sources were not deblended where the data contain one or more NaNs. [#658] - Fixed the
SegmentationImage
areas
attribute to not include the zero (background) label. [#662]
- Fixed
photutils.isophote
- Corrected the units for isophote
sarea
in the documentation. [#657]
- Corrected the units for isophote
- Dropped python 3.3 support. [#542]
- Dropped numpy 1.8 support. Minimal required version is now numpy 1.9. [#542]
- Dropped support for astropy 1.x versions. Minimal required version is now astropy 2.0. [#575]
- Dropped scipy 0.15 support. Minimal required version is now scipy 0.16. [#576]
- Explicitly require six as dependency. [#601]
photutils.aperture
- Added
BoundingBox
class, used when defining apertures. [#481] - Apertures now have
__repr__
and__str__
defined. [#493] - Improved plotting of annulus apertures using Bezier curves. [#494]
- Rectangular apertures now use the true minimal bounding box. [#507]
- Elliptical apertures now use the true minimal bounding box. [#508]
- Added a
to_sky
method for pixel apertures. [#512]
- Added
photutils.background
- Mesh rejection now also applies to pixels that are masked during sigma clipping. [#544]
photutils.datasets
- Added new
make_wcs
andmake_imagehdu
functions. [#527] - Added new
show_progress
keyword to theload_*
functions. [#590]
- Added new
photutils.isophote
- Added a new
photutils.isophote
subpackage to provide tools to fit elliptical isophotes to a galaxy image. [#532, #603]
- Added a new
photutils.segmentation
- Added a
cmap
method toSegmentationImage
to generate a random matplotlib colormap. [#513] - Added
sky_centroid
andsky_centroid_icrs
source properties. [#592] - Added new source properties representing the sky coordinates of
the bounding box corner vertices (
sky_bbox_ll
,sky_bbox_ul
sky_bbox_lr
, andsky_bbox_ur
). [#592] - Added new
SourceCatalog
class to hold the list ofSourceProperties
. [#608] - The
properties_table
function is now deprecated. Use theSourceCatalog.to_table()
method instead. [#608]
- Added a
photutils.psf
- Uncertainties on fitted parameters are added to the final table. [#516]
- Fitted results of any free parameter are added to the final table. [#471]
photutils.aperture
- The
ApertureMask
apply()
method has been renamed tomultiply()
. [#481]. - The
ApertureMask
input parameter was renamed frommask
todata
. [#548] - Removed the
pixelwise_errors
keyword fromaperture_photometry
. [#489]
- The
photutils.background
- The
Background2D
keywordsexclude_mesh_method
andexclude_mesh_percentile
were removed in favor of a single keyword calledexclude_percentile
. [#544] - Renamed
BiweightMidvarianceBackgroundRMS
toBiweightScaleBackgroundRMS
. [#547] - Removed the
SigmaClip
class.astropy.stats.SigmaClip
is a direct replacement. [#569]
- The
photutils.datasets
- The
make_poission_noise
function was renamed toapply_poisson_noise
. [#527] - The
make_random_gaussians
function was renamed tomake_random_gaussians_table
. The parameter ranges must now be input as a dictionary. [#527] - The
make_gaussian_sources
function was renamed tomake_gaussian_sources_image
. [#527] - The
make_random_models
function was renamed tomake_random_models_table
. [#527] - The
make_model_sources
function was renamed tomake_model_sources_image
. [#527] - The
unit
,hdu
,wcs
, andwcsheader
keywords inphotutils.datasets
functions were removed. [#527] 'photutils-datasets'
was added as an optionallocation
in theget_path
function. This option is used as a fallback in case the'remote'
location (astropy data server) fails. [#589]
- The
photutils.detection
- The
daofind
andirafstarfinder
functions were removed. [#588]
- The
photutils.psf
IterativelySubtractedPSFPhotometry
issues a "no sources detected" warning only on the first iteration, if applicable. [#566]
photutils.segmentation
- The
'icrs_centroid'
,'ra_icrs_centroid'
, and'dec_icrs_centroid'
source properties are deprecated and are no longer default columns returned byproperties_table
. [#592] - The
properties_table
function now returns aQTable
. [#592]
- The
photutils.utils
- The
background_color
keyword was removed from therandom_cmap
function. [#528] - Deprecated unused
interpolate_masked_data()
. [#526, #611]
- The
photutils.segmentation
- Fixed
deblend_sources
so that it correctly deblends multiple sources. [#572] - Fixed a bug in calculation of the
sky_centroid_icrs
(and deprecatedicrs_centroid
) property where the incorrect pixel origin was being passed. [#592]
- Fixed
photutils.utils
- Added a check that
data
andbkg_error
have the same units incalc_total_error
. [#537]
- Added a check that
- Fixed file permissions in the released source distribution.
- Dropped numpy 1.7 support. Minimal required version is now numpy 1.8. [#327]
photutils.datasets
- The
load_*
functions that use remote data now retrieve the data fromdata.astropy.org
(the astropy data repository). [#472]
- The
photutils.background
- Fixed issue with
Background2D
withedge_method='pad'
that occurred when unequal padding needed to be applied to each axis. [#498] - Fixed issue with
Background2D
that occurred when zero padding needed to apply along only one axis. [#500]
- Fixed issue with
photutils.geometry
- Fixed a bug in
circular_overlap_grid
affecting 32-bit machines that could cause errors circular aperture photometry. [#475]
- Fixed a bug in
photutils.psf
- Fixed a bug in how
FittableImageModel
represents its center. [#460] - Fix bug which modified user's input table when doing forced photometry. [#485]
- Fixed a bug in how
photutils.aperture
- Added new
origin
keyword to apertureplot
methods. [#395] - Added new
id
column toaperture_photometry
output table. [#446] - Added
__len__
method for aperture classes. [#446] - Added new
to_mask
method toPixelAperture
classes. [#453] - Added new
ApertureMask
class to generate masks from apertures. [#453] - Added new
mask_area()
method toPixelAperture
classes. [#453] - The
aperture_photometry()
function now accepts a list of aperture objects. [#454]
- Added new
photutils.background
- Added new
MeanBackground
,MedianBackground
,MMMBackground
,SExtractorBackground
,BiweightLocationBackground
,StdBackgroundRMS
,MADStdBackgroundRMS
, andBiweightMidvarianceBackgroundRMS
classes. [#370] - Added
axis
keyword to new background classes. [#392] - Added new
removed_masked
,meshpix_threshold
, andedge_method
keywords for the 2D background classes. [#355] - Added new
std_blocksum
function. [#355] - Added new
SigmaClip
class. [#423] - Added new
BkgZoomInterpolator
andBkgIDWInterpolator
classes. [#437]
- Added new
photutils.datasets
- Added
load_irac_psf
function. [#403]
- Added
photutils.detection
- Added new
make_source_mask
convenience function. [#355] - Added
filter_data
function. [#398] - Added
DAOStarFinder
andIRAFStarFinder
as oop interfaces fordaofind
andirafstarfinder
, respectively, which are now deprecated. [#379]
- Added new
photutils.psf
- Added
BasicPSFPhotometry
,IterativelySubtractedPSFPhotometry
, andDAOPhotPSFPhotometry
classes to perform PSF photometry in crowded fields. [#427] - Added
DAOGroup
andDBSCANGroup
classes for grouping overlapping sources. [#369]
- Added
photutils.psf_match
- Added
create_matching_kernel
andresize_psf
functions. Also, addedCosineBellWindow
,HanningWindow
,SplitCosineBellWindow
,TopHatWindow
, andTukeyWindow
classes. [#403]
- Added
photutils.segmentation
- Created new
photutils.segmentation
subpackage. [#442] - Added
copy
andarea
methods and anareas
property toSegmentationImage
. [#331]
- Created new
photutils.aperture
- Removed the
effective_gain
keyword fromaperture_photometry
. Users must now input the total error, which can be calculated using thecalc_total_error
function. [#368] aperture_photometry
now outputs aQTable
. [#446]- Renamed
source_id
keyword toindices
in the apertureplot()
method. [#453] - Added
mask
andunit
keywords to aperturedo_photometry()
methods. [#453]
- Removed the
photutils.background
- For the background classes, the
filter_shape
keyword was renamed tofilter_size
. Thebackground_low_res
andbackground_rms_low_res
class attributes were renamed tobackground_mesh
andbackground_rms_mesh
, respectively. [#355, #437] - The
Background2D
method
andbackfunc
keywords have been removed. In its place one can input callable objects via thesigma_clip
,bkg_estimator
, andbkgrms_estimator
keywords. [#437] - The interpolator to be used by the
Background2D
class can be input as a callable object via the newinterpolator
keyword. [#437]
- For the background classes, the
photutils.centroids
- Created
photutils.centroids
subpackage, which contains thecentroid_com
,centroid_1dg
, andcentroid_2dg
functions. These functions now return a two-element numpy ndarray. [#428]
- Created
photutils.detection
- Changed finding algorithm implementations (
daofind
andstarfind
) from functional to object-oriented style. Deprecated old style. [#379]
- Changed finding algorithm implementations (
photutils.morphology
- Created
photutils.morphology
subpackage. [#428] - Removed
marginalize_data2d
function. [#428] - Moved
cutout_footprint
fromphotutils.morphology
tophotutils.utils
. [#428] - Added a function to calculate the Gini coefficient (
gini
). [#343]
- Created
photutils.psf
- Removed the
effective_gain
keyword frompsf_photometry
. Users must now input the total error, which can be calculated using thecalc_total_error
function. [#368]
- Removed the
photutils.segmentation
- Removed the
effective_gain
keyword fromSourceProperties
andsource_properties
. Users must now input the total error, which can be calculated using thecalc_total_error
function. [#368]
- Removed the
photutils.utils
- Renamed
calculate_total_error
tocalc_total_error
. [#368]
- Renamed
photutils.aperture
- Fixed a bug in
aperture_photometry
so that single-row output tables do not return a multidimensional column. [#446]
- Fixed a bug in
photutils.centroids
- Fixed a bug in
centroid_1dg
andcentroid_2dg
that occurred when the input data contained invalid (NaN or inf) values. [#428]
- Fixed a bug in
photutils.segmentation
- Fixed a bug in
SourceProperties
whereerror
andbackground
units were sometimes dropped. [#441]
- Fixed a bug in
- Dropped numpy 1.6 support. Minimal required version is now numpy 1.7. [#327]
- Fixed configparser for Python 3.5. [#366, #384]
photutils.detection
- Fixed an issue to update segmentation image slices after deblending. [#340]
- Fixed source deblending to pass the pixel connectivity to the watershed algorithm. [#347]
- SegmentationImage properties are now cached instead of recalculated, which significantly improves performance. [#361]
photutils.utils
- Fixed a bug in
pixel_to_icrs_coords
where the incorrect pixel origin was being passed. [#348]
- Fixed a bug in
photutils.background
- Added more robust version checking of Astropy. [#318]
photutils.detection
- Added more robust version checking of Astropy. [#318]
photutils.segmentation
- Fixed issue where
SegmentationImage
slices were not being updated. [#317] - Added more robust version checking of scikit-image. [#318]
- Fixed issue where
- Photutils has the following requirements:
- Python 2.7 or 3.3 or later
- Numpy 1.6 or later
- Astropy v1.0 or later
photutils.detection
find_peaks
now returns an Astropy Table containing the (x, y) positions and peak values. [#240]find_peaks
has newmask
,error
,wcs
andsubpixel
precision options. [#244]detect_sources
will now issue a warning if the filter kernel is not normalized to 1. [#298]- Added new
deblend_sources
function, an experimental source deblender. [#314]
photutils.morphology
- Added new
GaussianConst2D
(2D Gaussian plus a constant) model. [#244] - Added new
marginalize_data2d
function. [#244] - Added new
cutout_footprint
function. [#244]
- Added new
photutils.segmentation
- Added new
SegmentationImage
class. [#306] - Added new
check_label
,keep_labels
, andoutline_segments
methods for modifyingSegmentationImage
. [#306]
- Added new
photutils.utils
- Added new
random_cmap
function to generate a colormap comprised of random colors. [#299] - Added new
ShepardIDWInterpolator
class to perform Inverse Distance Weighted (IDW) interpolation. [#307] - The
interpolate_masked_data
function can now interpolate higher-dimensional data. [#310]
- Added new
photutils.segmentation
- The
relabel_sequential
,relabel_segments
,remove_segments
,remove_border_segments
, andremove_masked_segments
functions are nowSegmentationImage
methods (with slightly different names). [#306] - The
SegmentProperties
class has been renamed toSourceProperties
. Likewise, thesegment_properties
function has been renamed tosource_properties
. [#306] - The
segment_sum
andsegment_sum_err
attributes have been renamed tosource_sum
andsource_sum_err
, respectively. [#306] - The
background_atcentroid
attribute has been renamed tobackground_at_centroid
. [#306]
- The
photutils.aperture
- Fixed an issue where
np.nan
ornp.inf
were not properly masked. [#267]
- Fixed an issue where
photutils.geometry
overlap_area_triangle_unit_circle
handles correctly a corner case in some i386 systems where the area of the aperture was not computed correctly. [#242]rectangular_overlap_grid
andelliptical_overlap_grid
fixes to normalization of subsampled pixels. [#265]overlap_area_triangle_unit_circle
handles correctly the case where a line segment intersects at a triangle vertex. [#277]
- Updated astropy-helpers to v1.1. [#302]
Photutils 0.1 was released on December 22, 2014. It requires Astropy version 0.4 or later.