specbox.basemodule
Package
- class specbox.basemodule.ConvenientSpecMixin(wave=None, flux=None, err=None, wave_unit=None, flux_unit=None, *args, **kwargs)[source]
Bases:
objectA mixin class for convenient spectrum operations.
- property flux_unit
- property flux
- property wave_unit
- property wave
- property err
- property spec
- trim(wave_range, plot=True, inplace=False)[source]
Trim the spectrum to a given wavelength range.
- Parameters:
- Returns:
The trimmed spectrum (
selfifinplace=True, otherwise a copy).- Return type:
- smooth(window_length, polyorder, plot=True, inplace=False, sigclip=False, **kwargs)[source]
Smooth the spectrum with scipy.signal.savgol_filter.
- Parameters:
window_length (int) – The length of the filter window (i.e., the number of coefficients).
window_lengthmust be a positive odd integer. Ifmodeis'interp',window_lengthmust be less than or equal to the size ofx.polyorder (int) – The order of the polynomial used to fit the samples.
polyordermust be less thanwindow_length.plot (bool) – Plot the smoothed spectrum.
inplace (bool) – Replace the original spectrum with the smoothed one.
sigclip (bool) – Sigma clip the smoothed spectrum.
kwargs (dict) – Keyword arguments forwarded to scipy.signal.savgol_filter.
- Returns:
The smoothed spectrum.
- Return type:
- class specbox.basemodule.SpecIOMixin(*args, **kwargs)[source]
Bases:
objectMixin class for reading and writing spectra.
- class specbox.basemodule.SpecPandasRow(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None, wave_col: str = 'wavelength', flux_col: str = 'flux', err_col: str | None = None, ivar_col: str | None = 'ivar', wave_unit: Unit | None = Unit('Angstrom'), flux_unit: Unit | None = Unit(dimensionless), meta_cols: Sequence[str] = (), array_cols: Mapping[str, str] = (), **kwargs)[source]
Bases:
ConvenientSpecMixinSpectrum backed by a single row of a pandas DataFrame.
This class is meant for “table-of-spectra” files where each row stores arrays (e.g. wavelength/flux/ivar) plus scalar metadata (e.g. ra/dec/z).
Notes
extis treated as a 1-based row selector for compatibility with the FITS multi-extension viewer (which usesext=index+1).Parquet reading requires either
pyarroworfastparquetinstalled.
- classmethod count_in_file(filename: str | Path, *, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None) int[source]
- read(filename: str | Path | None = None, *, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None, wave_col: str | None = None, flux_col: str | None = None, err_col: str | None = None, ivar_col: str | None = None, meta_cols: Sequence[str] | None = None, array_cols: Mapping[str, str] | None = None, **kwargs)[source]
- class specbox.basemodule.SpecSparcl(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, ~typing.Any] | None=None, wave_unit: Unit | None = Unit("Angstrom"), flux_unit: Unit | None = <Quantity 1.e-17 erg / (Angstrom s cm2)>, **kwargs)[source]
Bases:
SpecPandasRowReader for SPARCL spectra stored as a dataframe (e.g. parquet).
The reference schema used by
outlier_sparcl_spectra.parquetis: - arrays:wavelength,flux,ivar(+ optionalmask,model) - scalars:ra,dec,redshift,specid,spectype, …
- class specbox.basemodule.SpecAIMSZReview(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, ~typing.Any] | None=None, wave_unit: Unit | None = Unit("Angstrom"), flux_unit: Unit | None = <Quantity 1.e-17 erg / (Angstrom s cm2)>, **kwargs)[source]
Bases:
SpecPandasRowReader for AIMS-z review parquet spectra.
Expected row schema: - arrays:
wavelength,flux,ivar,mask- scalars:object_id,targetid,ra,dec,redshift,spectype,data_releaseoptional review context columns used by the viewer UI
- REVIEW_CONTEXT_COLUMNS = ('review_priority_tier', 'review_score', 'review_rank_within_tier', 'review_slice_label', 'z_ref', 'z_ml_expect', 'z_pcf_best', 'pcf_template_best', 'pcf_score_best')
- class specbox.basemodule.SpecEuclidCoaddRow(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None, wave_unit: Unit | None = Unit('Angstrom'), flux_unit: Unit | None = Unit('erg / (Angstrom s cm2)'), **kwargs)[source]
Bases:
SpecPandasRowReader for Euclid BGS+RGS coadd spectra stored in dataframe files.
Expected row schema: - arrays:
wavelength,flux,err(optional:mask,arm) - scalars:objid,ra,dec, and merge diagnostics.
- class specbox.basemodule.SpecSDSS(filename=None, redshift=None, *args, **kwargs)[source]
Bases:
SpecIOMixin,ConvenientSpecMixinClass for SDSS spectra. :param filename: Name of the SDSS spectrum file. :type filename: str
- class specbox.basemodule.SpecIRAF(filename=None, redshift=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinClass for reading IRAF spectra.
- read(filename, **kwargs)[source]
Read the spectrum. :param filename: Name of the file to read. :type filename: str :param ra: Right ascension of the object in degrees. :type ra: float :param dec: Declination of the object in degrees. :type dec: float :param telescope: Name of the telescope. Default is None. :type telescope: str :param side: Side (arm) of the spectrograph (e.g. blue, red). Default is None. :type side: str
- class specbox.basemodule.SpecLAMOST(filename=None, flux_calibrated=False, redshift=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinA class for LAMOST Low Resolution Spectral (LRS) data.
- class specbox.basemodule.SpecEuclid1d(filename=None, ext=None, extname=None, clip=True, good_pixels_only=False, redshift=None, lrange=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinClass for reading 1D spectra from Euclid. The datamodel of Q1 1D spectra is described in https://euclid.esac.esa.int/dr/q1/dpdd/sirdpd/dpcards/sir_combinedspectra.html.
- read(filename, ext=None, extname=None, clip=True, good_pixels_only=False, lrange=None, **kwargs)[source]
Read the Euclid 1D spectrum. :param filename: Name of the Euclid spectrum file. :type filename: str :param ext: Extension number of the spectrum. :type ext: int :param extname: Extension name of the spectrum. :type extname: str :param clip: If True, clip the spectrum to the useful range. :type clip: bool :param good_pixels_only: If True, keep only recommended pixels according to Euclid MASK flags.
Pixels are considered bad when
MASKis odd orMASK >= 64.- Parameters:
lrange (str, optional) – Arm label used for clipping policy (e.g.
'BGS'or'RGS'). If None,LRANGEis read from the HDU header.
- read_parquet(filename, ext=None, extname=None, clip=True, good_pixels_only=False, lrange=None, **kwargs)[source]
- property z_vi
- class specbox.basemodule.SpecEuclid1dDual(rgs: SpecEuclid1d | None = None, bgs: SpecEuclid1d | None = None, rgs_file: str | None = None, bgs_file: str | None = None, ext: int | None = None, extname: str | None = None, rgs_filename: str | None = None, bgs_filename: str | None = None, rgs_ext: int | None = None, bgs_ext: int | None = None, rgs_extname: str | None = None, bgs_extname: str | None = None, clip: bool = True, good_pixels_only: bool = False, redshift: float | None = None)[source]
Bases:
objectContainer for paired Euclid 1D spectra (RGS + BGS).
This keeps
SpecEuclid1dunchanged while enabling joint visualization and combined-arm analysis workflows.- plot_together(ax=None, stacked: bool = False, labels: bool = True)[source]
Plot RGS and BGS together.
Module: basemodule
- class specbox.basemodule.basemodule.ConvenientSpecMixin(wave=None, flux=None, err=None, wave_unit=None, flux_unit=None, *args, **kwargs)[source]
Bases:
objectA mixin class for convenient spectrum operations.
- property flux_unit
- property flux
- property wave_unit
- property wave
- property err
- property spec
- trim(wave_range, plot=True, inplace=False)[source]
Trim the spectrum to a given wavelength range.
- Parameters:
- Returns:
The trimmed spectrum (
selfifinplace=True, otherwise a copy).- Return type:
- smooth(window_length, polyorder, plot=True, inplace=False, sigclip=False, **kwargs)[source]
Smooth the spectrum with scipy.signal.savgol_filter.
- Parameters:
window_length (int) – The length of the filter window (i.e., the number of coefficients).
window_lengthmust be a positive odd integer. Ifmodeis'interp',window_lengthmust be less than or equal to the size ofx.polyorder (int) – The order of the polynomial used to fit the samples.
polyordermust be less thanwindow_length.plot (bool) – Plot the smoothed spectrum.
inplace (bool) – Replace the original spectrum with the smoothed one.
sigclip (bool) – Sigma clip the smoothed spectrum.
kwargs (dict) – Keyword arguments forwarded to scipy.signal.savgol_filter.
- Returns:
The smoothed spectrum.
- Return type:
- class specbox.basemodule.basemodule.SpecIOMixin(*args, **kwargs)[source]
Bases:
objectMixin class for reading and writing spectra.
- class specbox.basemodule.basemodule.SpecPandasRow(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None, wave_col: str = 'wavelength', flux_col: str = 'flux', err_col: str | None = None, ivar_col: str | None = 'ivar', wave_unit: Unit | None = Unit('Angstrom'), flux_unit: Unit | None = Unit(dimensionless), meta_cols: Sequence[str] = (), array_cols: Mapping[str, str] = (), **kwargs)[source]
Bases:
ConvenientSpecMixinSpectrum backed by a single row of a pandas DataFrame.
This class is meant for “table-of-spectra” files where each row stores arrays (e.g. wavelength/flux/ivar) plus scalar metadata (e.g. ra/dec/z).
Notes
extis treated as a 1-based row selector for compatibility with the FITS multi-extension viewer (which usesext=index+1).Parquet reading requires either
pyarroworfastparquetinstalled.
- classmethod count_in_file(filename: str | Path, *, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None) int[source]
- read(filename: str | Path | None = None, *, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None, wave_col: str | None = None, flux_col: str | None = None, err_col: str | None = None, ivar_col: str | None = None, meta_cols: Sequence[str] | None = None, array_cols: Mapping[str, str] | None = None, **kwargs)[source]
- class specbox.basemodule.basemodule.SpecSparcl(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, ~typing.Any] | None=None, wave_unit: Unit | None = Unit("Angstrom"), flux_unit: Unit | None = <Quantity 1.e-17 erg / (Angstrom s cm2)>, **kwargs)[source]
Bases:
SpecPandasRowReader for SPARCL spectra stored as a dataframe (e.g. parquet).
The reference schema used by
outlier_sparcl_spectra.parquetis: - arrays:wavelength,flux,ivar(+ optionalmask,model) - scalars:ra,dec,redshift,specid,spectype, …
- class specbox.basemodule.basemodule.SpecAIMSZReview(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, ~typing.Any] | None=None, wave_unit: Unit | None = Unit("Angstrom"), flux_unit: Unit | None = <Quantity 1.e-17 erg / (Angstrom s cm2)>, **kwargs)[source]
Bases:
SpecPandasRowReader for AIMS-z review parquet spectra.
Expected row schema: - arrays:
wavelength,flux,ivar,mask- scalars:object_id,targetid,ra,dec,redshift,spectype,data_releaseoptional review context columns used by the viewer UI
- REVIEW_CONTEXT_COLUMNS = ('review_priority_tier', 'review_score', 'review_rank_within_tier', 'review_slice_label', 'z_ref', 'z_ml_expect', 'z_pcf_best', 'pcf_template_best', 'pcf_score_best')
- class specbox.basemodule.basemodule.SpecEuclidCoaddRow(filename: str | Path | None = None, *args, df: DataFrame | None = None, ext: int = 1, row: int | None = None, file_format: str | None = None, pandas_read_kwargs: Mapping[str, Any] | None = None, wave_unit: Unit | None = Unit('Angstrom'), flux_unit: Unit | None = Unit('erg / (Angstrom s cm2)'), **kwargs)[source]
Bases:
SpecPandasRowReader for Euclid BGS+RGS coadd spectra stored in dataframe files.
Expected row schema: - arrays:
wavelength,flux,err(optional:mask,arm) - scalars:objid,ra,dec, and merge diagnostics.
- class specbox.basemodule.basemodule.SpecSDSS(filename=None, redshift=None, *args, **kwargs)[source]
Bases:
SpecIOMixin,ConvenientSpecMixinClass for SDSS spectra. :param filename: Name of the SDSS spectrum file. :type filename: str
- class specbox.basemodule.basemodule.SpecIRAF(filename=None, redshift=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinClass for reading IRAF spectra.
- read(filename, **kwargs)[source]
Read the spectrum. :param filename: Name of the file to read. :type filename: str :param ra: Right ascension of the object in degrees. :type ra: float :param dec: Declination of the object in degrees. :type dec: float :param telescope: Name of the telescope. Default is None. :type telescope: str :param side: Side (arm) of the spectrograph (e.g. blue, red). Default is None. :type side: str
- class specbox.basemodule.basemodule.SpecLAMOST(filename=None, flux_calibrated=False, redshift=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinA class for LAMOST Low Resolution Spectral (LRS) data.
- class specbox.basemodule.basemodule.DoubleSpec(spb=None, spr=None, spbfile=None, sprfile=None, varb=None, varr=None, instr=None)[source]
Bases:
object
- class specbox.basemodule.basemodule.SpecCoadd1d(filename=None, redshift=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinClass for reading 1D coadded spectra generated by PypeIt.
- class specbox.basemodule.basemodule.SpecEuclid1d(filename=None, ext=None, extname=None, clip=True, good_pixels_only=False, redshift=None, lrange=None, *args, **kwargs)[source]
Bases:
ConvenientSpecMixin,SpecIOMixinClass for reading 1D spectra from Euclid. The datamodel of Q1 1D spectra is described in https://euclid.esac.esa.int/dr/q1/dpdd/sirdpd/dpcards/sir_combinedspectra.html.
- read(filename, ext=None, extname=None, clip=True, good_pixels_only=False, lrange=None, **kwargs)[source]
Read the Euclid 1D spectrum. :param filename: Name of the Euclid spectrum file. :type filename: str :param ext: Extension number of the spectrum. :type ext: int :param extname: Extension name of the spectrum. :type extname: str :param clip: If True, clip the spectrum to the useful range. :type clip: bool :param good_pixels_only: If True, keep only recommended pixels according to Euclid MASK flags.
Pixels are considered bad when
MASKis odd orMASK >= 64.- Parameters:
lrange (str, optional) – Arm label used for clipping policy (e.g.
'BGS'or'RGS'). If None,LRANGEis read from the HDU header.
- read_parquet(filename, ext=None, extname=None, clip=True, good_pixels_only=False, lrange=None, **kwargs)[source]
- property z_vi
- class specbox.basemodule.basemodule.SpecEuclid1dDual(rgs: SpecEuclid1d | None = None, bgs: SpecEuclid1d | None = None, rgs_file: str | None = None, bgs_file: str | None = None, ext: int | None = None, extname: str | None = None, rgs_filename: str | None = None, bgs_filename: str | None = None, rgs_ext: int | None = None, bgs_ext: int | None = None, rgs_extname: str | None = None, bgs_extname: str | None = None, clip: bool = True, good_pixels_only: bool = False, redshift: float | None = None)[source]
Bases:
objectContainer for paired Euclid 1D spectra (RGS + BGS).
This keeps
SpecEuclid1dunchanged while enabling joint visualization and combined-arm analysis workflows.- plot_together(ax=None, stacked: bool = False, labels: bool = True)[source]
Plot RGS and BGS together.