def test_energy_flux_error_power_law(): energy_min = 1 * u.TeV energy_max = 10 * u.TeV powerlaw = PowerLawSpectralModel() powerlaw.parameters["index"].error = 0.4 powerlaw.parameters["amplitude"].error = 1e-13 enrg_flux, enrg_flux_error = powerlaw.energy_flux_error(energy_min, energy_max) assert_allclose(enrg_flux.value / 1e-12, 2.303, rtol=0.001) assert_allclose(enrg_flux_error.value / 1e-12, 1.085, rtol=0.001)
def test_energy_flux_error_PowerLaw(): emin = 1 * u.TeV emax = 10 * u.TeV powerlaw = PowerLawSpectralModel() powerlaw.parameters['index'].error = 0.4 powerlaw.parameters['amplitude'].error = 1e-13 enrg_flux, enrg_flux_error = powerlaw.energy_flux_error(emin,emax) assert_allclose(enrg_flux.value/1e-12, 2.303, rtol=0.001) assert_allclose(enrg_flux_error.value/1e-12, 1.347, rtol=0.001)
def test_pwl_index_2_error(): pwl = PowerLawSpectralModel(amplitude=1e-12 * u.Unit("TeV-1 cm-2 s-1"), reference=1 * u.Unit("TeV"), index=2) pwl.parameters.set_error(amplitude=1e-13 * u.Unit("TeV-1 cm-2 s-1")) val, val_err = pwl.evaluate_error(1 * u.TeV) assert_quantity_allclose(val, 1e-12 * u.Unit("TeV-1 cm-2 s-1")) assert_quantity_allclose(val_err, 0.1e-12 * u.Unit("TeV-1 cm-2 s-1")) flux, flux_err = pwl.integral_error(1 * u.TeV, 10 * u.TeV) assert_quantity_allclose(flux, 9e-13 * u.Unit("cm-2 s-1")) assert_quantity_allclose(flux_err, 9e-14 * u.Unit("cm-2 s-1")) eflux, eflux_err = pwl.energy_flux_error(1 * u.TeV, 10 * u.TeV) assert_quantity_allclose(eflux, 2.302585e-12 * u.Unit("TeV cm-2 s-1")) assert_quantity_allclose(eflux_err, 0.2302585e-12 * u.Unit("TeV cm-2 s-1"))
def test_pwl_index_2_error(): pars, errs = {}, {} pars["amplitude"] = 1e-12 * u.Unit("TeV-1 cm-2 s-1") pars["reference"] = 1 * u.Unit("TeV") pars["index"] = 2 * u.Unit("") errs["amplitude"] = 0.1e-12 * u.Unit("TeV-1 cm-2 s-1") pwl = PowerLawSpectralModel(**pars) pwl.parameters.set_parameter_errors(errs) val, val_err = pwl.evaluate_error(1 * u.TeV) assert_quantity_allclose(val, 1e-12 * u.Unit("TeV-1 cm-2 s-1")) assert_quantity_allclose(val_err, 0.1e-12 * u.Unit("TeV-1 cm-2 s-1")) flux, flux_err = pwl.integral_error(1 * u.TeV, 10 * u.TeV) assert_quantity_allclose(flux, 9e-13 * u.Unit("cm-2 s-1")) assert_quantity_allclose(flux_err, 9e-14 * u.Unit("cm-2 s-1")) eflux, eflux_err = pwl.energy_flux_error(1 * u.TeV, 10 * u.TeV) assert_quantity_allclose(eflux, 2.302585e-12 * u.Unit("TeV cm-2 s-1")) assert_quantity_allclose(eflux_err, 0.2302585e-12 * u.Unit("TeV cm-2 s-1"))