This PR represents a major and backwards-incompatible rewrite of FastSpecFit. Some of the changes include:
New stellar population synthesis templates which include IR dust (and AGN) emission and nebular line and continuum emission.
Simultaneous fitting of the DESI spectrophotometry jointly with the broadband grzW1-W4 photometry. This mode is now the default, although there is still the option of fitting just the photometry (using a simplified fastphot wrapper).
A robust estimate of the spectroscopic aperture correction.
More robust estimation of the stellar velocity dispersion.
More robust decomposition of broad and narrow line-emission using the Trust Region Reflective (trf) algorithm in scipy.optimize.least_squares, which explicitly takes into account the parameter bounds during the optimization and is more robust.
An additional third round of line-fitting in which many of the 'tied' constraints are relaxed. The choice of which constraints to relax is still tentative.
Full re-write of the emission line modeling infrastructure (away from the astropy.modeling) to prepare for a porting of the code to GPUs.
More accurate K-corrections since the templates now include line-emission.
Significantly improved QA.
Dn(4000) now measured from the emission line subtracted spectrum.
Many additional bug fixes and data model updates.
Still to do, in no particular order, to be done in a companion PR.
[ ] QA should be robust if the viewer cutout server is down.
[ ] fastphot QA needs to be restored.
[ ] Optimize the delta-chi2 cut for allowing broad lines (currently delta-chi2_cut=0). Demand sigma_broad>sigma_narrow.
[ ] Add the option of returning the per-camera spectra.
[x] Update QN thresholds (cf #82).
[x] Evaluate how flux_ivar is calculated and possibly use a profile-weighted sum.
[x] Adopt the fiducial DESI cosmology (cf #88).
[ ] Documentation.
[x] Release the web-app.
By way of a summary, here's one example QA figure:
This PR represents a major and backwards-incompatible rewrite of FastSpecFit. Some of the changes include:
scipy.optimize.least_squares
, which explicitly takes into account the parameter bounds during the optimization and is more robust.astropy.modeling
) to prepare for a porting of the code to GPUs.Still to do, in no particular order, to be done in a companion PR.
sigma_broad>sigma_narrow
.flux_ivar
is calculated and possibly use a profile-weighted sum.By way of a summary, here's one example QA figure: