Version 2.0.0
Breaking Changes
FindObjparametersfind_maxdevandfind_extrap_npolyhave been renamed totrace_maxdevandtrace_extrap_npoly, respectively, to indicate their use in object tracing rather than object finding. No change to the functionality of these parameters has been made. Users with these parameters in their pre-existing :ref:PypeIt Input Files <input_files>will need to change the parameter names in order to run said files.
Documentation Updates
- Added tables with the list of available telluric model spectra.
Dependency Changes
- Removed dependency on linetools package (details below).
Functionality/Performance Improvements and Additions
- Added the possibility to use
pypeit_sensfuncto compute a sensitivity function using the the 1D spectrum generated bypypeit_coadd_1dspec, i.e., the OneSpec datamodel. Note that this is only possible for non-echelle data. - Added a new class to interface with the atmospheric extinction data.
- Significant refactor of interface with flux-calibration standards.
- Addition of two new
FindObjobject tracing prameterstrace_maxshiftandtrace_min_maxthat make it easier to work with spectral images that are subject to high atmospheric dispersion (former) and/or regions of the detector that extend beyond the detected object (latter). - Include an object tracing QA plot (
<objname>_<det>_<slit>_obj_trace.png) in the collection of QA plots produced in the main PypeIt run. - Added the possibility to use the maskdesign information to set
specminandspecmaxin the edge tracing process for each slit (only if this information is available). Currently implemented only for Gemini/GMOS. - When creating a sensitivity function from a standard star reduced using the mosaic approach, the code now splits the standard star spec1d into the single detectors and, after the sensitivity function for each detector is computed, it splices them into a single sensfunc covering the full wavelength range.
- Add the possibility to use more than one standard star spec1d to create the sensitivity function. This can be helpful in case of spectrally dithered observations.
Instrument-specific Updates
- Improved support for LBT/LUCI, including updated detector parameters, support for the N3.75 camera, wavelength solutions for the G200 grating, and a basic non-linearity correction. Edge finding parameters have been better optimized, and spatial flexure correction has now been turned on.
- Updated object tracing parameters for LDT/DeVeny to allow more robust extraction of objects observed at low elevation where atmospheric dispersion is significant.
- Updated the
gainandronoisevalues for Gemini/GMOS spectrographs to account for the different values measured in each amplifier. - Enables MMT/Binospec reductions to match the slitmask design input to the detected slits, similar to procedures used for Keck/DEIMOS, Keck/MOSFIRE, etc.
Script Changes
- Added a new script,
pypeit_rectify_2dspec, which creates a rectified 2D spectral image. Each slit/order in the spec2d output file is rectified onto a common wavelength grid. This rectified 2D image must be used only for quick-look visualization purposes, and not for scientific analysis.
Testing
- Added tests for some :mod:
~pypeit.core.coaddfunctions.
Under-the-hood Improvements
- Improved extension checking for post-processing scripts to explicitly allow PypeIt-produced ".fits" files regardless of a given spectrograph's raw data extension.
Bug Fixes
- Removed last vestiges of support for Python 3.10 in the form of
datetime.UTCcrutches left over from the start of support of Python 3.12. - Fixed a bug with configuration-specific parameters where the raw data FITS header was polled for metadata information used to set parameters rather than relying on the metadata in the
.pypeitfile. For some spectrographs, this required adding new columns to the.pypeitfile format; to retain backwards- compatibility when an older.pypeitfile without these columns is used, the code still pulls the desired metadata from the raw data FITS file as before. - Fixed Coadd2d filenames to remove spaces from objet names (as is done in the main PypeIt run).
AI Use
Deprecation of linetools dependency
We used Claude to aid in the removal of the linetools dependency from PypeIt with the following prompts:
-
On this
deprecate_linetoolsbranch, I wish to remove all imports of linetools. Can you confirm that I have successfully done so? -
Yes, please do, but ignore the ones in the Documentation files
-
The test test_arc.py in tests/ is failing. Please suggest a fix. If you need to run it, use the "pypeit" environment in conda.
Additional by-hand changes were made to remove the linetools references from the docs, remove lingering instances of xspectrum1d, and fix remaining issues.
We also added tests for the new pypeit.utils.loadjson function using the following prompt (GPT-5 mini):
-
Please add test functions to test_utils.py that test the functionality of the
pypeit.utils.loadjsonfunction. As necessary, the test functions should create test JSON files in thepypeit/testsdirectory that are then deleted when each test is complete. The tests should cover usage with regular and gzip compressed files. The tests should also cover failure modes when the file does not exist, the file is not JSON format, and any of the loading functions fail. -
Please make the following edits to your contribution. Remove the definition of TEST_DIR; instead simply save the files in the current working directory. Move all the new tests to the end of the file. Make sure all imports are at the top of the file, after any initial file docstring.