What’s New?#

Version 1.0.1#

Bug Fixes#

73 Bug fixes including:

  • Incorrect tutorial notebooks

  • Various plotter bugs

  • Spectrum slicing in non-equatorial coordinates

  • Correct masks when time averaging

  • Correct weights and flags written by Spectrum.write

  • Correct flags preserved during frequency-switched folding

  • Old spectrometer data can be read

  • Exposure time in SubBeamNod

  • Scanblock write error

  • Spectrum and Scan metadata updates after operations

  • Baseline fitting with float region boundaries

  • Incorrect frequency-switched calibration

  • GBTFITSLoad summary in verbose mode does the wrong thing

  • Tsys weight calculation broken

  • dysh logging to user-defined file

  • Tsys = nan not caught until calibrating

  • Dealing with repeated scan numbers

  • GBTOnline not functioning properly

  • Running scripts from CLI

  • Handling masks during spectral smoothing

  • GBTFITSLoad getrow fails.

Functionality & Enhancements#

  • Improved documentation and notebooks

  • New Users Guide

  • Significant performance improvements, especially for large files and GBTOnline

  • Plotter updates
    • New TK-based plotter

    • Histogram-style plotting option

  • Spectral Line Search handles redshift

  • User provided spectral weights

  • Data quality assessment tools

  • VEGAS spur flagging

  • Channel selection during calibration

  • User can provide custom surface error and aperture efficiency

  • Apply baseline to all Scans in a Scanblock

Version 0.8.4#

Bug Fixes#

  • Tested with Python 3.13 and 3.14

  • Add support for numpy 2.0

  • Fixes a bug where the flags would not be saved when writting an SDFITS file (Issue #750)

Version 0.8.3#

Functionality & Enhancements#

  • Spectral line query interface

  • Waterfall plots

  • Plotting multiple spectra in the same figure through oshow argument

  • Improved performance (loading and writing data)

  • Custom column selection for summary

  • New on-the-fly calibration tutorial

  • New data selection tutorial

  • getfs works on data without noise diode(s)

  • Adds calibrator submodule

  • Adds tcal submodule

  • Adds gettcal method. See HI survey tutorial for an example

  • Enables selection of SIG and CAL columns using booleans

  • The brightness scale (antenna temperature, antenna temperature corrected for atmospheric opacity or flux) is now documented in Spectrum, Scan and ScanBlock objects as tscale

  • Switches to specutils2.0

Bug Fixes#

  • Fixes an issue that would cause getspec to always assign units of K to the output Spectrum (Issue #663)

  • dysh now writes SDFITS files with the DATA column in position 6 (Issue #639)

  • summary separates rows that have different BINTABLE or FITSINDEX values (Issue #718)

  • summary is sorted by scan number (Issue #648)

  • summary works with repeated scan numbers (Issue #638)

  • ScanBlock no longer writes the first Scan twice (Issue #617)

  • Spectrum can be sliced in any order (Issue #360)

  • baseline exclusion regions should work regardless of order of spectral axis and units (Issue #654)

  • flux attribute now contains NaN values for masked channels (Issue #575)

  • cog now returns the correct widths (before they were approximately half the widths)

  • Fixes an issue where trying to select data from a different binary table would result in an error

  • plot now produces the correct y-axis label

  • Changes the default dysh shell colors (Issue #522)

Version 0.7.0#

Functionality & Enhancements#

  • Scan/ScanBlock smoothing

  • Scan/ScanBlock baseline subtraction
    • It is now possible to subtract a baseline model from all the integrations in a Scan or ScanBlock using the subtract_baseline method.

  • Curve of Growth
    • Spectrum objects now have a cog method that computes the curve of growth.

Bug Fixes#

  • Fixes a bug where using proc=... with getps would result in an error.

  • Fixes a bug where unpaired OnOff or OffOn observing procedures would result in an error.

  • Fixes a bug where using an exclude region with a boundary equal to the number of channels would produce an error.

Version 0.6.2#

Bug Fixes#

  • Fixes a bug where Spectrum.average would not mask the data, if there was anything to be masked.

  • Fixes a bug where Spectrum.average would not propagate the data reduction history to the resulting Spectrum.

  • Fixes a bug where the integration number for files with multiple binary tables would have bogus values. See Issue #425.

Version 0.6.1#

Bug Fixes#

  • Fixes a bug where calibration routines would not fetch the correct data when the input SDFITS had multiple binary tables.

  • Fixes a bug where calibration routines would not work if there was no noise diode being fired. This is still an issue for getfs.

Version 0.6.0#

Functionality & Enhancements#

Version 0.5.0#

Functionality & Enhancements#

  • Calibration with a flexible Off - Implements GBTFITSLoad.getsigref.

  • Calibration of W-Band and Argus observations - There are now GBTFITSLoad.calseq and GBTFITSLoad.vanecal functions to derive system temperatures for W-Band and Argus observations, respectively.

Version 0.4.0#

Functionality & Enhancements#

  • Calibration of Nod observations
    • Nod observations can be calibrated using GBTFITSLoad.getnod(). By default dysh will identify which beams were used for the nodding, but these can be specified via the fdnum argument.

  • Metadata management
    • SDFITSLoad and GBTFITSLoad objects now have access to their column data via their get and set methods. For an example see the metadata management recipes.

  • Smoothing
    • Spectrum objects can now be smoothed using their smooth method.

    • Current smoothing kernels include a Gaussian, boxcar and Hanning windows. Their widths are specified in channels.

    • By default the Spectrum will be decimated by the kernel width. This can be changed with the decimate argument.

  • Alignment of Spectrum objects
    • Spectrum objects can now be aligned with respect to each other to match their spectral axes.

    • The alignment matches the first channel of the Spectrum being aligned.

    • The alignment can be done in frequency or velocity space.

  • Data IO
    • dysh can now write and read SDFITSLoad, ScanBlock and Spectrum objects to a variety of formats. For an example see data IO recipes.

  • Logging
  • Data reduction history
    • dysh objects now keep track of their history in their history attribute. This is written to disk to enhance data reduction reproducibility.

  • Online/Offline mode
    • dysh can now access the latest spectral line observations using GBTOnline. This will also automatically update the contents of the GBTFITSLoad object as new data is written to disk. This mode is only available when working from a GBO data reduction host.

    • GBTOffline will fetch the data for an observations by specifying the session id (e.g., AGBT24A_999_01).

  • Drop support for Python3.8 and Python3.9
    • dysh now is only available for Python3.10 and above.

  • Gain correction classes
    • Gain correction classes for computing gain correction as a function of elevation, aperture efficiency, surface error, and airmass. (See GBTGainCorrection).

Bug Fixes#

Version 0.3.0#

Functionality & Enhancements#

  • Handling of Doppler frames and conventions
    • A GBT Spectrum has a spectral axis derived from the WCS of the spectrum (which in turn is created from meta data in the SDFITS file). The default Doppler frame for this axis is topocentric. The spectral axis of a Spectrum can be converted to standard frames recognized by astropy: LSRK, HCRS, ICRS, GCRS, ITRS, GalactoCentric. See Spectrum.set_frame, Spectrum.with_frame, and also the xaxis_unit and vel_frame keywords to SpecPlot.plot.

    • The Doppler conventions radio, optical, relativistic are recognized by dysh. Users can convert a Spectrum to different conventions with Spectrum.set_convention and Spectrum.with_velocity_convention. See also, the doppler_convention keyword of SpecPlot.plot

  • Data Selection
    • The Selection class implements a very flexible way of selecting data rows from an SDFITS file using any column name. (Column name aliases are also supported). Multiple selection rules are logically combined to a final selection.

    • Data selection is implemented on GBTFITSLoad via delegation to a Selection attribute.

  • Frequency switching calibration
    • FS data can be calibrated using GBTFITSLoad.getfs() with the option to fold the signal and reference spectra.

    • The Scan class for calibrating frequency switching, FSScan, has been implemented. Users should not need to create these directly, but rather through getfs().

  • ScanBlock API change
    • timeaverage() now returns a Spectrum instead of a list. Previously the list contained the time average of each Scan within the ScanBlock. Now the time average across all Scans in the ScanBlock is returned.

Bug Fixes#