SpectrumCollectionnow allows setting scalar redshift or radial velocity, analagously toSpectrum. [#1332]
- Added new SDSS-V
Spectrum1DandSpectrumListdefault loaders forastraStarandastraVisitmodel spectra datatypes. [#1325, #1330]
- Fix units related issue when inverting spectral regions. [#1324]
- Updated Sphinx configuration to use astropy-unified theme for documentation. [#1328]
- Added
CompoundSpectralRegionclass to enable combiningSpectralRegionwith operators. [#1282] - Using
Spectrum.shift_spectrum_to()will now also update the WCS when applying the redshift or radial velocity if a FITS WCS is present. A GWCS will be replaced with the original stored in an_original_wcsattribute. [#1287]
- Fix an indexing bug when passing a region to analysis width functions when a mask is present. [#1280]
- Doing arithmetic with
Spectrumobjects no longer improperly redshifts the spectral axis in some cases. [#1287] - Fix bug due to incompatibility with the __pow__ method inherited from NDCube. [#1291]
- Fixed bugs in uncertainty propagation for smoothing and flux conserving resampler. [#1305]
- Bumped minimum supported GWCS version to 0.24. [#1286]
- Updated documentation about uncertainties and air-to-vac wavelength conversion. [#1299]
- Fixed misspellings of Greisen (from "Griesen") in air-to-vac wavelength conversion citations. Note that this also deprecates the "griesen2006" method option and changes it to "greisen2006". [#1312, #1315]
- Add velocity region support and ability to preserve WCS for single regions in spectral extraction. [#1263, #1276]
- Add appropriate axes_names to resulting GWCS when a
Spectrumis created with a spectral axis specified and no WCS, based on the spectral axis units. [#1264] - Fix spectra resulting from new JWST WFSS format having MaskedQuantity spectral_axis. [#1266]
- Dropped support for python 3.10 and bumped the minimum required version of Astropy to 7.0. [#1267]
- Add new
flux_colkeyword argument to JWST x1d reader to override flux column auto-detected from source type column (point vs surface brightness). [#1244] - The readers can now read IRAF MULTISPEC files with linear and log-linear wavelength solutions; at the same time the IRAF equispec format gains the ability to read log-linear wavelength solutions. [#1254]
- Fixed/updated SDSS-V mwm data loader to account for a subset of targets with bad datasums. [#1253]
- Updated the JWST data readers to accomodate new WFSS file formats
with
SpectrumList.read(). [#1252]
- Spectral axis can now be any axis, rather than being forced to be last. See docs for more details. [#1033, #1226]
- Spectrum now properly handles GWCS input for wcs attribute. [#1074]
- JWST reader no longer transposes the input data cube for 3D data and retains full GWCS information (including spatial). [#1074]
- Spectrum1D renamed to Spectrum. [#1126]
- Initializing a
Spectrumwith only a spectral axis (not full WCS) will now result in a GWCS matching the dimensionality of the flux array, rather than a 1D spectral GWCS in all cases. [#1211, #1222] - Spectrum arithmetic now checks whether the spectral axes of the two operand
Spectrumobjects are equal, and fails if they are not. [#1211] - Added documentation about transitioning from 1.x to 2.x. [#1226]
- Made tabular-fits identifier more strict for which kinds of JWST data to exclude [#1234]
- Fixed loaders for HST/STIS. Added an "HST/STIS multi" reader for use with
SpectrumCollectionto read multi-extension and/or multi-order echelle datasets. [#1233]
- Warn about use of
spectral_axis_index(new Spectrum1D kwarg for 2.0) in 1.x. [#1238]
- Switch to using an alias rather than a subclass for the temporary 1.x access
to the new 2.x class name (
Spectrum). [#1236]
- Fixed loaders for IRAF-encoded non-linear Chebychev + Legendre wavelength solutions that were imposing integer-valued domain limits. [#1199]
- Fixed loaders for SDSS APOGEE not correctly identifying the format [#1217]
- Fixed template comparison returning empty list of chi2 values in some cases. [#1228]
- Added
Spectrumclass wrapper aroundSpectrum1Dto ease transition to new class name in 2.0. [#1229, #1230] - Removed redshift and radial velocity setters in
Spectrum1Dthat have been deprecated since 1.8. [#1229] - Added documentation about upcoming changes in specutils 2.0. [#1231]
- Fixed
mwmVisitSDSS-VSpectrum1DandSpectrumListdefault loader being unable to load files containing only BOSS instrument spectra. [#1185] - Fixed automatic format detection for SDSS-V
SpectrumListdefault loaders. [#1185] - Fixed
SplineInterpolatedResamplerwhen input and output spectral axes are different physical types, e.g. wavelength and velocity. [#1190]
- "Multi" loaders have been removed from SDSS-V
SpectrumListdefault loaders. [#1185]
- New
Spectrum1D.with_spectral_axis_and_flux_unitsmethod to convert both spectral axis and flux units at the same time. [#1184]
- Fixed
Spectrum1D.with_flux_unit()not converting uncertainty along with flux unit. [#1181] - Fixed extracting a spectral region when one of spectrum/region is in wavelength and the other is in frequency units. [#1187]
- Fixed
mwmVisitSDSS-VSpectrum1DandSpectrumListdefault loader being unable to load files containing only BOSS instrument spectra. [#1185] - Fixed automatic format detection for SDSS-V
SpectrumListdefault loaders. [#1185]
- Replaced
LevMarLSQFitterwithTRFLSQFitteras the former is no longer recommended byastropy. [#1180] - "Multi" loaders have been removed from SDSS-V
SpectrumListdefault loaders. [#1185]
- Fixed specifying a single value for
windowinanalysis.fit_lines. [#1164]
- Dropped support for python 3.9. [#1176]
utils.wcs_utils.refraction_index(and thusair_to_vacandvac_to_air) now defaults toMorton2000as the method instead ofGriesen2006. [#1169]
- Arithmetic operations on
Spectrum1Dobjects now preserve spectral axis values that were updated by setting redshift or radial velocity. [#1158] - Ensure supported dtype is passed to
medfiltduring smoothing. [#1156] - Adjusted copy semantics for numpy 2 compatibility. [#1145]
- Fixed moment 0 calculation to sum flux*dx (rather than flux) to match
line_flux. [#1141]
- Changed the
tabular-fitsreader/writer to round-trip the header, by default in the primary HDU. The reader now reads the primary header intometa['header']; the old behaviour of reading the header from the data extension can be restored by setting the optionstore_data_header=True. The writer is taking a corresponding option for savingmeta['header']to either primary or data extension headers. [#1113] - Improved documentation for readers/writers. [#1152, #1157]
- Implemented
SpectralRegion.write()andSpectralRegion.read()to round-trip spectral regions to/from ECSV files viaastropy.table.QTable. [#1133]
new_flux_unitchanged towith_flux_unitto match spectral version, updated docstring to reflect actual behavior. [#1124]- Compatibility with numpy 2.0 and astropy 6.1. [#1130]
- Added SDSS-V file format readers. [#1107]
- Switched from using
numpy.correlatetoscipy.signal.correlateintemplate_correlateand enabled passing through themethodargument. [#1114] - Added DESI file format readers. [#1116]
- Added
truncateoption for resampler and template correlation extrapolation treatment. [#1121]
- SDSS reader now properly exposes the
spPlate_identifyandspPlate_loaderfunctions. [#1097] - Masks now round-trip through tabular-fits reader/write. [#1104]
template_correlateno longer errors when used on aSpectrum1Dthat lacks anuncertaintyarray. [#1118]with_spectral_unithas been changed towith_spectral_axis_unitand actually works now. [#1119]- Template correlation functions now truncate to overlapping region to avoid NaNs in normalization when spectrum and template have non-overlapping regions. [#1121]
- Fixed numpy error when printing a
Spectrum1Dobject. [#1123]
- Made a couple small updates to developer docs. [#1110, #1112]
- Updated the format of
Spectrum1D.__str__andSpectrum1D.__repr__. [#1123]
- Registering a
SpectrumListreader for a data loader is now optional. [#1068]
- Fixed SDSS-I/II spSpec units. [#1066]
- Addressed compatibility with ASDF 3.0 for JWST data. [#1079]
- Corrected
velocity_conventionoptions in Spectrum1D docstring. [#1088]
wcs1d-fitsloader now reads and writes boolean masks. [#1051]
- Reimplementation of FluxConservingResampler. It is now faster and yields more accurate results. [#1060]
- Fixed uncertainty calculations in centroid and gaussian width functions, also added an option
to use an
astropy.uncertaintydistribution instead of the analytic solution. [#1057]
- Drastically improved performance of region extraction. [#1048]
- When creating a Spectrum1D object, it is enforced that the spectral axis is sorted and either strictly increasing or decreasing. [#1061]
wcs1d-fitsloader now reads and writes celestial components of of multi-dimensional WCS, and handlesmaskanduncertaintyattributes. [#1009]- Added support for reading from files with flux in counts. [#1018]
- Fixed
SpectralAxis.with_observer_stationary_relative_toto actually return the updated spectral axis. [#992] - Fixed region extraction for axes/regions in units of
u.pix. [#1001] tabular-fitswriter now properly converts uncertainties toStdDevUncertaintyif needed. [#1027]- Fix bug in
fit_lineswhich gave unexpected outputs from theget_fit_infoandignore_unitskeyword arguments. [#1030] - Fix SNR calculations with both masks and regions. [#1044]
- Added some basic documentation for
Spectrum1D.write. [#1017] - JWST s2d and s3d readers now requires the optional dependency,
stdatamodels, which user has to install separately. [#1038] - ASDF tag for Spectrum1D is now compatible with ASDF v3.
As a result, minversion of
asdfhas been bumped to 2.14. Redundant ASDF schema forSpectralCoordis removed. It also now supportsmaskserialization. [#1042, #1053] - JWST X1D reader will no longer raise a
UnitWarningfor surface brightness error. [#1050]
- Add and subtract operations on Spectrum1D now allow for other operand's class to handle the arithmetic if that class has special handling. [#988]
- Fix bug in fitting with weights if weights argument is set to 'unc'. [#979]
- Fix bug in JWST reader which caused multi-extension files to load only the primary HDU [#982]
- Implemented conversion to expected uncertainty type in a few functions that were still just assuming the uncertainty was the correct type. [#984]
- Bumped astropy minimum version to 5.1. [#984]
- Arithmetic with constants and Spectrum1D now works in either order. [#964]
- Fixed uncertainty propagation in FluxConservingResampler. [#976]
- Implemented uncertainty propagation for analysis functions. [#938, #939, #961, #968]
- Model fitting with
fit_linesnow returns uncertainties from the underlying scipy fitter by default. [#962]
- Fixed a bug with moment map orders greater than 1 not being able to handle cubes with non-square spatial dimensions. [#970]
- Added a workaround for reading JWST IFUs with incorrect GWCS. [#973]
- The Spectrum1D redshift and radial_velocity attribute setters were deprecated in favor of the more explicit set_redshift_to, shift_spectrum_to, and set_radial_velocity_to methods. [#946, #943]
estimate_line_parametersnow calculates estimates based on the selected region, rather than the entire spectrum. [#962]
- Fixed
spectral_slabcrashing whenspectral_axishas unit of pixels and the bounds are also defined in the unit of pixels. [#926] - Fixed resulting
spectral_axiscontaining NaN when a cube is passed intoSpectrum1Dwithout WCS nor spectral axis and the spatial-spatial dimension is smaller than spectral dimension. [#926] - Fixed WCS not accurately reflecting the updated spectral axis after slicing a
Spectrum1D. [#918]
- Logger usage is removed. Warnings now issued using Python
warningsmodule. This enables more granular warning control for downstream packages. [#922]
- Add collapse methods to Spectrum1D. [#904, #906]
- SpectralRegion and Spectrum1D now allow descending (in wavelength space) as well as ascending spectral values. [#911]
- Convolution-based smoothing will now apply a 1D kernel to multi-dimensional fluxes by convolving along the spectral axis only, rather than raising an error. [#885]
template_comparisonnow handlesastropy.nddata.Varianceandastropy.nddata.InverseVarianceuncertainties instead of assuming the uncertainty is standard deviation. [#899]
- Speed up JWST s3d loader and reduce memory usage. [#874]
SpectralRegioncan now handle pixels. [#886]- Fix bug where
template_comparisonwould return the wrong chi2 value. [#872]
fit_linesnow makes use of unit support inastropy.modeling. [#891]Spectrum1D.with_spectral_unitsnow attempts to fall back on thespectral_axisunits if units could not be retrieved from the WCS. [#892]ndcubepackage pin updated to released version (2.0). [#897]- Minor changes for astropy 5.0 compatibility. [#895]
- Fix JWST s3d loader. [#866]
- Allow overriding existing astropy registry elements. [#861]
Spectrum1Dwill now swap the spectral axis with the last axis on initialization if it can be identified from the WCS and is not last, rather than erroring. [#654, #822]
- Change loader priorities so survey loaders always override generic ones. [#860]
- Handle "FLUX_ERROR" header keyword in addition to "ERROR" in JWST loader. [#856]
Spectrum1Dnow subclassesNDCubeinstead ofNDDataRef. [#754, #822, #850]
- Add
SpectrumListloader for set of JWST _x1d files. [#838]
- Handle new
astropy.units.PhysicalTypeclass added in astropy 4.3. [#833] - Handle case of WCS with None values in
world_axis_physical_typeswhen initializing Spectrum1D. [#839] - Fix bug in apStar loader. [#839]
- Improve continuum flux calculation in
equivalent_width. [#843]
- Added ability to slice
Spectrum1Dwith spectral axis values. [#790] - Added ability to replace a section of a spectrum with a spline or model fit. [#782]
- Fix infinite recursion when unpickling a
QuantityModel. [#823] - Changed positional to keyword arguments in
fit_continuum. [#806]
- Fix inaccuracy about custom loading in docs. [#819]
- Use non-root logger to prevent duplicate messages. [#810]
- Removed unused astropy config code. [#805]
- Add support for reading IRAF MULTISPEC format with non-linear 2D WCS into
SpectrumCollectionto default_loaders. [#708] SpectralRegionobjects can now be created from theQTableobject returned from the line finding rountines. [#759]- Include new 6dFGS loaders. [#734]
- Include new OzDES loaders. [#764]
- Include new GAMA survey loaders. [#765]
- Include new GALAH loaders. [#766]
- Include new WiggleZ loaders. [#767]
- Include new 2dF/AAOmega loaders. [#768]
- Add loader to handle IRAF MULTISPEC non-linear 2D WCS. [#708]
- Add ability to extract minimum bounding regions of
SpectralRegionobjects. [#755] - Implement new moment analysis function for specutils objects. [#758]
- Add new spectral slab extraction functionality. [#753]
- Include new loaders for AAT and other Australian surveys. [#719]
- Improve docstrings and intialization of
SpectralRegionobjects. [#770]
- Fix
extract_regionbehavior and slicing forSpectrum1Dobjects that have multi-dimensional flux arrays. Extracting a region that extends beyond the limits of the data no longer drops the last data point in the returned spectrum. [#724] - Fixes to the jwst loaders. [#759]
- Fix handling of
SpectralCollectionobjects in moment calculations. [#781] - Fix issue with non-loadable x1d files. [#775]
- Fix WCS handling in SDSS loaders. [#738]
- Fix the property setters for radial velocity and redshift. [#722]
- Fix line test errors and include python 3.9 in tests. [#751]
- Fix smoothing functionality dropping spectrum meta information. [#732]
- Fix region extraction for
Spectrum1Dobjects with multi-dimensional fluxes. [#724]
- Update SDSS spectrum documentation examples. [#778]
- Include new documentation on working with
SpectralCubeobjects. [#726, #784] - Add documentation on spectral cube related functionality. [#783]
- Improved error messages when creating
SpectralRegionobjects. [#759] - Update documentation favicons and ensure color consistency. [#780]
- Remove fallback
SpectralCoordcode and rely on upstream. [#786] - Move remaining loaders to use utility functions for parsing files. [#718]
- Remove unnecessary data reshaping in tabular fits writer. [#730]
- Remove astropy helpers and CI helpers dependencies. [#562]
- Added writer to
wcs1d-fitsand support for multi-D flux arrays with 1D WCS (identicalspectral_axisscale). [#632] - Implement
SpectralCoordforSpectrumCollectionobjects. [#619] - Default loaders work with fits file-like objects. [#637]
- Implement bin edge support on
SpectralCoordobjects usingSpectralAxissubclass. [#645] - Implement new 6dFGS loader. [#608]
- Implement uncertainty handling for
line_flux. [#669] - Implement new 2SLAQ-LRG loader. [#633]
- Implement new 2dFGRS loader. [#695]
- Default loaders now include WCS 1D (with multi-dimensional flux handling) writer. [#632]
- Allow continuum fitting over multiple windows. [#698]
- Have NaN-masked inputs automatically update the
maskappropriately. [#699]
- Fixed
tabular-fitshandling of 1D+2D spectra without WCS; identification and parsing of metadata and units forapogeeandmusclesimproved; enabled loading from file-like objects. [#573] - Fix ASDF handling of
SpectralCoord. [#642] - Preserve flux unit in
resample1dfor older versions of numpy. [#649] - Fix setting the doppler values on
SpectralCoordinstances. [#657] - Properly handle malformed distances in
SkyCoordinstances. [#663] - Restrict spectral equivalencies to contexts where it is required. [#573]
- Fix
from_centerdescending spectral axis handling. [#656] - Fix factor of two error in
from_centermethod ofSpectralRegionobject. [#710] - Fix handling of multi-dimensional mask slicing. [#704]
- Fix identifier for JWST 1D loader. [#715]
- Display supported loaders in specutils documentation. [#675]
- Clarify inter-relation of specutils objects in relevant docstrings. [#654]
- Remove pytest runtime dependency. [#603]
- Change implementation of
.quantityto.viewinSpectralCoord. [#614] - Ensure underlying references point to
SpectralCoordobject. [#640] - Deprecate
spectral_axis_unitproperty. [#618] - Backport
SpectralCoordfrom astropy core for versions <4.1. [#674] - Improve SDSS loaders and improve handling of extensions. [#667]
- Remove spectral cube testing utilities. [#683]
- Change local specutils directory creation behavior. [#691]
- Ensure existing manipulation and analysis functions use
maskattribute. [#670] - Improve mask handling in analysis functions. [#701]
- Implement
SpectralCoordobject. [#524] - Implement cross-correlation for finding redshift/radial velocity. [#544]
- Improve FITS file identification in default_loaders. [#545]
- Support
len()forSpectrumCollectionobjects. [#575] - Improved 1D JWST loader and allow parsing into an
SpectrumCollectionobject. [#579] - Implemented 2D and 3D data loaders for JWST products. [#595]
- Include documentation on how to use dust_extinction in specutils. [#594]
- Include example of spectrum shifting in docs. [#600]
- Add new default excise_regions exciser function and improve subregion handling. [#609]
- Implement use of
SpectralCoordinSpectrum1Dobjects. [#610]
- Fix stacking and unit treatment in
SpectrumCollection.from_spectra. [#578] - Fix spectral axis unit retrieval. [#581]
- Fix bug in subspectrum fitting. [#586]
- Fix uncertainty to weight conversion to match astropy assumptions. [#594]
- Fix warnings and log messages from ASDF serialization tests. [#597]
- Remove spectral_resolution stub from Spectrum1D. [#606]
- Make specutils compatible with Astropy 4.0 (breaking change). [#462]
- Remove all wcs adapter code and rely on APE14 implementation. [#462]
- Address
MexicanHat1Dname change in documentation. [#564]
- Resamplers now include
extrapolation_treatmentargument. [#537] - Template fitting now returns an array of chi squared values for each template. [#551]
- Masks now supported in fitting operations. [#519]
- Resamplers now support resamping beyond the edge of a spectrum using. [#537]
- New template fitting for redshift finding. [#527]
- New continuum checker to discern whether continuum is normalized or subtracted. [#538]
- Include documentation on how to achieve splicing using specutils. [#536]
- Include function to calculate masks based on S/N thresholding. [#509]
- Include new regions regression tests. [#345]
- Fix fitting documentation code block test. [#478]
- Fix Apogee loader to incorporate spectral axis keyword argument. [#560]
- Fix tabular fits writer and include new regression test. [#539]
- Fix dispersion attribute bug in
Spectrum1Dobjects. [#530] - Correctly label regression tests that require remote data. [#525]
- Switch to using
gaussian_sigma_widthforGaussian1Dfitting estimator. [#434] - Update documentation side bar to include page listing. [#556]
- New documentation on
spectrum_mixin. [#532] - Model names are now preserved in the
fit_linesoperation. [#526] - Clearer error messages for incompatible units in line fitting. [#520]
- Include travis stages in test matrix. [#515]
- New redshift and radial velocity storage on Spectrum1D object.
- Spectral template matching including resampling.
- Error propagation in convolution smoothing.
- Sub-pixel precision for fwhm calculations.
- New spectral resampling functions.
- New IRAF data loaders.
- New FWZI calculation.
- Stricter intiailizer for
Spectrum1D. - Correct handling of weights in line fitting.
- Array size checking in Spectrum1D objects.
- Fix for continuum fitting on pixel-axis dispersions.
- Fix comparison of FITSWCS objects in arithmetic operations.
- Fix example documentation when run in python interpreter.
- Bugfixes for astropy helpers, pep8 syntax checking, and plotting in docs [#416,#417,#419]
- All automatically generated
SpectrumListloaders now have identifiers. [#440] SpectralRange.from_centerparameters corrected after change to SpectralRange interface. [#433]
- Improve explanation on creating spectrum continua. [#420]
- Wrap IO identifier functions to ensure they always return True or False and log any errors. [#404]
- Fixed a bug in using spectral regions that have been inverted. [#403]
- Use the pytest-remotedata plugin to control tests that require access to remote data. [#401,#408]
- This was the first release of specutils executing the [APE14](https://github.com/astropy/astropy-APEs/blob/main/APE14.rst) plan (i.e. the "new" specutils) and therefore intended for broad use.