Full Changelog#

2.6.0 (unreleased)#

New Features#

  • Add array-api-strict (on a non-default device) as a test backend, a CPU-only proxy for CuPy device behavior. [#942]

  • Allow ImageFileCollection.ccds to override the collection’s FITS extension per call with ccd_kwargs["hdu"] while preserving ext= as a header filter. [#960]

  • Combiner.sigma_clipping now clips data in a non-NumPy array namespace with an implementation written in terms of the array API standard that reproduces astropy.stats.sigma_clip’s result up to floating-point rounding of the reductions, except for a slice an iteration empties (see the #1009 entry): a value lying exactly on a bound can be classified differently from astropy (NumPy data still use astropy); 'median'/'mean'/'std'/'mad_std' use the namespace’s NaN-aware reductions or ccdproc’s fallbacks. [#1001]

  • Combiner.sigma_clipping outside NumPy now accepts axis=None and a tuple or list of axes, as astropy.stats.sigma_clip does on the NumPy path, and the reduction fallbacks in ccdproc._nanfuncs gained the same axis forms; the None/tuple axis handling formerly in _mad_fallback moved into the shared _nanfuncs._setup, and a bool or otherwise non-integer axis now raises TypeError rather than NotImplementedError. [#1006]

  • Combiner.sigma_clipping outside NumPy now masks every value of a slice that an iteration empties, as astropy.stats.sigma_clip does from astropy 8.0.2; on earlier astropy the NumPy path leaves such a slice’s finite values unmasked. [#1009]

  • block_reduce, block_average and block_replicate keep non-NumPy input in its own array library and on its own device instead of coercing it to NumPy through astropy.nddata. block_reduce with an explicit func=xp.mean promotes integer and boolean input to a floating dtype, as block_average does, so that it gives NumPy’s result on every backend. [#1009]

  • The local window filters used by median_filter, cosmicray_median, background_deviation_filter and ccdmask no longer copy a non-NumPy array to the host: NumPy input still goes to scipy.ndimage unchanged, while every other array namespace is served by a new implementation written purely in terms of the array API standard. Part of the array API migration tracked in #971. [#1010]

  • Off NumPy those filters reproduce scipy.ndimage exactly on finite input, but cost O(k**2 log k**2) per pixel for a k-by-k window rather than ndimage’s O(k**2), and need a fully known shape, so a dask array with unknown chunk sizes must have compute_chunk_sizes() called on it first. [#1010]

  • Off NumPy those filters exclude NaNs from a window and rank among the values that remain, where scipy.ndimage sorts them in with the values; results on data containing NaN therefore differ between NumPy and every other array library. [#1010]

  • Off NumPy those filters implement only ndimage’s 'reflect' and 'nearest' boundary modes, and median_filter accepts only size and mode, raising TypeError for any other scipy.ndimage argument. [#1010]

  • Off NumPy those filters promote integer and boolean input to a floating dtype, which scipy.ndimage does not, and reject complex input and floating input narrower than float32, which scipy.ndimage rejects as well. [#1010]

  • cosmicray_median now returns a floating result for integer input on every array library. Previously NumPy kept the input integer dtype, dask returned a float and array-api-strict raised. [#1010]

  • background_deviation_box now accepts a plain array-like such as a nested list, as its docstring has always promised. [#1010]

  • The three operations that depend on a NumPy-only library – wcs_project (reproject), subtract_overscan with a model (astropy.modeling) and cosmicray_lacosmic (astroscrappy) – now make that host round trip explicitly: they copy their input to NumPy on the host, run, and copy every array they return, data and mask alike, back to the array namespace and device of the input, so a non-NumPy caller never receives a NumPy array in its place. Each warns once per call site with the new ccdproc.HostCopyWarning (a subclass of AstropyUserWarning) when an array that is not already NumPy has to be copied to the host, including a non-NumPy inbkg or invar passed to cosmicray_lacosmic with a NumPy image; when every array is NumPy, nothing is copied or warned about. combine(output_file=...) does not warn either: it copies the combined image to NumPy only to write the FITS file, and the image it returns stays in the input’s array namespace. On NumPy, float32 data cleaned by cosmicray_lacosmic with a NumPy float64 pssl (such as np.median of float64 data) now stays float32, as it already did for every other type of pssl. Likewise, cosmicray_lacosmic with gain_apply=True now returns float32 data for integer and float32 input whatever the gain, as it already did for a gain of 1; previously any other gain promoted the data to float64. [#930, #933, #935, #1011, #1023]

Other Changes and Additions#

  • The py313-strict CI job is now part of the regular CI matrix and fails CI on a test failure; the expected-failures carve-out and the strict_status.yml reporting workflow are retired. [#1005]

  • Add triage tooling for array-API backend failures: backend_xfail / backend_skip markers, an escape-site report (CCDPROC_TRIAGE_ESCAPES=1), and an escape logger (CCDPROC_LOG_ARRAY_ESCAPES=1). [#942]

  • Add a strict tox environment for running the array-api-strict test suite locally: tox -e strict reproduces the CI py313-strict job without having to name the interpreter. [#986]

  • combine no longer accepts an array as its array_package argument; pass the array namespace or module instead. [#997]

  • subtract_overscan, subtract_bias, subtract_dark, flat_correct, ccd_process, cosmicray_median, Combiner and combine now raise TypeError when their images come from different array libraries and ValueError when they are on different devices. Previously some of these calls silently converted one of the images. combine given a mix of file names and CCDData images in memory reads the files into the array library of the images in memory. [#1025, #1028]

  • The minimum supported numpy is now 2.0 (normalize_axis_tuple is imported from its numpy 2 location with no 1.26 fallback), which raises the minimum astropy to 6.1, reproject to 0.14 and astroscrappy to 1.2, the oldest releases that work with numpy 2. [#1000]

  • The minimum supported versions now follow SPEC 0: Python 3.12, numpy 2.2, scipy 1.15 and, applying the same two-year window, astropy 7.0. The oldestdeps and oldest-numpy tox environments now constrain the package install to their pins; previously the oldest-numpy environment was upgraded to the newest numpy by a test dependency (jax). [#1031]

Bug Fixes#

  • Masks set by ccdproc functions, except the deprecated rebin, now follow the array library and device of the data, with their shape checked; a mask that cannot, such as a CuPy mask with NumPy data, raises. For masked jax or dask images, create_deviation, subtract_overscan and ccd_process returned a NumPy mask, and several others used the default device. [#1024]

  • ccd_process again raises ValueError for a bad_pixel_mask whose shape differs from the data’s, as it did in 2.5.1. [#1027]

  • wcs_project no longer returns a NumPy-backed CCDData for non-NumPy input: the reprojected data and mask are converted back to the array namespace and device of the input image. [#930, #1011]

  • wcs_project, subtract_overscan with a model and cosmicray_lacosmic now return floating data in its input dtype rather than in the dtype of the NumPy-only library that does the work. [#1023]

  • cosmicray_lacosmic now accepts a float64 invar, which it passes to astroscrappy as float32 instead of letting astroscrappy raise ValueError. [#1032]

  • flat_correct now checks the flat’s mask with xp.any instead of the mask.any() method, which arrays of spec-only array-API namespaces do not have. [#1005]

  • Exclude masked and clipped pixels, and their weights, when computing weighted average combinations. [#952]

  • cosmicray_median now honors the mask of a CCDData or masked-array input: masked pixels are never flagged as cosmic rays, no longer seed gbox growth into their neighbors, are returned unchanged, and are excluded from the noise estimate when error_image is not given. Previously the mask of a masked array was silently dropped by the array conversion. [#932]

  • Add a NaN-aware median written purely in terms of the array API standard and use it in Combiner.median_combine when the selected array namespace has no nanmedian, instead of raising RuntimeError. [#906]

  • Add NaN-aware sum, mean and standard deviation written purely in terms of the array API standard and use them in Combiner.average_combine and Combiner.sum_combine when the selected array namespace has no nansum/nanmean/nanstd, instead of raising RuntimeError. [#986]

  • Make the Combiner combination internals array-API compatible and size images for mem_limit from the element count and dtype width instead of the non-standard nbytes. [#988]

  • Make flat_correct and ccdmask use functional array updates so they support immutable array-API backends. [#956]

  • Build the Combiner data and mask arrays with xp.stack instead of passing a nested list of arrays to xp.asarray, and keep the mask and scaling arrays in the namespace and on the device of the input data. Combiner.scaling is now cast to the dtype of the data, accepts an array-API array without __len__, and is reshaped to exactly one broadcast axis per image dimension, so a (N, 1) scaling array or a callable returning a one-element array no longer adds a spurious trailing dimension to the combined image. [#965]

  • Fix the fallback percentile calculation for array namespaces that do not provide percentile. [#957]

  • Cast the boolean mask to the data dtype in create_deviation so that disregard_nan=True works with strict array-API backends. [#968]

  • Keep VarianceUncertainty and InverseVariance propagation in the array namespace of the data instead of converting to NumPy. [#962]

  • Make array-API escape logging thread-safe so concurrent worker escapes are not missed. [#955]

  • Create the dark scale factor in subtract_dark(scale=True) on the same device as the master dark, and stop reporting non-unit errors from the subtraction as unit mismatches. [#966]

  • Remove stale comments in the Combiner *_combine methods and rebind the uncertainty instead of modifying it in place, so the methods work with immutable array-API backends. [#980]

  • Fix dtype conversion in Combiner._weighted_sum to use the array-API namespace form xp.astype(weights, xp.float64) instead of the deprecated string-based .astype("float64"). This resolves the DeprecationWarning that was being promoted to a test failure in the JAX CI job. [#924]

  • Return plain CCDData objects from array-API wrapper-copy paths, and public uncertainty types from arithmetic paths. [#953]

  • Propagate gain correction to CCDData uncertainties in cosmicray_lacosmic, and preserve data and uncertainty units when gain correction is disabled. [#958, #729]

  • Use Bottleneck combination functions only with NumPy arrays, preserving the selected Array API namespace for other backends. [#904, #959]

  • Make rebin build its index array with xp.astype on the input array’s device instead of the NumPy-only .astype method, so it works with array-API backends such as array-api-strict. [#967]

  • Keep Combiner.clip_extrema index arithmetic in the selected array namespace so GPU-backed arrays do not require an implicit conversion to NumPy. [#954]

  • Fix background_deviation_box discarding the result of the functional array update, which left the output at the global standard deviation on immutable array-API backends such as JAX. [#963]

  • Add a median fallback written purely in terms of the array API standard, built on the existing NaN-aware nanmedian, and use it in subtract_overscan when the selected array namespace has no median, instead of raising AttributeError. [#989]

  • Keep the mask of the result of Combiner.average_combine, median_combine, sum_combine and combine in the array namespace and on the device of the data instead of converting it to NumPy. [#992]

  • Fix gain_correct and flat_correct for images on a non-default device: put the gain and flat normalization on the device of the data, cast an integer gain to float, and keep the uncertainty propagation for multiplication and division out of NumPy. [#993]

  • Use the array namespace’s bool for the ccd_process bad-pixel mask, cast the mask in transform_image to the data dtype before transforming it, and convert FITS data to native byte order before handing it to a non-NumPy array namespace in combine and ImageFileCollection. [#995]

  • Compute the Combiner.clip_extrema mask with a rank comparison instead of scattering into the mask through per-pixel integer indices, which the array API standard does not support. [#994]

  • Accept a plain module such as numpy or dask.array as array_package in combine, normalising it to its array-api-compat namespace. [#997]

  • Keep the uncertainty propagation for correlated addition and subtraction through _CCDDataWrapperForArrayAPI in the array namespace instead of falling back to NumPy. [#997]

  • combine writes output_file from a NumPy copy of the result, so a result in a non-NumPy array namespace can be written to FITS and is returned unchanged in its namespace. [#999]

  • Combiner and combine map a dtype given as a builtin type, string or NumPy dtype (e.g. dtype=int) to the array namespace’s own dtype instead of passing it through unchanged. [#999]

  • Size the overscan model fit in subtract_overscan with shape instead of len, which the array API standard does not provide. [#999]

  • Compute sigma_func (the median_combine uncertainty) with a median absolute deviation written purely in terms of the array API when the array namespace is not numpy, instead of converting the data to numpy through astropy.stats.median_absolute_deviation. Numpy input still uses astropy. [#1000]

  • sigma_func now always excludes the masked pixels of a masked CCDData. Previously the mask was only honored on numpy for small arrays with a single integer axis and ignore_nan=True, and, when bottleneck is installed, not for float64 data at all. [#1000]

  • Passing axis, copy or maxiters to Combiner.sigma_clipping no longer raises TypeError. [#1001]

  • Correct the Combiner.sigma_clipping docstring, which said the default func was 'median'; the runtime default has always been 'mean'. [#1001]

  • combine on array-api-strict no longer raises mismatched dtypes when the first image’s uncertainty dtype differs from dtype. [#1028]

2.5.1 (2025-07-05)#

Other Changes and Additions#

  • Remove superfluous license file from the package. [#899]

  • scikit-image is no longer a runtime dependency. [#921]

2.5.0 (2025-07-03)#

New Features#

Other Changes and Additions#

  • Removed the unused private function _blkavg. [#869]

  • Elements of the data array in a flat image that are masked are set to 1 instead of 0.

  • Removed unused ccdproc.test(). Use pytest --pyargs ccdproc instead. [#880]

  • Removed bundled copy of bitfield handling and use the one from astropy. [#886]

Bug Fixes#

  • Do not allow the first argument of subtract_overscan to be a plain numpy array. [#867]

  • Combiner.sigma_clipping no longer overwrites the existing mask. [#873]

2.4.3 (2025-01-15)#

New Features#

Other Changes and Additions#

  • There was extensive modernization of the package infrastructure that should not affect users.

Bug Fixes#

  • Fixes incorrect parameter passed to helper in cosmicray_lacosmic. [#796]

2.4.2 (2024-05-03)#

New Features#

Other Changes and Additions#

  • Make ccdproc compatible with numpy 2. [#824]

2.4.1 (2023-05-30)#

New Features#

Other Changes and Additions#

Bug Fixes#

  • Fixes a crash when attempting to filter an already-empty ImageFileCollection, instead simply returning an empty ImageFileCollection. [#801]

  • Fixes minimum astropy version in installation requirements. [#799]

2.4.0 (2022-11-16)#

New Features#

Other Changes and Additions#

  • The sigma clipping option in the image combiner now always uses the astropy sigma clipping function, and supports specifying the functions to use for estimating the center and deviation values as strings for common cases (which significantly improves performance). [#794]

  • The image combiner now allows the optional overwrite of the optional output FITS file. [#797]

Bug Fixes#

2.3.1 (2022-05-09)#

New Features#

Other Changes and Additions#

Bug Fixes#

  • In python 3.7 the version method from packaging must be imported directly. [#786]

2.3.0 (2021-12-21)#

Other Changes and Additions#

  • The rebin function has been more clearly marked with a deprecation milestone. It will be removed in v3. [#780]

Bug Fixes#

  • Fixes compatibility with astroscrappy version 1.1.0 and deprecates old keyword arguments no longer used by astroscrappy. [#777, #778]

2.2.0 (2021-05-24)#

New Features#

  • Image combination is faster for average and sum combine, and improves for all operations if the bottleneck package is installed. [#741]

  • Pixel-wise weighting can be done for sum and average combine. [#741]

Other Changes and Additions#

Bug Fixes#

  • When filtering an ImageFileCollection by keyword value, and not explicitly using a regex search pattern (regex_match=True), escape all special characters in the keyword value for a successful search. [#770]

  • Return mask and uncertainty from combine even if input images have no mask or uncertainty. [#775]

2.1.1 (2021-03-15)#

New Features#

  • Improve integration of ImageFileCollection with image combination and document that integration [#762]

Other Changes and Additions#

  • Add memory_profiler as a test requirement [#739]

  • Updated test suite to use absolute, not relative imports [#735]

Bug Fixes#

  • test_image_collection.py in the test suite no longer produces permanent files on disk and cleans up after itself. [#738]

  • Change Combiner to allow accepting either a list or a generator [#757]

  • ImageFileCollection now correctly returns an empty collection when an existing collection is filtered restrictively enough to remove all files. [#750]

  • Logging now preserves all of the arguments when the keyword argument names are not used. [#756]

2.1.0 (2019-12-24)#

New Features#

Other Changes and Additions#

  • Remove astropy_helpers from the package infrastructure, which also changes how the tests are run and how the documentation is built. [#717]

Bug Fixes#

  • Update units if gain is applied in cosmicray_lacosmic. [#716, #705]

2.0.1 (2019-09-05)#

New Features#

Other Changes and Additions#

Bug Fixes#

  • Move generation of sample directory of images to avoid importing pytest in user installation. [#699, #700]

2.0.0 (2019-09-02)#

New Features#

  • Allow initialization of ImageFileCollection from a list of files with no location set. [#374, #661, #680]

  • Allow identification of FITS files in ImageFileCollection based on content of the files instead of file name extension. [#620, #680]

  • Add option to use regular expression matching when filtering items in ImageFileCollection. [#480, #595, #682]

  • Added an option to disregard negative values passed to create_deviation and assume the error is represented by the read noise [#688]

  • Add filter method to ImageFileCollection that creates a new collection by filtering based on header keywords. [#596, #690]

Other Changes and Additions#

  • Dropped support for Python 2.x and Astropy 1.x.

  • Removed deprecated property summary_info of ImageFileCollection.

  • Improved handling of large flags in the bitfield module. [#610, #611]

  • Improved the performance of several ImageFileCollection methods. [#599]

  • Added auto_logging configuration paramenter [#622, #90]

  • Added support for .fz,.bz2, .Z and .zip file formats in ImageFileCollection. [#623, #644]

  • Modified weights function to also accept 1D array in Combiner. [#634, #670]

  • Added warning that transform_image does not apply the transformation to the WCS [#684]

  • When creating a new object in wcs_transform, WCS keywords in the header are removed so that they are only stored in the WCS object [#685]

  • Improved warning for negative values in the array passed to create_deviation [#688]

  • Removed support for initializing ImageFileCollection from a table instead of files. [#680]

  • More consistent typing of ImageFileCollection.summary when the collection is empty. [#601, #680]

Bug Fixes#

  • Function median_combine now correctly calculates the uncertainty for masked CCDData. [#608]

  • Function combine avoids keeping files open unnecessarily. [#629, #630]

  • Function combine more accurately estimates memory use when deciding how to chunk files. [#638, #642]

  • Raise ValueError error in subtract_dark for when the errors have different shapes [#674, #677]

  • Fix problem with column dtypes when initializing ImageFileCollection from a list of file names. [#662, #680]

1.3.0 (2017-11-1)#

New Features#

  • Add representation for ImageFileCollection. [#475, #515]

  • Added ext parameter and property to ImageFileCollection to specify the FITS extension. [#463]

  • Add keywords.deleter method to ImageFileCollection. [#474]

  • Added glob_include and glob_exclude parameter to ImageFileCollection. [#484]

  • Add bitfield_to_boolean_mask function to convert a bitfield to a boolean mask (following the numpy conventions). [#460]

  • Added gain_corrected option in ccd_process so that calibration files do not need to previously been gain corrected. [#491]

  • Add a new wcs_relax argument to CCDData.to_header() that is passed through to the WCS method of the same name to allow more flexible handing of headers with SIP distortion. [#501]

  • combine now accepts numpy.ndarray as the input img_list. [#493, #503]

  • Added sum option in method for combime. [#500, #508]

  • Add norm_value argument to flat_correct that allows the normalization of the flat frame to be manually specified. [#584, #577]

Other Changes and Additions#

  • removed ability to set unit of CCDData to None. [#451]

  • deprecated summary_info property of ImageFileCollection now raises a deprecation warning. [#486]

  • Logging will include the abbreviation even if the meta attribute of the processed CCDData isn’t a fits.Header. [#528]

  • The CCDData class and the functions fits_ccddata_reader and fits_ccddata_writer will be imported from astropy.nddata if astropy >= 2.0 is installed (instead of the one defined in ccdproc). [#528]

  • Building the documentation requires astropy >= 2.0. [#528]

  • When reading a CCDData from a file the WCS-related keywords are removed from the header. [#568]

  • The info_file argument for ImageFileCollection is now deprecated. [#585]

Bug Fixes#

  • ImageFileCollection now handles Headers with duplicated keywords (other than COMMENT and HISTORY) by ignoring all but the first. [#467]

  • The ccd method of ImageFileCollection will raise an NotImplementedError in case the parameter overwrite=True or clobber=True is used instead of silently ignoring the parameter. [#527]

  • The sort method of ImageFileCollection now requires an explicitly given keys argument. [#534]

  • Fixed a problem with CCDData.read when the extension wasn’t given and the primary HDU contained no data but another HDU did. In that case the header were not correctly combined. [#541]

  • Suppress errors during WCS creation in CCDData.read(). [#552]

  • The generator methods in ImageFileCollection now don’t leave open file handles in case the iterator wasn’t advanced or an exception was raised either inside the method itself or during the loop. [#553]

  • Allow non-string columns when filtering an ImageFileCollection with a string value. [#567]

1.2.0 (2016-12-13)#

ccdproc has now the following additional dependency:

  • scikit-image.

New Features#

  • Add an optional attribute named filenames to ImageFileCollection, so that users can pass a list of FITS files to the collection. [#374, #403]

  • Added block_replicate, block_reduce and block_average functions. [#402]

  • Added median_filter function. [#420]

  • combine now takes an additional combine_uncertainty_function argument which is passed as uncertainty_func parameter to Combiner.median_combine or Combiner.average_combine. [#416]

  • Added ccdmask function. [#414, #432]

Other Changes and Additions#

  • ccdprocs core functions now explicitly add HIERARCH cards. [#359, #399, #413]

  • combine now accepts a dtype argument which is passed to Combiner.__init__. [#391, #392]

  • Removed CaseInsensitiveOrderedDict because it is not used in the current code base. [#428]

Bug Fixes#

  • The default dtype of the combine-result doesn’t depend on the dtype of the first CCDData anymore. This also corrects the memory consumption calculation. [#391, #392]

  • ccd_process now copies the meta of the input when subtracting the master bias. [#404]

  • Fixed combine with CCDData objects using StdDevUncertainty as uncertainty. [#416, #424]

  • ccds generator from ImageFileCollection now uses the full path to the file when calling fits_ccddata_reader. [#421 #422]

1.1.0 (2016-08-01)#

New Features#

  • Add an additional combination method, clip_extrema, that drops the highest and/or lowest pixels in an image stack. [#356, #358]

Other Changes and Additions#

  • cosmicray_lacosmic default satlevel changed from 65536 to 65535. [#347]

  • Auto-identify files with extension fts as FITS files. [#355, #364]

  • Raise more explicit exception if unit of uncalibrated image and master do not match in subtract_bias or subtract_dark. [#361, #366]

  • Updated the Combiner class so that it could process images with >2 dimensions. [#340, #375]

Bug Fixes#

  • Combiner creates plain array uncertainties when using``average_combine`` or median_combine. [#351]

  • flat_correct does not properly scale uncertainty in the flat. [#345, #363]

  • Error message in weights setter fixed. [#376]

1.0.1 (2016-03-15)#

The 1.0.1 release was a release to fix some minor packaging issues.

1.0.0 (2016-03-15)#

General#

  • ccdproc has now the following requirements:

    • Python 2.7 or 3.4 or later.

    • astropy 1.0 or later

    • numpy 1.9 or later

    • scipy

    • astroscrappy

    • reproject

New Features#

  • Add a WCS setter for CCDData. [#256]

  • Allow user to set the function used for uncertainty calculation in average_combine and median_combine. [#258]

  • Add a new keyword to ImageFileCollection.files_filtered to return the full path to a file [#275]

  • Added ccd_process for handling multiple steps. [#211]

  • CCDData.write now writes multi-extension-FITS files. The mask and uncertainty are saved as extensions if these attributes were set. The name of the extensions can be altered with the parameters hdu_mask (default extension name 'MASK') and hdu_uncertainty (default 'UNCERT'). CCDData.read can read these files and has the same optional parameters. [#302]

Other Changes and Additions#

  • Issue warning if there are no FITS images in an ImageFileCollection. [#246]

  • The overscan_axis argument in subtract_overscan can now be set to None, to let subtract_overscan provide a best guess for the axis. [#263]

  • Add support for wildcard and reversed FITS style slicing. [#265]

  • When reading a FITS file with CCDData.read, if no data exists in the primary hdu, the resultant header object is a combination of the header information in the primary hdu and the first hdu with data. [#271]

  • Changed cosmicray_lacosmic to use astroscrappy for cleaning cosmic rays. [#272]

  • CCDData arithmetic with number/Quantity now preserves any existing WCS. [#278]

  • Update astropy_helpers to 1.1.1. [#287]

  • Drop support for Python 2.6. [#300]

  • The add_keyword parameter now has a default of True, to be more explicit. [#310]

  • Return name of file instead of full path in ImageFileCollection generators. [#315]

Bug Fixes#

  • Adding/Subtracting a CCDData instance with a Quantity with a different unit produced wrong results. [#291]

  • The uncertainty resulting when combining CCDData will be divided by the square root of the number of combined pixel [#309]

  • Improve documentation for read/write methods on CCDData [#320]

  • Add correct path separator when returning full path from ImageFileCollection.files_filtered. [#325]

0.3.3 (2015-10-24)#

New Features#

  • add a sort method to ImageFileCollection [#274]

Other Changes and Additions#

  • Opt in to new container-based builds on travis. [#227]

  • Update astropy_helpers to 1.0.5. [#245]

Bug Fixes#

  • Ensure that creating a WCS from a header that contains list-like keywords (e.g. BLANK or HISTORY) succeeds. [#229, #231]

0.3.2 (never released)#

There was no 0.3.2 release because of a packaging error.

0.3.1 (2015-05-12)#

New Features#

  • Add CCDData generator for ImageCollection [#405]

Other Changes and Additions#

  • Add extensive tests to ensure ccdproc functions do not modify the input data. [#208]

  • Remove red-box warning about API stability from docs. [#210]

  • Support astropy 1.0.5, which made changes to NDData. [#242]

Bug Fixes#

  • Make subtract_overscan act on a copy of the input data. [#206]

  • Overscan subtraction failed on non-square images if the overscan axis was the first index, 0. [#240, #244]

0.3.0 (2015-03-17)#

New Features#

  • When reading in a FITS file, the extension to be used can be specified. If it is not and there is no data in the primary extension, the first extension with data will be used.

  • Set wcs attribute when reading from a FITS file that contains WCS keywords and write WCS keywords to header when converting to an HDU. [#195]

Other Changes and Additions#

  • Updated CCDData to use the new version of NDDATA in astropy v1.0. This breaks backward compatibility with earlier versions of astropy.

Bug Fixes#

  • Ensure dtype of combined images matches the dtype of the Combiner object. [#189]

0.2.2 (2014-11-05)#

New Features#

Other Changes and Additions#

  • Added Changes to the docs [#183]

Bug Fixes#

  • Allow the unit string “adu” to be upper or lower case in a FITS header [#182]

0.2.1 (2014-09-09)#

New Features#

  • Add a unit directly from BUNIT if it is available in the FITS header [#169]

Other Changes and Additions#

  • Relaxed the requirements on what the metadata must be. It can be anything dict-like, e.g. an astropy.io.fits.Header, a python dict, an OrderedDict or some custom object created by the user. [#167]

Bug Fixes#

  • Fixed a new-style formating issue in the logging [#170]

0.2 (2014-07-28)#

  • Initial release.