Parametric fits: BazinFit and VillarFit¶
Parametric fits extract physically motivated parameters from transient flux light curves.
Synthetic SN-like light curve¶
In [ ]:
Copied!
import light_curve as lc
import numpy as np
rng = np.random.default_rng(1)
t = np.linspace(-20, 100, 80)
# Bazin: f(t) = A * exp(-(t-t0)/fall) / (1 + exp(-(t-t0)/rise)) + B
A, t0, rise, fall, B = 100.0, 10.0, 5.0, 25.0, 5.0
flux = A * np.exp(-(t - t0) / fall) / (1 + np.exp(-(t - t0) / rise)) + B
flux_err = np.sqrt(flux) * 0.1
flux += rng.normal(0, flux_err)
print(f'n_obs: {len(t)}, peak flux: {flux.max():.1f}')
import light_curve as lc
import numpy as np
rng = np.random.default_rng(1)
t = np.linspace(-20, 100, 80)
# Bazin: f(t) = A * exp(-(t-t0)/fall) / (1 + exp(-(t-t0)/rise)) + B
A, t0, rise, fall, B = 100.0, 10.0, 5.0, 25.0, 5.0
flux = A * np.exp(-(t - t0) / fall) / (1 + np.exp(-(t - t0) / rise)) + B
flux_err = np.sqrt(flux) * 0.1
flux += rng.normal(0, flux_err)
print(f'n_obs: {len(t)}, peak flux: {flux.max():.1f}')
n_obs: 80, peak flux: 65.6
BazinFit¶
Fits a rising/falling exponential (Bazin function) with 5 free parameters: ( f(t) = A \cdot e^{-(t-t_0)/t_\text{fall}} / (1 + e^{-(t-t_0)/t_\text{rise}}) + B )
Output: amplitude, rise time, fall time, reference time, baseline, and reduced (\chi^2).
In [ ]:
Copied!
fit = lc.BazinFit(algorithm='mcmc-ceres')
result = fit(t, flux, flux_err)
for name, val in zip(fit.names, result):
print(f' {name:30s} = {val:.4f}')
fit = lc.BazinFit(algorithm='mcmc-ceres')
result = fit(t, flux, flux_err)
for name, val in zip(fit.names, result):
print(f' {name:30s} = {val:.4f}')
VillarFit¶
Fits the Villar function — a more flexible Gaussian+plateau model for SN classification with 7 parameters:
In [ ]:
Copied!
vfit = lc.VillarFit(algorithm='ceres')
result_v = vfit(t, flux, flux_err)
for name, val in zip(vfit.names, result_v):
print(f' {name:30s} = {val:.4f}')
vfit = lc.VillarFit(algorithm='ceres')
result_v = vfit(t, flux, flux_err)
for name, val in zip(vfit.names, result_v):
print(f' {name:30s} = {val:.4f}')
Notes¶
- Both features operate on flux light curves (not magnitude). Use positive flux values.
- Available solvers:
'ceres'(fast, gradient),'mcmc-ceres'(MCMC + refinement),'lmsder'(requires GSL). - See also
LinexpFitfor the linear-exponential model. - API reference