Skip to content

Roadmap #3

@mileslucas

Description

@mileslucas

Below is a broad-strokes road map of the design of Spectra.jl

Types

General spectrum types

  • AbstractSpectrum
  • Spectrum <: AbstractSpectrum
    This would be a type very similar to python's SpecUtils.spectrum1d. It contains a spectral axis (wavelength) and flux. This flux could be signified with a standard array or a Measurements.jl array signifying measurement uncertainty. Note that this is a design choice over having an explicit sigma array within the Spectrum type.
  • CountSpectrum <: Spectrum
    Similar to the above but carries an extra array around with the counts such that proper addition between spectra could happen.
  • EchelleSpectrum <: AbstractSpectrum
    Not sure the best way to implement this. It seems like a natural extension of Spectrum but into two dimensions. Is it appropriate to keep this a separate type, or should Spectrum have an intrinsic dimension and an echelle spectrum would just be a Spectrum{..., 2}

These types should be easy to create and have decent interoperability with FITSIO.jl and WCS.jl.

Operations

I would definitely enjoy some input on these, I have limited experience

  • Extinction
    Use DustExtinction.jl
  • Broadening
    • Instrumental
    • Rotational
      In general, I'm not certain whether it's appropriate to put these explicitly here or put the underlying broadening mechanics in AstroBase and provide the explicit instrumental or rotational broadening ops here (cc @giordano).
  • Doppler Shift
  • Resampling
    Currently using Interpolations.jl but running into some problems. May switch to Diereckx.jl. It will be nice to have a function that can resample to a minimum doppler content. The way I've implemented this before is to determine the minimal $\Delta \nu$ and create a subsequent log-lambda spaced grid.
  • Rescale
    A few ideas- rescale to a given integrated flux (as a value) or to another spectrum. Can optionally use a bandpass to only scale in a certain area (see photometry below)
  • Photometry
    This would be similar to what PySynphot offers, where a user specifies a bandpass (either a standard like V or HST-OIII, or a Distributions-like object with a pdf) and we can get the respective integrated flux density.

Spectral Library Interface

I'm not certain if this is appropriate here or in a separate package, but it would be nice to have standardized interfaces to common model libraries (like PHOENIX). My gut says this should be a different package, but I'm not convinced yet. For an example of such an interface take a look at the work I've done here.

Metadata

Metadata

Assignees

No one assigned

    Labels

    planningThis is a discussion about the code and implementations.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions