Skip to content

Commit a195a9a

Browse files
committed
blarg, one more fix
1 parent b512832 commit a195a9a

File tree

1 file changed

+10
-5
lines changed

1 file changed

+10
-5
lines changed

py/fastspecfit/emlines.py

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -757,15 +757,12 @@ def populate_emtable(self, result, linemodel, emlineflux_model,
757757
dpixwave = median(np.diff(emlinewave)) # median pixel size [Angstrom]
758758

759759
# Convenience variables for the fitted parameters.
760-
#param_names = self.param_table['name'].value
761-
#param_lines = self.param_table['line'].value
762760
param_modelnames = self.param_table['modelname'].value
763761
param_types = self.param_table['type'].value
764762

765763
iamp = param_types == ParamType.AMPLITUDE
766764
free_doublet_src = self.line_table['doublet_src'].value
767765
tied_doublet_src = linemodel['tiedtoparam'][iamp].value
768-
#tied_doublet_factor = linemodel['tiedfactor'][iamp].value
769766

770767
def get_boundaries(A, v_lo, v_hi):
771768
"""Find range (lo, hi) such that all pixels of A in range [v_lo,
@@ -832,12 +829,18 @@ def get_continuum_pixels(emlinewave_s, linezwave, linesigma_ang_window):
832829
values = linemodel['value'].value
833830
obsamps = linemodel.meta['obsamps']
834831

832+
parameters = values.copy()
833+
parameters[self.doublet_idx] *= parameters[self.doublet_src]
834+
835835
if results_monte is not None:
836836
values_monte, obsamps_monte, emlineflux_monte, specflux_nolines_monte = results_monte
837837

838838
values_var = np.var(values_monte, axis=0)
839839
obsamps_var = np.var(obsamps_monte, axis=0)
840840

841+
parameters_monte = values_monte.copy()
842+
parameters_monte[:, self.doublet_idx] *= parameters_monte[:, self.doublet_src]
843+
841844
emlineflux_monte_s = emlineflux_monte[:, Wsrt]
842845
specflux_nolines_monte_s = specflux_nolines_monte[:, Wsrt]
843846

@@ -890,7 +893,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
890893
# require amp > 0 (line not dropped) to compute the flux
891894
if obsamps[line_amp] > TINY:
892895
# analytically integrated flux
893-
flux = np.sqrt(2. * np.pi) * values[line_amp] * linezwave * linesigma0 / C_LIGHT
896+
flux = np.sqrt(2. * np.pi) * parameters[line_amp] * linezwave * linesigma0 / C_LIGHT
894897

895898
# next, get the continuum level
896899
borderindx = get_continuum_pixels(emlinewave_s, linezwave, linesigma_ang_window)
@@ -914,6 +917,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
914917
# zero out out-of-range lines
915918
if not self.line_in_range[iline]:
916919
obsamps[line_amp] = 0.
920+
parameters[line_amp] = 0.
917921
values[line_amp] = 0.
918922
values[line_vshift] = 0.
919923
values[line_sigma] = 0.
@@ -946,6 +950,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
946950
# line.
947951
if npix == 0:
948952
obsamps[line_amp] = 0.
953+
parameters[line_amp] = 0.
949954
values[line_amp] = 0.
950955
values[line_vshift] = 0.
951956
values[line_sigma] = 0.
@@ -957,7 +962,7 @@ def get_fluxes(values, obsamps, emlineflux_s, specflux_nolines_s,
957962
result[f'{linename}_AMP'] = obsamps[line_amp]
958963
result[f'{linename}_VSHIFT'] = values[line_vshift]
959964
result[f'{linename}_SIGMA'] = values[line_sigma]
960-
result[f'{linename}_MODELAMP'] = values[line_amp]
965+
result[f'{linename}_MODELAMP'] = parameters[line_amp]
961966

962967
result[f'{linename}_BOXFLUX'] = boxflux
963968
result[f'{linename}_FLUX'] = flux

0 commit comments

Comments
 (0)