-
Notifications
You must be signed in to change notification settings - Fork 3
Open
Labels
planningThis is a discussion about the code and implementations.This is a discussion about the code and implementations.
Description
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'sSpecUtils.spectrum1d. It contains a spectral axis (wavelength) and flux. This flux could be signified with a standard array or aMeasurements.jlarray signifying measurement uncertainty. Note that this is a design choice over having an explicitsigmaarray within theSpectrumtype. -
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 ofSpectrumbut into two dimensions. Is it appropriate to keep this a separate type, or shouldSpectrumhave an intrinsic dimension and an echelle spectrum would just be aSpectrum{..., 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
UseDustExtinction.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 inAstroBaseand provide the explicit instrumental or rotational broadening ops here (cc @giordano).
- Doppler Shift
- Resampling
Currently usingInterpolations.jlbut running into some problems. May switch toDiereckx.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 whatPySynphotoffers, where a user specifies a bandpass (either a standard likeVorHST-OIII, or aDistributions-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
Labels
planningThis is a discussion about the code and implementations.This is a discussion about the code and implementations.