Releases: pypeit/PypeIt
Version 1.17.1
Patch release that:
- Bumped to
numpy>=1.26
- Lifts restriction from
python<3.13
topython<3.14
Version 1.17.0
Installation Changes
- Significant expansion of PypeIt's use of the cache system; see
:ref:data_installation
. Important changes include that most cached
files are now version dependent. When upgrading to new versions of
PypeIt, users should delete their cache and start fresh.
Dependency Changes
- Support added for numpy>=2.0.0; numpy<=2.0.0 should still be supported
- Deprecated support for python 3.10
- General update to dependencies to be roughly consistent with release
of python 3.11
Functionality/Performance Improvements and Additions
- Added the
max_overlap
parameter, which limits the set of new order
traces added, to compensate for orders missed during automated
edge-tracing, to those that have less than a given fractional overlap
with adjacent orders. - Added the
order_fitrej
andorder_outlier
parameters used to
set the sigma-clipping threshold used when fitting Legendre functions
to the order widths and gaps. - Added the possibility to decide if the extracted standard star
spectrum should be used as a crutch for tracing the object in the
science frame (before it was done as default). This is done by
setting the parameteruse_std_trace
in FindObjPar. - Now PypeIt can handle the case where "Standard star trace does not
match the number of orders in the echelle data" both inrun_pypeit
and inpypeit_coadd_1dspec
. - Added the functionality to use slitless flats to create pixelflats.
Note: new frametypeslitless_pixflat
is added to the PypeIt
frametype list. - The created pixelflats are stored in the reduction directory and in
the PypeIt cache directorydata/pixelflats
. - Added a functionality that allows, when multiple frames are combined,
to scale each frame to have the same mean value before combining. To
use this functionality, the new parameterscale_mean
should be set
toTrue
. - Added the possibility to use the parameter
fwhm_fromlines
also for
the tilts calibration.
Instrument-specific Updates
-
Improved LRIS frame typing, including the typing of slitless flats and
sky flats. -
Improved HIRES frame typing and configuration setup.
-
Added support for Keck/KCWI BH3 grating configuration.
-
Updated the requirements of a spectral flip for KCWI (blue) data. If
all amplifiers are used, the data will not be flipped in the spectral
direction. Otherwise, the data will be flipped. -
Added support for the (decommissioned) AAT/UHRF instrument
-
Updated X-Shooter detector gain and read noise to come from header,
and updated plate scales to the most recent values from the manual.
Detailed changes are:-
NIR arm:
- Platescale updated from 0.197 to 0.245 arcsec/pixel
- Dark current updated from 0. to 72. e-/pixel/hr
- Gain updated from 2.12 to 2.29 e-/DN
-
VIS arm:
- Platescale updated from an order-dependent value, to being
0.154 arcsec/pixel for all orders
- Platescale updated from an order-dependent value, to being
-
UVB arm:
- Platescale updated from an order-dependent value, to being
0.164 arcsec/pixel for all orders
- Platescale updated from an order-dependent value, to being
-
-
Add new P200/DBSP reid_arxiv template for 1200/7100 with D55 dichroic
-
Add B480 as a supported option for Gemini-S/GMOS
Script Changes
- Modifications to the cache-related :ref:
install_scripts
to
accommodate expansion of and changes to the cache system. - Added
pypeit_clean_cache
script to facilitate both viewing and
removing files in the cache. - Changed the name of the multi-dimensional specdata to
specdata_multi
inpypeit_identify
and improved the robustness
of the saving dialog when calibrating single trace spectra. - Fixed a read-in error for the high resolution A0V PHOENIX model.
- A new script, called
pypeit_extract_datacube
, allows 1D spectra of
point sources to be extracted from datacubes. - The sensitivity function is now generated outside of datacube
generation. - The
grating_corr
column is now used to select the correct grating
correction file for each spec2d file when generating the datacube. - Added the
--extr
parameter in thepypeit_sensfunc
script (also
as aSensFuncPar
) to allow the user to specify the extraction
method to use when computing the sensitivity function (before only
optimal extraction was used). - Added
pypeit_show_pixflat
script to inspect the (slitless) pixel
flat generated during the reduction and stored indata/pixelflats
. - Added
pypeit_chk_flexure
script to check both spatial and spectral
flexure applied to the reduced data. - Treatment of file names is now more formal. Compression signatures
are now considered, and filename matching is now more strict. - Removed
--spec_samp_fact
and--spat_samp_fact
command line
options frompypeit_coadd_2d
. These options are now parameters in
Coadd2dPar
. pypeit_show_2dspec
now shows the first available detector in the
2D spectrum by default. The user can specify the detector to show with
the--det
option.- Added
--removetrace
command line option topypeit_ql
to not
show the object trace when displaying the 2D spectrum. - Change the default value for
--skip_display
inpypeit_ql
to
True
.
Datamodel Changes
- Adjusted spec1d datamodel to enable use with UVES_popler GUI tool
Under-the-hood Improvements
- Introduced :class:
~pypeit.pypeitdata.PypeItDataPaths
to handle all
interactions with thepypeit/data
directory, which provides a
unified interface for accessing on-disk and cached files. - When adding missing orders, the full syncing procedure is no longer
performed. The code now only checks that the edges are still synced
after the missed orders are added. - When detecting overlapping orders/slits, the code now forces each edge
used to have been directly detected; i.e., if an edge is inserted, the
fact that the resulting slit is abnormally short should not trigger
the overlap detection. - Improved the QA plot resulting from fitting order widths and gaps as a
function of spatial position. - Updated general raw image reader so that it correctly accounts for
spectrographs that read the data and overscan sections directly from
the file headers.
Bug Fixes
- Fix "The system cannot find the file specified" errors when installing
on Windows. - Fixed a fault caused when all frames in a pypeit file are identified
as being part ofall
calibration groups. - Allow for empty 2D wavecal solution in HDU extension of WaveCalib file
- Fixed a bug in the ginga display function, when the user doesn't
provide thetrc_name
argument. - Fix a MAJOR BUT SUBTLE bug in the use of
numpy.argsort
. When
usingnumpy.argsort
the parameterkind='stable'
should be used
to ensure that a sorting algorithm more robust than "quicksort" is
used. - Fix error "ValueError: setting an array element with a sequence. The
requested array has an inhomogeneous shape after 1 dimensions..."
occurring when unpacking theSpecObj
spectrum but having an
attribute of theSpecObj
object that isNone
. - Fixed a hidden bug that was causing the spatial flexure to fail. The
bug was in theSlitTraceBitMask
class, where the function
exclude_for_flexure()
was not returning the'BOXSLIT'
flag. - Fix a bug in
pypeit_coadd_2d
related to how the binning was taken
into account in the mask definition, and in the calculation of the
offset between frames. - Fix bug when trying to open mosaic data from previous versions;
version checking flag was not being propagated.
Version 1.16.0
Dependency Changes
-
PypeIt now only supports python versions >=3.10, numpy>=1.23, and ginga>=5.1.0
-
sphinx-rtd-theme updated to 2.0, along with relevant dependencies
Functionality/Performance Improvements and Additions
-
Allow the selection of a secondary filter option for all spectrographs that
need it; see newfilter2
parameter. -
When dealing with
bkg_redux
reduction (i.e., A-B), a sky model (called
bkg_redux_skymodel
) is generated using the A frame, while the existing
skymodel
is generated using the A-B frame. This allows to have an actual 1D
extracted sky spectrum and to perform the flexure correction forbkg_redux
reduction. -
Various improvements in the flexure correction and added the possibility to
use a modeled archive sky spectrum generated with
pypeit.wavemodel.nearIR_modelsky()
to perform the flexure correction. -
Updated the list of available CALSPEC standard star with the latest version
from the CALSPEC website.
Instrument-specific Updates
-
Improvements for SOAR/Goodman
- Added
WAVMODE
header keyword toconfiguration keys
and
raw header cards
.
- Added
-
Added example of improved wavelength solution for GEMINI/GMOS
-
Introduces reduction pipeline for high-resolution modes of Keck/NIRSPEC
-
Expanded the template for
shane_kast_red
and the 1200/5000 grating -
Fixed and improved the wavelength template
magellan_fire_long
-
Updated Gemini/GMOS-S with the new detector parameters for the Hamamatsu CCDs
replaced on 2023-12-14
Script Changes
- When interactively fitting a single peak with the
pypeit_identify
script
(i.e. using thei
command), line centroids can now be both updated and added
interactively.
Datamodel Changes
Spec2DObj
now has an additional image, calledbkg_redux_skymodel
, which is
the "actual" sky model in the case ofbkg_redux
reduction (i.e., dithered
observations). This image is not generated ifbkg_redux
is False. In any
case, theskymodel
is always generated.
Bug Fixes
-
The subpixel algorithm used to resample datacubes that are generated by
pypeit_coadd_datacube
produced error cubes that were not properly
propagating the noise. The error cubes of the NGP algorithm were unaffected.
The error cubes are now regularly inspected with vet tests to ensure the error
cubes are reliable. -
Fix a bug (introduced in a recent PR) that was generating an error if less
than 2 spec1d files were used withpypeit_coadd_1dspec
. Now the script can
be run with only one file (as it was before). -
Allow
spec_flex_shift()
to take as input either the name of an archive sky
spectrum or directly a sky spectrum. This fixes a bug in the flexure
correction for SlicerIFU. -
The
--show
option of thepypeit_coadd_1dspec
script was not properly
displaying the x-axis of the plot. Both the top and bottom panels now scale
together. -
Fix a bug in
pypeit_sensfunc
that was causing the script to crash because
par['fluxcalib']
was not being passed tosensfunc.SensFunc.get_instance()
.
Version 1.15.0
Installation Changes
- PypeIt will no longer be available through
conda-forge
and must be installed viapip
from PyPI. Users may still useconda
for management of PypeIt's virtual environment.
Dependency Changes
- Removes use of deprecated
pkg_resources
. - Require version
>=1.12
forspecutils
. - Add
psutil
as a dependency for [dev] installs. - Add
pytest-qt
as a dependency for [dev] installs. - Require version
>=0.3.1
forlinetools
Functionality/Performance Improvements and Additions
- Started the development of instrument-specific scattered light removal. In this release, we only model KCWI/KCRM scattered light.
- Turned on usage of the use_2dmodel_mask parameter for echelle spectrographs
- Added support for Keck/KCRM RL data reduction.
- Allow one to turn off reinit of reduce_bpm in global_skysub and made this the default for the final pass
- Allow pypeit Spectrum1D loaders to circumvent the requirement that reduced spectrum have monotonically increasing wavelength data. Non-monotonic wavelength data usually indicate a problem with the data reduction, but this at least lets users ingest the spectrum.
- Add a sensible error message to the pypeit Spectrum1D loaders in the event a user inadvertently tries to use Spectrum1D instead of SpectrumList for a
spec1d
file. - Enabled interpolation and extrapolation of missing echelle orders. This is currently only used for Keck/HIRES, but the code is general.
- Allow the specification of wavelength limits on the flexure cross-correlation against a sky template to limit the effect of unconstrained wavelength solutions at the ends of the spectrum.
- Change
overscan_method = 'polynomial'
tooverscan_method = 'chebyshev'
to reflect the type of polynomial being fit. Both names point to the same code, but the name'polynomial'
is deprecated and will be removed in the future. - Introduced PCA method for telluric corrections
- Added slicer subpixel sampling for DataCube generation
- Added
trace_rms_tol
parameter for edge tracing, which helps guard against poorly constrained traces for spectrally truncated slits/orders.
Instrument-specific Updates
- Add support for the R4K detector for MDM OSMOS
- Updated archival sensitivity functions for DEIMOS 1200G, 800G, and 600ZD gratings.
- Keck/KCWI and Keck/KCRM: Turned on polynomial correction for sky subtraction.
- We now support the reduction of VLT/FORS2 data taken in MOS mode.
- Fixed fluxing file format in the
Keck-DEIMOS HOWTO
documentation. - LDT/DeVeny: default parameter & wavelength template updates, add instrument- specific line lists, use SCITARG for target name if none entered in the LOUI.
- Added support for NTT/EFOSC2 Gr#4
- Keck/KCWI: FeAr are used for wavelength calibration, while the ThAr lamp is used to determine the wavelength tilt.
- Improvement to the wavelength calibration for Keck/HIRES. New arxiv templates added. Templates available for orders 35-117.
- Various updates to default parameters for Keck/HIRES.
- Added
Keck-LRIS HOWTO
documentation.
Script Changes
- When making datacubes, the user can select a separate frame to use for the sky subtraction. In this case, it is the processed data that will be used for sky subtraction (akin to nodding).
- Allow a list of files to be passed to
pypeit_chk_wavecalib
. - A new script has been written (
chk_scattlight
) to check the generation of the scattered light calibration frame model. - Added the
pypeit_edge_inspector
script, which allows users to edit the edge traces by-hand. pypeit_parse_slits
now prints also the echelle order number, if applicable.- Column
SpatID
in the output ofpypeit_chk_wavecalib
changed toSpatOrderID
and now show the echelle order number, if applicable, otherwise the slit number. pypeit_chk_edges
now load SlitTraceSet (if available) to be able to overlay the echelle order numbers.- Added a new GUI for creating and editing PypeIt input files:
pypeit_setup_gui
- Added a -G option to
pypeit_setup
andpypeit_obslog
that will start the new Setup GUI. - Improvements and bug fixes for how the mask is displayed by
pypeit_show_2dspec
, and addedpypeit_print_bpm
to allow for a quick report on the flags associated with a given bit value.
Datamodel Changes
- A wavelength array is now stored for DataCube()
- WaveCalib and WaveFit datacontainers now store information about echelle order number, if applicable.
- Change to how SlitTraceSet datamodel stores and checks bit flag values.
Under-the-hood Improvements
- The CoAdd3D code has been refactored into a series of core modules and PypeIt-specific routines.
- Polynomial overscan fitting now uses the
numpy.polynomial.Chebyshev
class instead of the deprecatednumpy.polyfit()
function. - Improvements to echelle wavelength calibration. Code changes in:
pypeit/core/wavecal/wvutils.py
,pypeit/core/wavecal/echelle.py
,pypeit/core/wavecal/autoid.py
,pypeit/wavecalib.py
. - Fixed some failure modes when matching measured order positions to expected positions for fixed-format echelle spectrographs.
- More extensive propagation of turning off datamodel version checking (using
try_old
andchk_version
) throughout the code.
Bug Fixes
- Fixed bug associated with finding more than one file with the same name (but presumably different extensions).
- Fixed differential atmospheric refraction (DAR) correction bug. This bug affected datacubes combined using CoAdd3D(). Previously, the DAR was being computed, applied, and then later overwritten. The new routine is faster and more accurate.
- Fixed a bug associated with an incorrect date for the transition to the Mark4 detector for Keck/LRIS RED.
- Fixed a bug with the
pypeit_identify
script when using echelle data. Previously, the sigdetect parameter was a list of all orders, instead of a single value. - Fixed a bug with the GUI
pypeit_skysub_regions
. Previously, the calib header information was not included, and this led to a calibration error. - Corrected the binning scaling for BOXCAR_RADIUS in the object-finding algorithm. Previously, the platescale was multiplied by the spectral binning and not the spatial binning.
- Aligned the documentation and parameters with the code for polynomial overscan subtraction. Docs/params specified 3 values to be passed in
overscan_par
foroverscan_method = 'polynomial'
, but the code only uses one (poly order). - Fixed duplicate object bug reported in Issue #1690.
Version 1.14.0
Dependency Changes
- Main dependency bumps: numpy>=1.22, matplotlib>=3.7, ginga>=4.1.1,
qtpy>=2.0.1
Functionality/Performance Improvements and Additions
-
Improvements to wavelength grids and masking in coadd routines.
-
Refactored coadding routines to work with lists to support coadding
data from different setups. -
Sensitivity function models can now be computed relative to the
flat-field spectrum. -
Improvements in 2D coaddition
- Fix a bug in
pypeit_setup_coadd2d
for the output file name of
the.coadd2d
file - Added possibility to specify more than one Science folder in
pypeit_setup_coadd2d
- Now
only_slits
parameter inpypeit_coadd_2dspec
includes
the detector number (similar toslitspatnum
) - Added
exclude_slits
parameter inpypeit_coadd_2dspec
to
exclude specific slits - Fix wrong RA and Dec for 2D coadded serendips
- Fix a bug in
-
Allow wavelength calibrations for specific slits/orders to be redone
(instead of adopting the value from a processed calibration frame);
see newredo_slits
parameter.
Instrument-specific Updates
-
Adds/Improves support for Gemini/GNIRS (IFU), Keck/KCRM, Keck/ESI,
MDM/Modspec, Keck/HIRES, JWST -
HIRES wavelength solution improvements galore
-
Improvements for Keck/LRIS
- Generated wavelength templates for all the LRIS grism & grating
- Added FeAr line list
- Improved calibration association and frame typing
- Improved and added documentation
- Changes to
metadata.py
including commenting out, in the pypeit
file, files that have frametype None (this preventrun_pypeit
to crash) - Added a function
check_spectrograph()
(currently only defined
for LRIS), that checks (duringpypeit_setup
) if the selected
spectrograph is the corrected one for the data used.
Script Changes
- Added a script to convert a wavelength solution into something that
can be placed in the reid archive. - Store user-generated wavelength solution in pypeit cache
Datamodel Changes
- Changed calibration frame naming as an attempt to avoid very long
names for files with many calibration groups. Sequential numbers are
reduced to a range; e.g.,'0-1-2-3-4'
becomes'0+4'
and
'3-5-6-10-11-12-15-18-19'
becomes'3-5+6-10+12-15-18+19'
- Instrumental FWHM map is calculated and output in
Calibrations
and
spec1d
files.
Under-the-hood Improvements
- Change how masking is dealt with in extraction to fix a bug in how
masks were being treated for echelle data - Refactored function that loads wavelength calibration line lists
Bug Fixes
-
Hotfix for GTC/OSIRIS lamp list
-
Hotfix for Arc1D stats annotations on the QA
-
Hotfix for metadata:
- correctly set
config_independent_frames
when multiple
configurations are being setup - support lists in
config_independent_frames
- correctly set
-
Hotfix for rebin (speed-up and conserves flux)
-
Hotfix for skysub regions GUI that used
np.bool
-
Hotfix to stop pypeit_setup from crashing on data from lbt_luci1,
lbt_luci2, magellan_fire, magellan_fire_long, p200_tspec, or
vlt_sinfoni. -
Hotfix to set BPM for each type of calibration file.
-
Fixed a bug in echelle coadding where the wrong coadded spectra were
being used in final stacks. -
Fix a bug in
spectrograph.select_detectors
, where a list of
slitspatnum
could not be used.
Version 1.13.0
Functionality/Performance Improvements and Additions
- Allow user control of the local sky subtraction window
- Implemented a resample algorithm when generating datacubes
- Sensitivity function masking and output updates
- Improve speed in ginga visualization of traces and added
pypeit_chk_tilts
. Note that this script uses an update
of the tilts datamodel, so it will not work on older reductions. - Fixed a bug in the
variance_model
calculation for combined images.
Datamodel Changes
- Removed use of the term "master", renamed to calibration frames/files.
Default output directory for calibration frames is nowCalibrations
.
Calibration frames renamed from, e.g.,MasterArc*
toArc*
. - Names of associated calibration frames now written to
spec2d
file headers.
Dependency Changes
- Deprecate support for python 3.8 with PypeIt, allow python 3.11
- Make pypeit_show_2dspec (somewhat) backwards compatible.
- Added the option to disable strict version checking for 1d coadds.
- Start to deprecate use of
os.path
in favor ofpathlib
Script Changes
- In PypeIt files, the
'calib'
column is now always added to the pypeit
file, regardless of whether or not you also request the'comb_id'
and
'bkg_id'
columns. - In PypeIt files, the calibration group numbers can now be anything, as long as
there are no more than 63 unique integers. - Deprecated
pypeit_parse_calib_id
script, but improved the.calib
file
provided bypypeit_setup
. The.calib
file is now always written, and
provides a direct association between input raw files and output calibration
files. Discussed in new docs. - Added coadd2d setup script
- Added the possibility to use dither offsets saved in the header of the science
frames for coadding 2D spectra (dithoff
must be part of the spectrograph
metadata). - Major quicklook updates; see documentation. ql_multislit.py deprecated.
Instrument-specific Updates
- Updates to reduction parameters for LDT/DeVeny
Hotfixes
- Hotfix to docs to ensure
pypeit_loaders
api doc is generated - Hotfix for KCWI when using alignment (aka ContBars) frames for the astrometric correction.
Version 1.12.2
Instrument-specific Updates
- Include Gemini/GMOS mask design slurping and usage documentation
- New Gemini/GMOS wavelength solution
- Added NIRES tutorial doc
- reid_arxiv templates for all MMTO Blue Channel gratings and for MMTO Binospec G600 and G1000
Usage Updates
- Added new specutils interface
Datamodel Updates
- Include the S/N of extracted spectra in the SpecObj datamodel
Hotfixes
- Various bug fixes and enhancements to mmt_bluechannel and mmt_binospec support
- Fixed bugs when only performing calibrations and (1) calib groups are all set
to 'all' or (2) anything other than '0'.
Version 1.12.1
Instrument-specific Updates
- Implemented the upgraded GTC/OSIRIS+
- Added support for more NOT/ALFOSC grisms as well as NOT recommended standards
- Implemented the SOAR/Goodman (blue) M1 only
Minor Updates
- Modify install notes to allow python 3.10; python3.8 not longer explicitly supported
- Allow for bad orders during extraction without crashing
Hotfixes
- Specify sphinx versions to correctly work with sphinx_rtd_theme
- Fixed bug that caused crash of sensfunc routines using telluric grids in offline processing
- Fixed error when showing flats in Ginga when the fine correction is not performed
- Fixed keymap error when displaying GUIs
- New docs on OneSpec
Version 1.11.0
Significant Updates
- Add ability for users to specify custom arc line lists for wavelength
calibration, saved in the user's PypeIt cache - Allow for the specification of a specific UVIS extinction file for
sensitivity function computation and flux calibration. - Now more than one setup can be assigned to the same calibration frame,
allowing to associate the same calibration frames to different
science/standard frames, if desired. - Refactor and general update of documentation
Instrument-specific Updates
- Correctly associate calibrations with science data for MOSFIRE
longslit and long2pos masks. - Automatically assign
comb_id
andbkg_id
to MOSFIRE science data,
using the information on the dither pattern.
Minor
- Added Keck/NIRES frame-typing development doc.
- Allow verbosity specification for various post-processing command-line
scripts.
Version 1.10.0
Major Changes
- Refactor
PypeIt
input files. Main pypeit file remains the same, except that inclusion of leading and trailing|
characters in the data table (required in previous versions) will now result inDeprecationWarning
s. All post-processing scripts (coadding, fluxing, etc) must use the new format. See the main documentation pages.
Minor Changes/Improvements
- Apply
find_min_max
when clipping the image for object finding - Mask bad detector regions for global sky flexure calculation
- Added wavelength diagnostics to the spec2d output
Instrument-specific Changes/Improvements
- Modify
tweak_standard
for Keck-MOSFIRE/J2 - Detector structure correction included in flatfield calibration (Keck-KCWI only)