Skip to main content

A simple tool to manipulate and visualize UV/optical/NIR spectra for astronomical research.

Project description

specbox

Documentation Status PyPI version

A simple tool to manipulate and visualize UV/optical/NIR spectra for astronomical research.

Documentation

Online documentation is hosted on Read the Docs: https://specbox.readthedocs.io/en/latest/index.html

License

GPLv3. See LICENSE.

Installation

Dependencies

  • numpy
  • scipy
  • astropy
  • pyqtgraph
  • PySide6
  • specutils
  • matplotlib
  • pandas
  • pyarrow or fastparquet (optional, for reading parquet spectra tables)
  • requests
  • pillow (PIL)
  • astroquery

To install the latest version of specbox, run the following command in your terminal:

git clone https://github.com/rudolffu/specbox.git 
# or git clone https://gitee.com/rudolffu/specbox.git 
cd specbox
python -m pip install .

Usage

Main classes and functions

The main classes and functions of specbox are:

basemodule.py:

  • SpecLAMOST and SpecSDSS: classes to read and manipulate spectra from the LAMOST and SDSS surveys, respectively.
  • SpecIRAF: class to read and manipulate spectra from the IRAF format.
  • SpecEuclid1d: reader for Euclid combined 1D spectra, with MASK/good_mask support and optional good_pixels_only=True.
  • SpecPandasRow: generic reader for "table-of-spectra" files readable by pandas (parquet/csv/feather/...), where each row stores arrays (e.g. wavelength/flux/ivar).
  • SpecSparcl: SPARCL parquet/table reader (e.g., for file sparcl_spectra.parquet). Common metadata columns include data_release, targetid, and (optional) euclid_object_id for Euclid overlay.

qtmodule.py:

  • PGSpecPlot: class to plot spectra in a pyqtgraph plot.
  • PGSpecPlotApp: class to create a pyqtgraph plot with a QApplication instance.
  • PGSpecPlotThread: class to create a pyqtgraph plot in a thread.

Examples

Plotting a spectrum from the LAMOST survey

from specbox import SpecLAMOST

spec = SpecLAMOST('input_file.fits')
spec.plot()
# Smooth the spectrum
spec.smooth(5, 3, inplace=False)

Reading a SPARCL parquet spectra table (one row per spectrum)

from specbox.basemodule import SpecSparcl

# ext is a 1-based row index (ext=1 -> first row)
sp1 = SpecSparcl("sparcl_spectra.parquet", ext=1)
sp1.plot()

Run a PGSpecPlotThread for visual inspection of a list of spectra

from specbox import SpecLAMOST
from specbox.qtmodule import PGSpecPlotThread
from glob import glob

basepath = 'lamost_spec/fits_files/'
flist = glob(basepath+'*fits.gz')
flist.sort()
flist = flist[0:60]

a = PGSpecPlotThread(speclist=flist, SpecClass=SpecLAMOST, output_file='vi_output_test60.csv')
a.run()

Run a viewer over a multi-row parquet file (SPARCL/table-of-spectra)

from specbox.basemodule import SpecSparcl
from specbox.qtmodule import PGSpecPlotThreadEnhanced

viewer = PGSpecPlotThreadEnhanced(
    spectra="sparcl_spectra.parquet",
    SpecClass=SpecSparcl,
    # Optional: overlay Euclid spectrum when the parquet has `euclid_object_id`
    # and the Euclid combined FITS uses that ID as `EXTNAME`.
    euclid_fits="COMBINED_EUCLID_SPECS.fits",
    output_file="sparcl_vi_results.csv",
    z_max=6.0,
    load_history=True,
)
viewer.run()

Notes:

  • Results CSV includes targetid and data_release (when available from the input table).
  • The enhanced viewer has a Save PNG button that writes screenshots to ./saved_pngs/.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

specbox-1.0.0.tar.gz (302.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

specbox-1.0.0-py3-none-any.whl (303.5 kB view details)

Uploaded Python 3

File details

Details for the file specbox-1.0.0.tar.gz.

File metadata

  • Download URL: specbox-1.0.0.tar.gz
  • Upload date:
  • Size: 302.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for specbox-1.0.0.tar.gz
Algorithm Hash digest
SHA256 82d2a31b80f12c90885bb1b9d99ba1bcb1408b6afbe20cd5ffc8b73c97ab242b
MD5 d811c2582735451e3388278360cac6f3
BLAKE2b-256 2b7d2c95242d542ca3b6be0c15ef1d3f3aee51d21b81fa711d9fbc76b591c24e

See more details on using hashes here.

Provenance

The following attestation bundles were made for specbox-1.0.0.tar.gz:

Publisher: python-publish.yml on rudolffu/specbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file specbox-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: specbox-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 303.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for specbox-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3e306b28679a7e913c942a726049fb9b6b5368c0aa86322813946bdcb97c2c75
MD5 ece8837a7d35aa9ed777361a175708f5
BLAKE2b-256 05d1c3229600198ff0823ae5ea2af3feb7699875b35ad71cc481dc482076d7d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for specbox-1.0.0-py3-none-any.whl:

Publisher: python-publish.yml on rudolffu/specbox

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page