fiesta.inference#
Components for Bayesian parameter estimation.
Analytical Models#
Base classes, constants, and shared helpers for analytical light-curve models.
Each model is fully JIT-compilable and differentiable so that flowMC’s MALA
sampler can compute jax.grad through the likelihood. The models follow
the same predict() contract as the surrogate models:
(source_frame_times, {filter_name: apparent_mag_array})
This makes them drop-in replacements inside CombinedSurrogate and
EMLikelihood.
All internal physics computations use log10 space to avoid float32 overflow (e.g. explosion energies ~1e49 erg exceed float32 max ~3.4e38).
- class fiesta.inference.analytical_models.base.AnalyticalModel(filters, times=None, temperature_floor=None)[source]#
Bases:
objectBase class for analytical (non-surrogate) light-curve models.
Subclasses must implement
compute_log10_lbol_rphot(self, x, t_days)which returns(log10_Lbol, log10_Rphot)— log10 of bolometric luminosity in erg/s and photospheric radius in cm.- compute_log10_lbol_rphot(x, t_days)[source]#
Return (log10_L_bol, log10_R_phot) arrays at each time in t_days.
L_bol in erg/s, R_phot in cm.
- Return type:
tuple[Array,Array]
- times: Array#
Phenomenological (flux-shape) light-curve models.
- Reference:
Redback: nikhil-sarin/redback Boom: boom-astro/boom
- class fiesta.inference.analytical_models.phenomenological_models.AfterglowModel(filters, times=None)[source]#
Bases:
PhenomenologicalModelSmooth broken power-law afterglow model.
- Reference:
Boom: boom-astro/boom
Transitions from r^(-alpha_1) at early times to r^(-alpha_2) at late times.
Shape parameters: t0, log10_t_break, alpha_1, alpha_2
- class fiesta.inference.analytical_models.phenomenological_models.BazinModel(filters, times=None)[source]#
Bases:
PhenomenologicalModelBazin et al. phenomenological light-curve model.
- Reference:
Boom: boom-astro/boom
Shape: exp(-dt/tau_fall) * sigmoid(dt/tau_rise)
Parameters (per-band): amp_mag_{filter}, base_mag_{filter} Shape parameters: t0, log10_tau_rise, log10_tau_fall
- class fiesta.inference.analytical_models.phenomenological_models.EvolvingBlackbodyModel(filters, times=None, reference_time=1.0)[source]#
Bases:
AnalyticalModelPhenomenological model with piecewise power-law T and R evolution.
- Reference:
Redback: nikhil-sarin/redback
Model-agnostic — useful for fast empirical fitting of any thermal transient. Based on the evolving_blackbody model from Redback.
- Parameters (in
xdict): log10_temperature_0 – log10 initial temperature (K) at reference_time log10_radius_0 – log10 initial radius (cm) at reference_time temp_rise_index – T rise power-law index for t <= temp_peak_time temp_decline_index – T decline power-law index for t > temp_peak_time temp_peak_time – time (days) when temperature peaks radius_rise_index – R rise power-law index for t <= radius_peak_time radius_decline_index – R decline power-law index for t > radius_peak_time radius_peak_time – time (days) when radius peaks
- class fiesta.inference.analytical_models.phenomenological_models.PhenomenologicalModel(filters, times=None)[source]#
Bases:
AnalyticalModelBase class for phenomenological light-curve models.
Unlike physics-based models that compute L_bol + R_phot and pass through a blackbody SED, phenomenological models compute a temporal shape function S(t) and convert directly to per-band apparent magnitudes.
- Subclasses must set:
shape_parameter_names : list[str] — shared temporal shape parameters has_baseline : bool — whether the model has a baseline flux component
and implement
compute_shape(self, x, t_days) -> Array.
- class fiesta.inference.analytical_models.phenomenological_models.PhenomenologicalTDEModel(filters, times=None)[source]#
Bases:
PhenomenologicalModelPhenomenological TDE light-curve model.
- Reference:
Boom: boom-astro/boom
Sigmoid rise with power-law decay.
Shape parameters: t0, log10_tau_rise, log10_tau_fall, alpha_decay
- class fiesta.inference.analytical_models.phenomenological_models.VillarModel(filters, times=None)[source]#
Bases:
PhenomenologicalModelVillar et al. phenomenological light-curve model.
- Reference:
Boom: boom-astro/boom
Piecewise shape with smooth sigmoid transition at gamma.
Shape parameters: t0, log10_tau_rise, log10_tau_fall, beta_slope, log10_gamma
Supernova analytical light-curve models.
- Reference:
Redback: nikhil-sarin/redback NMMA: nuclear-multimessenger-astronomy/nmma
- class fiesta.inference.analytical_models.supernova_models.ArnettModel(filters, times=None, modified=False)[source]#
Bases:
AnalyticalModelArnett (1982) Ni56/Co56-powered supernova bolometric model.
- Reference:
Redback: nikhil-sarin/redback NMMA: nuclear-multimessenger-astronomy/nmma
- Parameters (in
xdict): tau_m – diffusion timescale in days log10_mni – log10 of Ni56 mass in solar masses v_phot – photospheric velocity in units of 1e9 cm/s t_0 – (modified variant only) gamma-ray trapping timescale in days
- class fiesta.inference.analytical_models.supernova_models.CSMInteractionModel(filters, times=None, nn=12, delta=1, efficiency=0.5, temperature_floor=None)[source]#
Bases:
AnalyticalModelCircumstellar medium interaction model (Chevalier 1982).
- Reference:
Redback: nikhil-sarin/redback
Forward + reverse shock luminosity from Chevalier self-similar solution, with optional CSM diffusion.
- Parameters (in
xdict): log10_mej – log10 of ejecta mass in solar masses log10_csm_mass – log10 of CSM mass in solar masses log10_vej – log10 of ejecta velocity in km/s eta – CSM density profile exponent log10_rho – log10 of CSM density amplitude (g/cm^{eta+3}) log10_kappa – log10 of opacity (cm^2/g) log10_r0 – log10 of CSM inner radius in AU
- Constructor kwargs:
nn – ejecta power-law index (default 12) delta – inner density exponent (default 1) efficiency – kinetic-to-luminosity conversion (default 0.5)
- class fiesta.inference.analytical_models.supernova_models.MagnetarPoweredSNModel(filters, times=None, temperature_floor=None)[source]#
Bases:
AnalyticalModelMagnetar spin-down powered supernova with Arnett (1982) diffusion.
- Reference:
Redback: nikhil-sarin/redback
- Parameters (in
xdict): log10_p0 – log10 initial spin period in ms log10_bp – log10 polar B-field in 1e14 G mass_ns – neutron star mass in solar masses theta_pb – angle between spin and B-field in radians log10_mej – log10 of ejecta mass in solar masses log10_vej – log10 of ejecta velocity in km/s log10_kappa – log10 of opacity (cm^2/g) log10_kappa_gamma – log10 of gamma-ray opacity (cm^2/g)
- class fiesta.inference.analytical_models.supernova_models.NickelCobaltModel(filters, times=None, temperature_floor=None)[source]#
Bases:
AnalyticalModelNi56/Co56 radioactive decay with Arnett (1982) diffusion.
- Reference:
Redback: nikhil-sarin/redback
- Parameters (in
xdict): f_nickel – fraction of ejecta mass in Ni56 log10_mej – log10 of ejecta mass in solar masses log10_vej – log10 of ejecta velocity in km/s log10_kappa – log10 of opacity (cm^2/g) log10_kappa_gamma – log10 of gamma-ray opacity (cm^2/g)
Kilonova analytical light-curve models.
- Reference:
Redback: nikhil-sarin/redback NMMA: nuclear-multimessenger-astronomy/nmma
- class fiesta.inference.analytical_models.kilonova_models.MagnetarBoostedKilonovaModel(filters, times=None, neutron_precursor=True, pair_cascade=True, vmax=0.7, magnetar_heating='first_layer')[source]#
Bases:
AnalyticalModelMulti-shell kilonova with magnetar spin-down heating, matching Redback.
- Reference:
Redback: _general_metzger_magnetar_driven_kilonova_model
200-shell ODE with magnetar injection into bottom layer, velocity evolution, optional pair cascade and neutron precursor.
- Parameters (in
xdict): log10_mej – log10 ejecta mass in solar masses log10_vej – log10 ejecta velocity (vmin) in units of c beta – velocity power-law index log10_kappa_r – log10 opacity in cm^2/g log10_p0 – log10 initial spin period in ms log10_bp – log10 polar B-field in 1e14 G mass_ns – neutron star mass in solar masses theta_pb – angle between spin and B-field in radians thermalisation_efficiency – magnetar thermalisation efficiency
- class fiesta.inference.analytical_models.kilonova_models.MetzgerFullModel(filters, times=None, neutron_precursor=True, vmax=0.7)[source]#
Bases:
AnalyticalModelMulti-shell kilonova model (Metzger 2017), matching Redback exactly.
- Reference:
Redback: _metzger_kilonova_model in kilonova_models.py
200 shells with linear velocity spacing, Barnes+16 thermalisation, optional neutron precursor, per-gram energy ODE.
- Parameters (in
xdict): log10_mej – log10 ejecta mass in solar masses log10_vej – log10 ejecta velocity (vmin) in units of c beta – velocity power-law index log10_kappa_r – log10 opacity in cm^2/g
- class fiesta.inference.analytical_models.kilonova_models.MetzgerModel(filters, times=None)[source]#
Bases:
AnalyticalModel300-shell kilonova model matching NMMA
eff_metzger_lc.- Reference:
Redback: nikhil-sarin/redback NMMA: nuclear-multimessenger-astronomy/nmma
- Parameters (in
xdict): log10_mej – log10 ejecta mass in solar masses log10_vej – log10 ejecta velocity in units of c beta – velocity power-law index log10_kappa_r – log10 opacity in cm^2/g
The ODE is solved per-shell in normalized units to avoid float32 overflow. Uses 300 mass shells with velocity profile, neutron fractions, and shell-dependent opacities matching the NMMA implementation.
- class fiesta.inference.analytical_models.kilonova_models.OneComponentKilonovaModel(filters, times=None, temperature_floor=4000.0)[source]#
Bases:
AnalyticalModelSingle-component kilonova with diffusion-integral heating.
- Reference:
Redback: _one_component_kilonova_model in kilonova_models.py
Matches Redback’s cumulative trapezoid algorithm exactly, using a float32-safe damped recurrence that avoids exp(t^2/td^2) overflow.
- Parameters (in
xdict): log10_mej – log10 ejecta mass in solar masses log10_vej – log10 ejecta velocity in units of c log10_kappa – log10 gray opacity in cm^2/g
Shock-powered analytical light-curve models.
- Reference:
Redback: nikhil-sarin/redback NMMA: nuclear-multimessenger-astronomy/nmma
- class fiesta.inference.analytical_models.shock_powered_models.ShockCoolingModel(filters, times=None)[source]#
Bases:
AnalyticalModelShock-cooling emission following Piro (2021).
- Reference:
Redback: nikhil-sarin/redback NMMA: nuclear-multimessenger-astronomy/nmma
- Parameters (all in
xdict): log10_Menv – log10 envelope mass in solar masses log10_Renv – log10 envelope radius in solar radii log10_Ee – log10 explosion energy in erg
- class fiesta.inference.analytical_models.shock_powered_models.ShockedCocoonModel(filters, times=None)[source]#
Bases:
AnalyticalModelAnalytical jet cocoon cooling model.
- Reference:
Redback: nikhil-sarin/redback
Fully algebraic (no ODE) — power-law luminosity decay with diffusion timescale. Based on the shocked cocoon model from Redback.
- Parameters (in
xdict): log10_mej – log10 ejecta mass in solar masses log10_vej – log10 ejecta velocity in units of c eta – slope for ejecta density profile log10_tshock – log10 shock time in seconds shocked_fraction – fraction of ejecta mass shocked cos_theta_cocoon – cosine of cocoon opening angle log10_kappa – log10 gray opacity in cm^2/g
Tidal disruption event (TDE) analytical light-curve models.
- Reference:
Redback: nikhil-sarin/redback
- class fiesta.inference.analytical_models.tde_models.TDEAnalyticalModel(filters, times=None, temperature_floor=None)[source]#
Bases:
AnalyticalModelTDE analytical model with t^{-5/3} fallback + Arnett diffusion.
- Reference:
Redback: nikhil-sarin/redback
- Parameters (in
xdict): log10_l0 – log10 of luminosity at 1 second (erg/s) t_0_turn – turn-on time in days log10_mej – log10 of ejecta mass in solar masses log10_vej – log10 of ejecta velocity in km/s log10_kappa – log10 of opacity (cm^2/g) log10_kappa_gamma – log10 of gamma-ray opacity (cm^2/g)
SALT3 spectral-template supernova model via jax-bandflux.
Uses jax_supernovae (PyPI: jax-bandflux) for JAX-native, JIT-compiled,
differentiable SALT3 light-curve evaluation. Unlike the physics-based models
that compute L_bol + R_phot -> blackbody SED, SALT3 uses spectral templates
(M0, M1, colour law) to compute per-band fluxes directly.
The jax_supernovae import is kept lazy to avoid loading heavy dependencies
for users who don’t use SALT3.
- class fiesta.inference.analytical_models.salt3_models.SALT3Model(filters, times=None, redshift=0.0)[source]#
Bases:
objectSALT3 spectral-template model for Type Ia supernova light curves.
- Parameters:
filters (list[str]) – Band names recognised by
jax_supernovae.bandpasses(e.g."ztfg","ztfr","bessellb").times (Array, optional) – Observer-frame times (days) at which to evaluate the model.
redshift (float) – Source redshift (fixed, not sampled).
predict(x)) (Sampled parameters (passed via) – log10_x0 – log10 of the SALT3 amplitude parameter x0 x1 – SALT3 stretch c – SALT3 colour t0 – time of B-band maximum (days, same frame as times)
- times: Array#
Lightcurve Models#
Store classes to load in trained models and give routines to let them generate lightcurves.
- class fiesta.inference.lightcurve_model.BullaLightcurveModel(*args, **kwargs)[source]#
Bases:
LightcurveModel
- class fiesta.inference.lightcurve_model.CombinedSurrogate(models, sample_times)[source]#
Bases:
SurrogateModel
- class fiesta.inference.lightcurve_model.FluxModel(name, filters, directory=None)[source]#
Bases:
SurrogateModelClass of surrogate models that predicts the 2D spectral flux density array.
- class fiesta.inference.lightcurve_model.LightcurveModel(name, filters, directory=None)[source]#
Bases:
SurrogateModelClass of surrogate models that predicts the magnitudes per filter.
- class fiesta.inference.lightcurve_model.SurrogateModel(name, directory=None)[source]#
Bases:
objectAbstract class for general surrogate models
- compute_output(x)[source]#
Compute the output (untransformed) from the given, transformed input. This is the main method that needs to be implemented by subclasses.
- Parameters:
x (Array) – Input array
- Returns:
Output array
- Return type:
Array
- predict(x)[source]#
Generate the apparent magnitudes from the unnormalized and untransformed input x. Chains the projections with the actual computation of the output. E.g. if the model is a trained surrogate neural network, they represent the map from x tilde to y tilde. The mappings from x to x tilde and y to y tilde take care of projections (e.g. SVD projections) and normalizations.
- project_input(x)[source]#
Project the given input to whatever preprocessed input space we are in. By default (i.e., in this base class), the projection is the identity function.
- Parameters:
x (Array) – Input array
- Returns:
Input array transformed to the preprocessed space.
- Return type:
Array
- project_output(y)[source]#
Project the computed output to whatever preprocessed output space we are in. By default (i.e., in this base class), the projection is the identity function.
- Parameters:
y (Array) – Output array
- Returns:
Output array transformed to the preprocessed space.
- Return type:
Array
- times: Array#
Likelihood#
Functions for computing likelihoods of data given a model.
- class fiesta.inference.likelihood.EMLikelihood(model, data, trigger_time, data_tmin=0.0, data_tmax=999.0, filters=None, error_budget=0.3, conversion_function=<function EMLikelihood.<lambda>>, fixed_params={}, detection_limit=None)[source]#
Bases:
LikelihoodBaseLikelihood object to compute likelihoods for the model parameters and a set of magnitude data points.
- Parameters:
model (LightcurveModel | AnalyticalModel) – Light curve model that generates the estimated light curve from the parameters passed to
evaluate.data (dict[str, Float[Array, "ntimes 3"]]) – Dictionary with photometric filters as keys and arrays as values. The first column of the array are the detection times in MJD. The second column the magnitude data points. The third column are the Gaussian measurement errors. If an error is
np.inf, the data point will be treated as an upper limit on the light curve.trigger_time (Float) – Trigger time or start point of the light curve in MJD.
data_tmin (Float) – Time point (in observer frame, relative to
trigger_time) before any data point fromdatawill be cropped. Defaults to 0.0.data_tmax (
Float, default:999.0) – Time point (in observer frame, relative totrigger_time) after which any data point fromdatawill be cropped. Defaults to 999.0filters (list[str]) – Filters that should be used for the likelihood evaluation. If None, will take filters from
data. Defaults to None.error_budget (Float) – Fixed error budget for the systematic uncertainty. Defaults to 0.3.
conversion_function (Callable) – Function that will be called on the params before
modelpredicts the light curve. Defaults to the idenity.fixed_params (dict[str, Float]) – Fixed parameters. These are added to the params before
modelpredicts the light curve. Defaults to{}.detection_limit (Float) – Detection limit of the telescope. If set, a truncated gaussian likelihood will be used. Defaults to None.
- times_det#
The time points of the detected magnitudes per filter relative to the trigger time.
- times_nondet#
The time points of the non-detected magnitudes (upper limits) per filter relative to the trigger time.
- datapoints_err#
The gaussian measurement error of the detected magnitudes per filter.
- class fiesta.inference.likelihood.FluxLikelihood(model, data, trigger_time, data_tmin=0.0, data_tmax=999.0, filters=None, error_budget=1, conversion_function=<function FluxLikelihood.<lambda>>, fixed_params={}, detection_limit=None, zero_point_mag=16.4)[source]#
Bases:
LikelihoodBaseLikelihood object to compute likelihoods for the model parameters and a set of flux data points. Note that the
datain the input argument still needs to be magnitudes. They will be converted internally to fluxes.- Parameters:
model (LightcurveModel | AnalyticalModel) – Light curve model that generates the estimated light curve from the parameters passed to
evaluate.data (dict[str, Float[Array, "ntimes 3"]]) – Dictionary with photometric filters as keys and arrays as values. The first column of the array are the detection times in MJD. The second column the magnitude data points. The third column are the Gaussian measurement errors. If an error is
np.inf, the data point will be treated as an upper limit on the light curve.trigger_time (Float) – Trigger time or start point of the light curve in MJD.
data_tmin (Float) – Time point (in observer frame, relative to
trigger_time) before any data point fromdatawill be cropped. Defaults to 0.0.data_tmax (
Float, default:999.0) – Time point (in observer frame, relative totrigger_time) after which any data point fromdatawill be cropped. Defaults to 999.0filters (list[str]) – Filters that should be used for the likelihood evaluation. If None, will take filters from
data. Defaults to None.error_budget (Float) – Fixed error budget for the systematic uncertainty. Defaults to 1 mJy.
conversion_function (Callable) – Function that will be called on the params before
modelpredicts the light curve. Defaults to the idenity.fixed_params (dict[str, Float]) – Fixed parameters. These are added to the params before
modelpredicts the light curve. Defaults to{}.detection_limit (Float) – Detection limit of the telescope. If set, a truncated gaussian likelihood will be used. Defaults to None.
zero_point_mag (
Float, default:16.4) – Zero-point for mag-to-flux conversion, specifically to mJy (defaults to 16.4 for AB mag).
- times_det#
The time points of the detected fluxes per filter relative to the trigger time.
- times_nondet#
The time points of the non-detected fluxes (upper limits) per filter relative to the trigger time.
- datapoints_err#
The gaussian measurement error of the detected fluxes per filter.
- class fiesta.inference.likelihood.LikelihoodBase(model, data, trigger_time, data_tmin=0.0, data_tmax=999.0, filters=None, error_budget=0.3, conversion_function=<function LikelihoodBase.<lambda>>, fixed_params={}, detection_limit=None)[source]#
Bases:
objectBase class for likelihoods.
- static compute_gaussian_likelihood(y_est, y_data, sigma, lim)[source]#
Return the log likelihood of the chisquare part of the likelihood function, without truncation (no detection limit is given), i.e. a Gaussian pdf.
- Return type:
Float
- static compute_trunc_gaussian_likelihood(y_est, y_data, sigma, lim)[source]#
Return the log likelihood of the chisquare part of the likelihood function, with truncation of the Gaussian (detection limit is given).
- Return type:
Float
- data_tmax: Float#
- data_tmin: Float#
- evaluate(theta)[source]#
Evaluate the log-likelihood of the data given the parameters in theta and the underlying model.
- Return type:
Float
- get_gaussprob_det(y_est, y_data, sigma, lim)[source]#
Return the log likelihood of the gaussian likelihood function for a single filter. Branch-off of jax.lax.cond is based on provided detection limit (lim). If the limit is infinite, the likelihood is calculated without truncation and without resorting to scipy for faster evaluation. If the limit is finite, the likelihood is calculated with truncation and with scipy.
- Parameters:
y_est (Array) – The estimated data from the model at detection times.
y_data (Array) – The detected data.
sigma (Array) – The uncertainties on the detected apparent magnitudes, including the error budget.
lim (Float) – The detection limit for this filter.
- Returns:
The gaussian log-likelihood for this filter.
- Return type:
Float
- get_gaussprob_nondet(y_est, y_data, error_budget)[source]#
Return the log likelihood of the gaussian likelihood function for a single filter. Branch-off of jax.lax.cond is based on provided detection limit (lim). If the limit is infinite, the likelihood is calculated without truncation and without resorting to scipy for faster evaluation. If the limit is finite, the likelihood is calculated with truncation and with scipy.
- Parameters:
y_est (Array) – The estimated data from the model at detection times.
y_data (Array) – The nondetection data points.
sigma (Array) – The uncertainties on the detected apparent magnitudes, including the error budget.
lim (Float) – The detection limit for this filter.
- Returns:
The gaussian log-likelihood for this filter.
- Return type:
Float
- model: LightcurveModel | AnalyticalModel#
- trigger_time: Float#
Priors#
- class fiesta.inference.prior.CompositePrior(priors, transforms={}, **kwargs)[source]#
Bases:
Prior
- class fiesta.inference.prior.ConstrainedPrior(priors, conversion_function=<function ConstrainedPrior.<lambda>>, transforms={})[source]#
Bases:
CompositePrior- constraints: list[Constraint]#
- factor: Float#
- class fiesta.inference.prior.InterpedPrior(xx, yy, naming)[source]#
Bases:
Prior- xx: Array#
- yy: Array#
- class fiesta.inference.prior.LogUniform(xmin, xmax, naming, transforms={}, **kwargs)[source]#
Bases:
Prior
- class fiesta.inference.prior.Normal(mu, sigma, naming, transforms={}, **kwargs)[source]#
Bases:
Prior
- class fiesta.inference.prior.Prior(naming, transforms={})[source]#
Bases:
objectA thin base clase to do book keeping.
Should not be used directly since it does not implement any of the real method.
The rationale behind this is to have a class that can be used to keep track of the names of the parameters and the transforms that are applied to them.
- property n_dim#
- class fiesta.inference.prior.Sine(naming, xmin=0, xmax=3.141592653589793, transforms={})[source]#
Bases:
Prior
- class fiesta.inference.prior.TruncatedNormal(mu, sigma, xmin, xmax, naming, transforms={}, **kwargs)[source]#
Bases:
PriorTruncated normal distribution with explicit bounds.
Useful for informed priors from population studies (e.g., superphot+). The SVISampler uses xmin/xmax for its guide constraints and mu/sigma for the model’s TruncatedNormal distribution.
- class fiesta.inference.prior.Uniform(xmin, xmax, naming, transforms={}, **kwargs)[source]#
Bases:
Prior
- class fiesta.inference.prior.UniformSourceFrame(dmin, dmax, naming, cosmology=FlatLambdaCDM(name='Planck18', H0=<Quantity 67.66 km / (Mpc s)>, Om0=0.30966, Tcmb0=<Quantity 2.7255 K>, Neff=3.046, m_nu=<Quantity [0., 0., 0.06] eV>, Ob0=0.04897), **kwargs)[source]#
Bases:
InterpedPrior
Systematics#
Sampler#
Utilities#
Functions for creating and handling injections
- class fiesta.inference.injection.InjectionAfterglowpy(jet_type=-1, *args, **kwargs)[source]#
Bases:
InjectionBase
- class fiesta.inference.injection.InjectionBase(filters, trigger_time, tmin=0.1, tmax=10.0, N_datapoints=10, t_detect=None, error_budget=1.0, nondetections=False, nondetections_fraction=0.1, detection_limit=inf)[source]#
Bases:
objectBase class to create synthetic injection lightcurves. The injection model is first initialized with the following parameters:
filters (list): List of filters in which the synthetic data should be given out. trigger_time (float): Reference trigger time (e.g. MJD or GPS seconds) added as an offset to all detection time stamps. Required. tmin (float): Time of earliest synthetic detection possible in days. Defaults to 0.1. tmax (float): Time of latest synthetic detection possible in days. Defaults to 10.0 N_datapoints (int): Total number of datapoints (across all filters) for the synthetic lightcurve. Defaults to 10. t_detect (dict[str, Array]): Detection time points in each filter. If none is specified, then the detection times will be sampled randomly. error_budget (float): Typical measurement error scale of the synthetic data. Defaults to 1. detection_limit (float): Synthetic datapoints with mangnitude higher than this value (i.e. less brighter) will be turned into nondetections. Defaults to np.inf. nondetections (bool): Additional to detection_limit, this turns some of the synthetic datapoints to nondetections. Defaults to False. nondetections_fraction: If nondetections is True, then this will determine the fractions of N_datapoints turned into nondetections. Defaults to 0.1.
Then one can call the .create_injection() method to get synthetic lightcurve data. The method .write_to_file() writes the synthetic lightcurve data to file.
- create_injection(injection_dict, file=None)[source]#
Creates an injection that is stored as a
.dataattribute.- Parameters:
injection_dict (dict) – Parameters for the synthetic light curve.
file (str, optional) – Training data file that stores light curves from the physical base model of the surrogate. If provided, the method will take a random test element and base the injection on it. In this case, the
.injection_parameterattribute is updated to contain the real parameters used to generate the light curve.
- class fiesta.inference.injection.InjectionKN(*args, **kwargs)[source]#
Bases:
InjectionBase
- class fiesta.inference.injection.InjectionPyblastafterglow(jet_type='tophat', *args, **kwargs)[source]#
Bases:
InjectionBase
- class fiesta.inference.injection.InjectionSurrogate(model, *args, **kwargs)[source]#
Bases:
InjectionBaseClass to create synthetic injection lightcurves from a surrogate. After instantiation one can call the .create_injection() method to get synthetic lightcurve data. The method .write_to_file() writes the synthetic lightcurve data to file.
- class fiesta.inference.plot.LightcurvePlotter(posterior, likelihood, systematics_file=None, free_syserr=False)[source]#
Bases:
objectInterface to plot lightcurves from a given posterior.
- Parameters:
posterior (dict | pd.DataFrame) – Posterior samples for which the light curves should be plotted.
likelihood (EMLikelihood) – Likelihood object that was used to sample the posterior.
systematics_file (str) – Systematics file that was used to sample the posterior. Defaults to None.
free_syserr (bool) – Whether a global systematic uncertainty was sampled freely. Defaults to False. Will overwrite systematics_file.
- get_chisquared(per_dof=False)[source]#
Get the total chisquared value and the chisquared values per filter. This is different from the log_likelihood value in the posterior, because the likelihood function contains (2 pi sigma)^(-1/2).
- plot_best_fit_lc(ax, filt, zorder=2, **kwargs)[source]#
Plots one filter from the best fit light curve from the posterior over ax.
- plot_sample_lc(ax, filt, zorder=1)[source]#
Plots background light curves from the posterior over ax.
- fiesta.inference.plot.corner_plot(posterior, parameter_names, truths=None, color='blue', legend_label=None, fig=None, ax=None, **kwargs)[source]#
Make a nice corner plot from the posterior with automated parameter labels.
- Parameters:
posterior (dict | pd.DataFrame) – posterior samples for which to do the corner plot.
parameter_names (list[str]) – parameters from posterior that should be included in the corner plot.
truths (dict[str, float] | None) – True (injected values) for some of the parameters. Defaults to None.
color (str) – color for the corner plot contours. Defaults to blue.
legend_label (str) – Label for the legend. If not set, no legend will be shown. Defaults to None.
fig (matplotlib.figure.Figure) – Figure over which to do the corner plot. If set, ax must also be provided. Defaults to None.
ax (matplotlib.axes.Axes) – Axes over which to do the corner plot. If set, fig must also be provided. Defaults to None.
- Returns:
Figure with the corner plot. ax (matplotlib.axes.Axes): array of axes
- Return type:
fig (matplotlib.figure.Figure)