redback 1.0.2__py3-none-any.whl → 1.0.31__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. redback/__init__.py +1 -1
  2. redback/constraints.py +15 -0
  3. redback/eos.py +1 -0
  4. redback/get_data/fink.py +1 -1
  5. redback/model_library.py +2 -2
  6. redback/priors/bazin_sne.prior +5 -0
  7. redback/priors/csm_shock_and_arnett.prior +11 -0
  8. redback/priors/csm_shock_and_arnett_bolometric.prior +10 -0
  9. redback/priors/csm_shock_breakout.prior +7 -0
  10. redback/priors/nicholl_bns.prior +2 -1
  11. redback/priors/pwn.prior +7 -0
  12. redback/priors/shocked_cocoon.prior +6 -6
  13. redback/priors/sn_fallback.prior +8 -0
  14. redback/priors/stream_stream_tde.prior +10 -0
  15. redback/priors/stream_stream_tde_bolometric.prior +9 -0
  16. redback/priors/tde_fallback.prior +9 -0
  17. redback/priors/tde_fallback_bolometric.prior +6 -0
  18. redback/priors/tde_synchrotron.prior +6 -0
  19. redback/priors/two_comp_kne_rosswog_heatingrate.prior +2 -2
  20. redback/priors/villar_sne.prior +7 -0
  21. redback/priors.py +1 -1
  22. redback/simulate_transients.py +11 -4
  23. redback/tables/GRBs_w_redshift.txt +430 -413
  24. redback/tables/LGRB_table.txt +70 -6
  25. redback/tables/SGRB_table.txt +139 -135
  26. redback/tables/qdot_rosswogkorobkin24.pck +0 -0
  27. redback/transient/afterglow.py +14 -5
  28. redback/transient/kilonova.py +5 -2
  29. redback/transient/prompt.py +14 -4
  30. redback/transient/supernova.py +6 -2
  31. redback/transient/tde.py +5 -2
  32. redback/transient/transient.py +27 -10
  33. redback/transient_models/afterglow_models.py +110 -146
  34. redback/transient_models/combined_models.py +39 -33
  35. redback/transient_models/extinction_models.py +1 -2
  36. redback/transient_models/general_synchrotron_models.py +518 -0
  37. redback/transient_models/integrated_flux_afterglow_models.py +2 -2
  38. redback/transient_models/kilonova_models.py +88 -72
  39. redback/transient_models/magnetar_models.py +1 -1
  40. redback/transient_models/phenomenological_models.py +57 -2
  41. redback/transient_models/shock_powered_models.py +159 -110
  42. redback/transient_models/supernova_models.py +161 -7
  43. redback/transient_models/tde_models.py +849 -4
  44. redback/utils.py +28 -12
  45. {redback-1.0.2.dist-info → redback-1.0.31.dist-info}/METADATA +42 -5
  46. {redback-1.0.2.dist-info → redback-1.0.31.dist-info}/RECORD +49 -35
  47. {redback-1.0.2.dist-info → redback-1.0.31.dist-info}/WHEEL +1 -1
  48. {redback-1.0.2.dist-info → redback-1.0.31.dist-info}/LICENCE.md +0 -0
  49. {redback-1.0.2.dist-info → redback-1.0.31.dist-info}/top_level.txt +0 -0
redback/__init__.py CHANGED
@@ -4,5 +4,5 @@ from redback.transient import afterglow, kilonova, prompt, supernova, tde
4
4
  from redback.sampler import fit_model
5
5
  from redback.utils import setup_logger
6
6
 
7
- __version__ = "1.0.2"
7
+ __version__ = "1.0.31"
8
8
  setup_logger(log_level='info')
redback/constraints.py CHANGED
@@ -65,6 +65,21 @@ def general_magnetar_powered_sn_constraints(parameters):
65
65
  converted_parameters['erot_constraint'] = kinetic_energy/rotational_energy
66
66
  return converted_parameters
67
67
 
68
+ def vacuum_dipole_magnetar_powered_supernova_constraints(parameters):
69
+ """
70
+ Constraint so that magnetar rotational energy is smaller than some number
71
+
72
+ :param parameters: dictionary of parameters
73
+ :return: converted_parameters dictionary where the violated samples are thrown out
74
+ """
75
+ converted_parameters = parameters.copy()
76
+ l0 = parameters['l0']
77
+ tau = parameters['tau_sd']
78
+ rotational_energy = l0*tau
79
+ # ensure rotational energy is less than the maximum spin down energy
80
+ converted_parameters['erot_constraint'] = rotational_energy/1e53
81
+ return converted_parameters
82
+
68
83
  def general_magnetar_powered_supernova_constraints(parameters):
69
84
  """
70
85
  Constraint so that magnetar rotational energy is smaller than some number
redback/eos.py CHANGED
@@ -78,6 +78,7 @@ class PiecewisePolytrope(object):
78
78
  radius, mass, k2 = lalsim.SimNeutronStarTOVODEIntegrate(central_pressure, polytrope)
79
79
 
80
80
  Lambda = (2 / 3) * k2 * (cc.c.si.value ** 2 * radius / (cc.G.si.value * mass)) ** 5
81
+ mass = mass / cc.M_sun.si.value
81
82
  return mass, Lambda
82
83
 
83
84
  def lambda_array_of_central_pressure(self, central_pressure_array, maximum_mass_lower_limit=2.01):
redback/get_data/fink.py CHANGED
@@ -45,7 +45,7 @@ class FinkDataGetter(DataGetter):
45
45
  :return: The fink raw data url.
46
46
  :rtype: str
47
47
  """
48
- return "https://fink-portal.org/api/v1/objects"
48
+ return "https://api.fink-portal.org/api/v1/objects"
49
49
 
50
50
  @property
51
51
  def objectId(self) -> str:
redback/model_library.py CHANGED
@@ -1,13 +1,13 @@
1
1
  from redback.transient_models import afterglow_models, \
2
2
  extinction_models, kilonova_models, fireball_models, \
3
3
  gaussianprocess_models, magnetar_models, magnetar_driven_ejecta_models, phase_models, phenomenological_models, \
4
- prompt_models, shock_powered_models, supernova_models, tde_models, integrated_flux_afterglow_models, combined_models
4
+ prompt_models, shock_powered_models, supernova_models, tde_models, integrated_flux_afterglow_models, combined_models, general_synchrotron_models
5
5
  from redback.utils import get_functions_dict
6
6
 
7
7
  modules = [afterglow_models, extinction_models, fireball_models,
8
8
  gaussianprocess_models, integrated_flux_afterglow_models, kilonova_models,
9
9
  magnetar_models, magnetar_driven_ejecta_models,
10
- phase_models, phenomenological_models, prompt_models, shock_powered_models, supernova_models, tde_models, combined_models]
10
+ phase_models, phenomenological_models, prompt_models, shock_powered_models, supernova_models, tde_models, combined_models, general_synchrotron_models]
11
11
 
12
12
  all_models_dict = dict()
13
13
  modules_dict = dict()
@@ -0,0 +1,5 @@
1
+ aa = LogUniform(1e-15,1e15,name='aa', latex_label = r'$A$')
2
+ bb = LogUniform(1e-15,1e15,name='bb', latex_label = r'$B$')
3
+ t0 = Uniform(0,50,name='t0', latex_label = r'$t_0$')
4
+ tau_rise = Uniform(0.01, 50, name='tau_rise', latex_label = r'$\\tau_{\\mathrm{rise}}$')
5
+ tau_fall = Uniform(1, 300, name='tau_fall', latex_label = r'$\\tau_{\\mathrm{fall}}$')
@@ -0,0 +1,11 @@
1
+ redshift = Uniform(0.01, 1, 'redshift', latex_label=r'$z$')
2
+ mej = LogUniform(1e-4, 30, 'mej', latex_label = r'$M_{\mathrm{ej}}~(M_\odot)$')
3
+ f_nickel = LogUniform(1e-3,1,name='f_nickel', latex_label = r'$f_{\mathrm{Ni}}$')
4
+ csm_mass = LogUniform(1e-3, 5, 'csm_mass', latex_label=r'$M_{\mathrm{CSM}}~(M_{\odot})$')
5
+ v_min = LogUniform(1e3, 3e4, 'vej', latex_label = r'$v_{\mathrm{ej}}~(\mathrm{km}/\mathrm{s})$')
6
+ beta = Uniform(0.4, 0.5, 'beta', latex_label=r'$\\beta$')
7
+ kappa = Uniform(0.01, 1, 'kappa', latex_label = r'$\\kappa~(\mathrm{cm}^{2}/\mathrm{g})$')
8
+ shell_radius = Uniform(1e-2, 10, 'shell_radius', latex_label=r'$R_{\mathrm{shell}}~(10^{14}~\mathrm{cm})$')
9
+ shell_width_ratio = Uniform(0.1, 0.5, 'shell_width_ratio', latex_label=r'$\\Delta~R_{\mathrm{shell}}/R_{\mathrm{shell}}$')
10
+ kappa_gamma = LogUniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\\kappa_{\\gamma}~(\mathrm{cm}^{2}/\mathrm{g})$')
11
+ temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}~(\mathrm{K})$')
@@ -0,0 +1,10 @@
1
+ mej = LogUniform(1e-4, 30, 'mej', latex_label = r'$M_{\mathrm{ej}}~(M_\odot)$')
2
+ f_nickel = LogUniform(1e-3,1,name='f_nickel', latex_label = r'$f_{\mathrm{Ni}}$')
3
+ csm_mass = LogUniform(1e-3, 5, 'csm_mass', latex_label=r'$M_{\mathrm{CSM}}~(M_{\odot})$')
4
+ v_min = LogUniform(1e3, 3e4, 'vej', latex_label = r'$v_{\mathrm{ej}}~(\mathrm{km}/\mathrm{s})$')
5
+ beta = Uniform(0.4, 0.5, 'beta', latex_label=r'$\\beta$')
6
+ kappa = Uniform(0.01, 1, 'kappa', latex_label = r'$\\kappa~(\mathrm{cm}^{2}/\mathrm{g})$')
7
+ shell_radius = Uniform(1e-2, 10, 'shell_radius', latex_label=r'$R_{\mathrm{shell}}~(10^{14}~\mathrm{cm})$')
8
+ shell_width_ratio = Uniform(0.1, 0.5, 'shell_width_ratio', latex_label=r'$\\Delta~R_{\mathrm{shell}}/R_{\mathrm{shell}}$')
9
+ kappa_gamma = LogUniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\\kappa_{\\gamma}~(\mathrm{cm}^{2}/\mathrm{g})$')
10
+ temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}~(\mathrm{K})$')
@@ -0,0 +1,7 @@
1
+ redshift = Uniform(0.01, 1, 'redshift', latex_label=r'$z$')
2
+ csm_mass = LogUniform(1e-3, 2, 'csm_mass', latex_label=r'$M_{\mathrm{CSM}}~(M_{\odot})$')
3
+ v_min = LogUniform(1e3, 3e4, 'vej', latex_label = r'$v_{\mathrm{ej}}~(\mathrm{km}/\mathrm{s})$')
4
+ beta = Uniform(0.4, 0.5, 'beta', latex_label=r'$\\beta$')
5
+ kappa = Uniform(0.01, 1, 'kappa', latex_label = r'$\\kappa~(\mathrm{cm}^{2}/\mathrm{g})$')
6
+ shell_radius = Uniform(1e-2, 10, 'shell_radius', latex_label=r'$R_{\mathrm{shell}}~(10^{14}~\mathrm{cm})$')
7
+ shell_width_ratio = Uniform(0.1, 0.5, 'shell_width_ratio', latex_label=r'$\\Delta~R_{\mathrm{shell}}/R_{\mathrm{shell}}$')
@@ -8,7 +8,8 @@ mtov = Uniform(2.05, 2.4, 'mtov', latex_label = r'$M_{\mathrm{TOV}}~(M_\odot)$')
8
8
  epsilon = Uniform(0.05, 0.6, 'zeta', latex_label = r'$\\epsilon$')
9
9
  alpha = Uniform(0.1, 1, 'alpha', latex_label = r'$\\alpha$')
10
10
  cos_theta = Uniform(0.0, 1.0, 'cos_theta', latex_label = r'$\cos~\\theta$')
11
- cos_theta_cocoon = Uniform(0.707, 1.0, 'cos_theta_cocoon', latex_label = r'$\cos~\\theta_{\mathrm{cocoon}}$')
11
+ cos_theta_open = Uniform(0.707, 0.866, 'cos_theta_open', latex_label = r'$\cos~\\theta_{\mathrm{open}}$')
12
+ cos_theta_cocoon = Uniform(0.866, 1.0, 'cos_theta_cocoon', latex_label = r'$\cos~\\theta_{\mathrm{cocoon}}$')
12
13
  temperature_floor_1 = LogUniform(100, 6000, 'temperature_floor_1', latex_label = r'$T_{\mathrm{floor}~1}$ (K)')
13
14
  temperature_floor_2 = LogUniform(100, 6000, 'temperature_floor_2', latex_label = r'$T_{\mathrm{floor}~2}$ (K)')
14
15
  temperature_floor_3 = LogUniform(100, 6000, 'temperature_floor_3', latex_label = r'$T_{\mathrm{floor}~3}$ (K)')
@@ -0,0 +1,7 @@
1
+ redshift = Uniform(1e-6,3,name='redshift', latex_label = r'$z$')
2
+ l0 = LogUniform(1e40, 1e50, 'l0', latex_label = r'$L_{\mathrm{0}} [erg s^{-1}]$')
3
+ tau_sd = LogUniform(1e2, 1e8, 'tau_sd', latex_label = r'$t_{\mathrm{SD}} [s]$')
4
+ nn = LogUniform(1.5, 10, 'nn', latex_label = r'$n$')
5
+ mej = LogUniform(1e-1, 100, 'mej', latex_label = r'$M_{\mathrm{ej}} [M_{\odot}]$')
6
+ eps_b = LogUniform(1e-7, 1, 'eps_b', latex_label = r'$\epsilon_{\mathrm{B}}$')
7
+ gamma_b = LogUniform(1e2, 1e7, 'gamma_b', latex_label = r'$\gamma_{\mathrm{b}}$')
@@ -1,8 +1,8 @@
1
1
  redshift = Uniform(1e-3,3,name='redshift', latex_label = r'$z$')
2
- mej = Uniform(1e-4, 0.1, 'mej', latex_label = r'$M_{\mathrm{ej} }~(M_\odot)$')
3
- vej = Uniform(0.1, 0.7, 'vej', latex_label = r'$v_{\mathrm{ej}}~(c)$')
2
+ mej = Uniform(1e-4, 0.2, 'mej', latex_label = r'$M_{\mathrm{ej} }~(M_\odot)$')
3
+ vej = Uniform(0.01, 0.7, 'vej', latex_label = r'$v_{\mathrm{ej}}~(c)$')
4
4
  eta = Uniform(1, 5, '\\eta', latex_label = r'$\\eta$')
5
- tshock = Uniform(1, 2, 'tshock', latex_label = r'$t_{\mathrm{shock}}~(\mathrm{s})$')
6
- shocked_fraction = Uniform(0.1, 1, 'shocked_fraction', latex_label = r'$f_{\mathrm{shocked}}$')
7
- cos_theta_cocoon = Uniform(0.2, 0.9, 'cos_theta_cocoon', latex_label = r'$\cos~\\theta_{\mathrm{cocoon}}$')
8
- kappa = Uniform(1, 30, 'kappa', latex_label = r'$\\kappa~(\mathrm{cm}^{2}/\mathrm{g})$')
5
+ tshock = Uniform(0.1, 10, 'tshock', latex_label = r'$t_{\mathrm{shock}}~(\mathrm{s})$')
6
+ shocked_fraction = Uniform(0.01, 1, 'shocked_fraction', latex_label = r'$f_{\mathrm{shocked}}$')
7
+ cos_theta_cocoon = Uniform(0.866, 1.0, 'cos_theta_cocoon', latex_label = r'$\cos~\\theta_{\mathrm{cocoon}}$')
8
+ kappa = Uniform(0.1, 30, 'kappa', latex_label = r'$\\kappa~(\mathrm{cm}^{2}/\mathrm{g})$')
@@ -0,0 +1,8 @@
1
+ redshift = Uniform(1e-3,3,name='redshift', latex_label = r'$z$')
2
+ logl1 = Uniform(51, 57, name='logl1', latex_label=r'$\log_{10}L_{1} [erg~s^{-1}]$')
3
+ tr = LogUniform(1e-4, 100, name='tr', latex_label=r'T_{r} [day]')
4
+ mej = LogUniform(1e-4, 100, 'mej', latex_label = r'$M_{\mathrm{ej}}~(M_\odot)$')
5
+ vej = LogUniform(1e3, 1e5, 'vej', latex_label = r'$v_{\mathrm{ej}}~(\mathrm{km}/\mathrm{s})$')
6
+ kappa = Uniform(0.05, 2, 'kappa', latex_label = r'$\\kappa~(\mathrm{cm}^{2}/\mathrm{g})$')
7
+ kappa_gamma = LogUniform(1e-4, 1e4, 'kappa_gamma', latex_label = r'$\\kappa_{\\gamma}~(\mathrm{cm}^{2}/\mathrm{g})$')
8
+ temperature_floor = LogUniform(1e3,1e5,name = 'temperature_floor', latex_label = r'$T_{\mathrm{floor}}~(\mathrm{K})$')
@@ -0,0 +1,10 @@
1
+ redshift = Uniform(1e-6, 3, 'redshift', latex_label = r'$z$')
2
+ peak_time = LogUniform(0.1,60, name='peak_time', latex_label = r'$t_{\mathrm{peak}}~(\mathrm{day})$')
3
+ sigma_t = LogUniform(10,60, name='sigma_t', latex_label = r'$\\sigma~(\mathrm{day})$')
4
+ mbh_6 = LogUniform(0.01, 20, name='mbh_6', latex_label = r'$M_{\mathrm{BH}}~(10^{6}~M_\odot)$')
5
+ mstar = LogUniform(0.1, 10, name='stellar_mass', latex_label = r'$M_{\mathrm{star}}~(M_\odot)$')
6
+ c1 = 1.0
7
+ del_omega = 2.0
8
+ f = 0.2
9
+ h_r = 0.2
10
+ inc_tcool = 1
@@ -0,0 +1,9 @@
1
+ peak_time = LogUniform(0.1,60, name='peak_time', latex_label = r'$t_{\mathrm{peak}}~(\mathrm{day})$')
2
+ sigma_t = LogUniform(10,60, name='sigma_t', latex_label = r'$\\sigma~(\mathrm{day})$')
3
+ mbh_6 = LogUniform(0.01, 20, name='mbh_6', latex_label = r'$M_{\mathrm{BH}}~(10^{6}~M_\odot)$')
4
+ mstar = LogUniform(0.1, 10, name='stellar_mass', latex_label = r'$M_{\mathrm{star}}~(M_\odot)$')
5
+ c1 = 1.0
6
+ del_omega = 2.0
7
+ f = 0.2
8
+ h_r = 0.2
9
+ inc_tcool = 1
@@ -0,0 +1,9 @@
1
+ redshift = Uniform(1e-6, 3, 'redshift', latex_label = r'$z$')
2
+ mbh6 = Uniform(0.01, 20, name='mbh_6', latex_label = r'$M_{\mathrm{BH}}~[10^{6}~M_{\odot}]$')
3
+ mstar = Uniform(0.1, 30, name='mstar', latex_label = r'$M_{\mathrm{star}} [M_{\odot}]$')
4
+ tvisc = LogUniform(1e-3, 1e2, name='tvisc', latex_label = r'$t_{\mathrm{visc}}$')
5
+ bb = Uniform(0, 2, name='bb', latex_label = r'$\\beta^{\star}$')
6
+ eta = LogUniform(1e-4, 0.4, name='eta', latex_label=r'$\eta$')
7
+ leddlimit = 1
8
+ rph0 = LogUniform(1e-4, 1e4, name='rph_0', latex_label = r'$R_{\mathrm{ph-0}}$')
9
+ lphoto = Uniform(0, 2, name='lphoto', latex_label = r'$L_{\mathrm{photo}}^{\star}$')
@@ -0,0 +1,6 @@
1
+ mbh6 = Uniform(0.01, 20, name='mbh_6', latex_label = r'$M_{\mathrm{BH}}~[10^{6}~M_{\odot}]$')
2
+ mstar = Uniform(0.1, 30, name='mstar', latex_label = r'$M_{\mathrm{star}} [M_{\odot}]$')
3
+ tvisc = LogUniform(1e-3, 1e2, name='tvisc', latex_label = r'$t_{\mathrm{visc}}$')
4
+ bb = Uniform(0, 2, name='bb', latex_label = r'$\\beta^{\star}$')
5
+ eta = LogUniform(1e-4, 0.4, name='eta', latex_label=r'$\eta$')
6
+ leddlimit = 1
@@ -0,0 +1,6 @@
1
+ redshift = Uniform(0.01, 3, 'redshift', latex_label=r'$z$')
2
+ Mej = Uniform(0.1, 10, 'Mej', latex_label = r'$M_{\mathrm{ej}}~(M_\odot)$')
3
+ vej = Uniform(1e3, 3e4, 'vej', latex_label = r'$v_{\mathrm{ej}}~(\mathrm{km}/\mathrm{s})$')
4
+ logepse = Uniform(-5, 0, 'logepse', latex_label=r'$\log_{10}~\\epsilon_{e}$')
5
+ logepsb = Uniform(-5, 0, 'logepsb', latex_label=r'$\log_{10}~\\epsilon_{B}$')
6
+ p = Uniform(2, 3, 'p', latex_label=r'$p$')
@@ -1,9 +1,9 @@
1
1
  redshift = Uniform(1e-6, 0.1, 'redshift', latex_label = r'$z$')
2
2
  mej_1 = Uniform(1e-2, 0.05, 'mej', latex_label = r'$M_{\mathrm{ej}~1}~(M_\odot)$')
3
3
  vej_1 = Uniform(0.05, 0.3, 'vej', latex_label = r'$v_{\mathrm{ej}~1}~(c)$')
4
- ye_1 = Uniform(0.05, 0.4, 'ye', latex_label = r'$Y_{e}~1$')
4
+ ye_1 = Uniform(0.05, 0.5, 'ye', latex_label = r'$Y_{e~1}$')
5
5
  temperature_floor_1 = LogUniform(100, 6000, 'temperature_floor', latex_label = r'$T_{\mathrm{floor}~1}~(\mathrm{K})$')
6
6
  mej_2 = Uniform(1e-2, 0.05, 'mej', latex_label = r'$M_{\mathrm{ej}~2}~(M_\odot)$')
7
7
  vej_2 = Uniform(0.05, 0.3, 'vej', latex_label = r'$v_{\mathrm{ej}~2}~(c)$')
8
- ye_2 = Uniform(0.05, 0.4, 'ye', latex_label = r'$Y_{e}~2$')
8
+ ye_2 = Uniform(0.05, 0.5, 'ye', latex_label = r'$Y_{e~2}$')
9
9
  temperature_floor_2 = LogUniform(100, 6000, 'temperature_floor', latex_label = r'$T_{\mathrm{floor}~2}~(\mathrm{K})$')
@@ -0,0 +1,7 @@
1
+ aa = LogUniform(1e-15,1e15,name='aa', latex_label = r'$A$')
2
+ cc = LogUniform(1e-15,1e15,name='bb', latex_label = r'$C$')
3
+ t0 = Uniform(0,50,name='t0', latex_label = r'$t_0$')
4
+ tau_rise = Uniform(0.01, 50, name='tau_rise', latex_label = r'$\\tau_{\\mathrm{rise}}$')
5
+ tau_fall = Uniform(1, 300, name='tau_fall', latex_label = r'$\\tau_{\\mathrm{fall}}$')
6
+ gamma = Uniform(0.1, 100, name='gamma', latex_label = r'$\\gamma$')
7
+ nu = Uniform(0, 1, name='nu', latex_label = r'$\\nu$')
redback/priors.py CHANGED
@@ -20,7 +20,7 @@ def get_priors(model, times=None, y=None, yerr=None, dt=None, **kwargs):
20
20
  :param kwargs: Extra arguments to be passed to the prior function
21
21
  :return: priors: PriorDict object
22
22
  """
23
- prompt_prior_functions = dict(gaussian=get_gaussian_priors, skew_gaussian=get_skew_gaussian_priors,
23
+ prompt_prior_functions = dict(gaussian_prompt=get_gaussian_priors, skew_gaussian=get_skew_gaussian_priors,
24
24
  skew_exponential=get_skew_exponential_priors, fred=get_fred_priors,
25
25
  fred_extended=get_fred_extended_priors)
26
26
 
@@ -18,7 +18,7 @@ class SimulateGenericTransient(object):
18
18
  """
19
19
  A generic interface to simulating transients
20
20
 
21
- :param model: String corresponding to redback model
21
+ :param model: String corresponding to redback model or a python function that can evaluate an SED.
22
22
  :param parameters: Dictionary of parameters describing a single transient
23
23
  :param times: Time values that the model is evaluated from
24
24
  :param model_kwargs: Additional keyword arguments, must include all the keyword arguments required by the model.
@@ -35,10 +35,13 @@ class SimulateGenericTransient(object):
35
35
  Default is 'gaussianmodel' where sigma is noise_term * model.
36
36
  Another option is 'gaussian' i.e., a simple Gaussian noise with sigma = noise_term.
37
37
  :param noise_term: Float. Factor which is multiplied by the model flux/magnitude to give the sigma
38
- or is sigma itself for 'gaussian' noise.
38
+ or is sigma itself for 'gaussian' noise. Or the SNR for 'SNRbased' noise.
39
39
  :param extra_scatter: Float. Sigma of normal added to output for additional scatter.
40
40
  """
41
- self.model = redback.model_library.all_models_dict[model]
41
+ if model in redback.model_library.all_models_dict:
42
+ self.model = redback.model_library.all_models_dict[model]
43
+ else:
44
+ self.model = model
42
45
  self.parameters = parameters
43
46
  self.all_times = times
44
47
  self.model_kwargs = model_kwargs
@@ -95,9 +98,13 @@ class SimulateGenericTransient(object):
95
98
  noise = np.random.normal(0, self.noise_term, len(true_output))
96
99
  output = true_output + noise
97
100
  output_error = self.noise_term
101
+ elif noise_type == 'SNRbased':
102
+ sigma = np.sqrt(true_output + np.min(true_output)/self.noise_term)
103
+ output_error = sigma
104
+ output = true_output + np.random.normal(0, sigma, len(true_output))
98
105
  else:
99
106
  logger.warning(f"noise_type {noise_type} not implemented.")
100
- raise ValueError('noise_type must be either gaussianmodel or gaussian')
107
+ raise ValueError('noise_type must be either gaussianmodel, gaussian, or SNRBased')
101
108
 
102
109
  if extra_scatter > 0:
103
110
  extra_noise = np.random.normal(0, extra_scatter, len(true_output))