Skip to content

Commit

Permalink
update change log; a few other small fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
moustakas committed Aug 2, 2023
1 parent 9d15d5f commit db857e9
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 20 deletions.
3 changes: 3 additions & 0 deletions doc/changes.rst
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,16 @@ Change Log
* Switch from (deprecated) ``pkg_resources`` to ``importlib``.
* Updated documentation (data model) and several non-negligible speed-ups.

* Improved modeling of galaxies with broad+narrow line-emission [`PR #142`_]:

.. _`PR #115`: https://github.com/desihub/fastspecfit/pull/115
.. _`PR #116`: https://github.com/desihub/fastspecfit/pull/116
.. _`PR #120`: https://github.com/desihub/fastspecfit/pull/120
.. _`PR #132`: https://github.com/desihub/fastspecfit/pull/132
.. _`PR #135`: https://github.com/desihub/fastspecfit/pull/135
.. _`PR #136`: https://github.com/desihub/fastspecfit/pull/136
.. _`PR #137`: https://github.com/desihub/fastspecfit/pull/137
.. _`PR #142`: https://github.com/desihub/fastspecfit/pull/142

2.1.2 (2023-04-01)
------------------
Expand Down
2 changes: 1 addition & 1 deletion doc/fastspec.rst
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ Name Type Units Descript
FHBETA_CONT float32 1e-17 erg / (Angstrom cm2 s) Continuum flux at 4862.683 A in the rest-frame.
FOIII_5007_CONT float32 1e-17 erg / (Angstrom cm2 s) Continuum flux at 5008.239 A in the rest-frame.
FHALPHA_CONT float32 1e-17 erg / (Angstrom cm2 s) Continuum flux at 6564.613 A in the rest-frame.
RCHI2_LINE float32 Reduced chi-squared of an emission-line model fit.
RCHI2_LINE float32 Reduced chi-squared of the emission-line model fit.
DELTA_LINECHI2 float32 Chi-squared difference between an emission-line model without and with broad lines.
DELTA_LINENDOF int32 Difference in the degrees of freedom between an emission-line model without and with broad lines.
APERCORR float32 Median aperture correction factor.
Expand Down
32 changes: 14 additions & 18 deletions py/fastspecfit/emlines.py
Original file line number Diff line number Diff line change
Expand Up @@ -222,17 +222,15 @@ def __init__(self, minspecwave=3500.0, maxspecwave=9900.0, targetid=None):
self.sigma_param_bool = np.array(['_sigma' in pp for pp in self.param_names])
self.vshift_param_bool = np.array(['_vshift' in pp for pp in self.param_names])

self.sigma_param_bool2 = np.zeros(len(self.param_names), bool)
self.vshift_param_bool2 = np.zeros(len(self.param_names), bool)
for pp in self.param_names[self.amp_param_bool]:
self.sigma_param_bool2[np.where(pp.replace('_amp', '_sigma') == self.param_names)[0]] = True
self.vshift_param_bool2[np.where(pp.replace('_amp', '_vshift') == self.param_names)[0]] = True
#self.sigma_param_bool2 = np.zeros(len(self.param_names), bool)
#self.vshift_param_bool2 = np.zeros(len(self.param_names), bool)
#for pp in self.param_names[self.amp_param_bool]:
# self.sigma_param_bool2[np.where(pp.replace('_amp', '_sigma') == self.param_names)[0]] = True
# self.vshift_param_bool2[np.where(pp.replace('_amp', '_vshift') == self.param_names)[0]] = True

self.doubletindx = np.hstack([np.where(self.param_names == doublet)[0] for doublet in doublet_names])
self.doubletpair = np.hstack([np.where(self.param_names == pair)[0] for pair in doublet_pairs])

#self.delta_linerchi2_cut = 0.0
#self.minsnr_balmer_broad = 3.0
self.minsigma_balmer_broad = 250.0 # minimum broad-line sigma [km/s]

def build_linemodels(self, redshift, wavelims=[3000, 10000], verbose=False, strict_finalmodel=True):
Expand Down Expand Up @@ -1638,8 +1636,6 @@ def qa_fastspec(self, data, fastspec, metadata, coadd_type='healpix',
leg_uv['mgii_doublet'] = 'MgII $\lambda2796/\lambda2803={:.3f}$'.format(fastspec['MGII_DOUBLET_RATIO'])

leg_broad['linerchi2'] = '$\\chi^{{2}}_{{\\nu,\\rm line}}$={:.2f}'.format(fastspec['RCHI2_LINE'])
#leg_broad['deltarchi2'] = '$\\chi^{{2}}_{{\\nu,\\rm narrow}}-\\chi^{{2}}_{{\\nu,\\rm narrow+broad}}={:.3f}$'.format(fastspec['DELTA_LINERCHI2'])
#if fastspec['DELTA_LINERCHI2'] != 0:
leg_broad['deltarchi2'] = '$\\Delta\\chi^{{2}}_{{\\nu,\\rm nobroad}}={:.2f}$'.format(fastspec['DELTA_LINERCHI2'])

# choose one broad Balmer line
Expand Down Expand Up @@ -2509,37 +2505,37 @@ def emline_specfit(data, templatecache, result, continuummodel, smooth_continuum
# --broad_sigma < 250

dchi2test = delta_linechi2_balmer > delta_linendof_balmer
Hanarrow = broadfit['param_name'] == 'halpha_sigma' # Balmer lines are tied to H-alpha even if out of range
Habroad = broadfit['param_name'] == 'halpha_broad_sigma'
sigtest1 = broadfit[Habroad]['value'][0] > EMFit.minsigma_balmer_broad
sigtest2 = (broadfit[Habroad]['value'] > broadfit[broadfit['param_name'] == 'halpha_sigma']['value'])[0]
sigtest2 = (broadfit[Habroad]['value'] > broadfit[Hanarrow]['value'])[0]

if dchi2test and sigtest1 and sigtest2:
log.info('Adopting broad-line model: delta-chi2={:.1f} > delta-ndof={:.0f} (sigma={:.2f} km/s)'.format(
delta_linechi2_balmer, delta_linendof_balmer, broadfit[Habroad]['value'][0]))
log.info('Adopting broad-line model: delta-chi2={:.1f} > delta-ndof={:.0f} (sigma_broad={:.1f} km/s, sigma_narrow={:.1f} km/s)'.format(
delta_linechi2_balmer, delta_linendof_balmer, broadfit[Habroad]['value'][0], broadfit[Hanarrow]['value'][0]))
bestfit = broadfit
use_linemodel_broad = True
else:
if dchi2test == False:
log.info('Dropping broad-line model: delta-chi2={:.1f} < delta-ndof={:.0f}'.format(
delta_linechi2_balmer, delta_linendof_balmer))
elif sigtest1 == False:
log.info('Dropping broad-line model: Halpha_broad_sigma {:.2f} km/s < {:.0f} km/s (delta-chi2={:.1f}, delta-ndof={:.0f}).'.format(
log.info('Dropping broad-line model: Halpha_broad_sigma {:.1f} km/s < {:.0f} km/s (delta-chi2={:.1f}, delta-ndof={:.0f}).'.format(
broadfit[Habroad]['value'][0], EMFit.minsigma_balmer_broad, delta_linechi2_balmer, delta_linendof_balmer))
elif sigtest2 == False:
log.info('Dropping broad-line model: Halpha_broad_sigma {:.2f} km/s < Halpha_narrow_sigma {:.2f} km/s (delta-chi2={:.1f}, delta-ndof={:.0f}).'.format(
broadfit[Habroad]['value'][0], broadfit[broadfit['param_name'] == 'halpha_sigma']['value'][0],
delta_linechi2_balmer, delta_linendof_balmer))
log.info('Dropping broad-line model: Halpha_broad_sigma {:.1f} km/s < Halpha_narrow_sigma {:.1f} km/s (delta-chi2={:.1f}, delta-ndof={:.0f}).'.format(
broadfit[Habroad]['value'][0], broadfit[Hanarrow]['value'][0], delta_linechi2_balmer, delta_linendof_balmer))
bestfit = initfit
use_linemodel_broad = False
else:
log.info('Insufficient Balmer lines to test the broad-line model.')
bestfit = initfit
delta_linechi2_balmer, delta_linendof_balmer = 1e6, int(1e6)
delta_linechi2_balmer, delta_linendof_balmer = 0, np.int32(0)
use_linemodel_broad = False
else:
log.info('Skipping broad-line fitting (broadlinefit=False).')
bestfit = initfit
delta_linechi2_balmer, delta_linendof_balmer = 1e6, int(1e6)
delta_linechi2_balmer, delta_linendof_balmer = 0, np.int32(0)
use_linemodel_broad = False

# Finally, one more fitting loop with all the line-constraints relaxed
Expand Down
2 changes: 1 addition & 1 deletion py/fastspecfit/io.py
Original file line number Diff line number Diff line change
Expand Up @@ -1637,7 +1637,7 @@ def init_fastspec_output(input_meta, specprod, templates=None, ncoeff=None,
#out.add_column(Column(name='NDOF_LINE', length=nobj, dtype='i8')) # number of degrees of freedom corresponding to rchi2_line
#out.add_column(Column(name='DOF_BROAD', length=nobj, dtype='i8'))
out.add_column(Column(name='DELTA_LINECHI2', length=nobj, dtype='f4')) # delta-reduced chi2 with and without broad line-emission
out.add_column(Column(name='DELTA_LINENDOF', length=nobj, dtype='i8'))
out.add_column(Column(name='DELTA_LINENDOF', length=nobj, dtype=np.int32))

# aperture corrections
out.add_column(Column(name='APERCORR', length=nobj, dtype='f4')) # median aperture correction
Expand Down

0 comments on commit db857e9

Please sign in to comment.