Exemple #1
0
def test_flux_estimator_fermi_no_reoptimization(fermi_datasets):
    estimator = FluxEstimator(
        0,
        norm_n_values=5,
        norm_min=0.5,
        norm_max=2,
        selection_optional="all",
        reoptimize=False
    )

    datasets = fermi_datasets.slice_by_energy(
        energy_min="1 GeV", energy_max="100 GeV"
    )
    datasets.models = fermi_datasets.models

    result = estimator.run(datasets)

    assert_allclose(result["norm"], 0.98949, atol=1e-3)
    assert_allclose(result["ts"], 25083.75408, rtol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.0199, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.0199, atol=1e-3)
    assert len(result["norm_scan"]) == 5
    assert_allclose(result["norm_scan"][0], 0.5)
    assert_allclose(result["norm_scan"][-1], 2)
    assert_allclose(result["e_min"], 10 * u.GeV, atol=1e-3)
    assert_allclose(result["e_max"], 83.255 * u.GeV, atol=1e-3)
Exemple #2
0
def test_flux_estimator_fermi_with_reoptimization(fermi_datasets):
    estimator = FluxEstimator(0, energy_range=["1 GeV", "100 GeV"], reoptimize=True)
    result = estimator.run(fermi_datasets, steps=["err", "ts"])

    assert_allclose(result["norm"], 0.970614, atol=1e-3)
    assert_allclose(result["ts"], 13005.903067, atol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
Exemple #3
0
def test_flux_estimator_1d(hess_datasets):
    estimator = FluxEstimator(hess_datasets, source="Crab")
    result = estimator.run('1 TeV', '10 TeV', steps=["ts", "errp-errn", "ul"])

    assert_allclose(result["norm"], 1.176789, atol=1e-3)
    assert_allclose(result["delta_ts"], 693.111777, atol=1e-3)
    assert_allclose(result["err"], 0.078087, atol=1e-3)
    assert_allclose(result["errn"], 0.078046, atol=1e-3)
    assert_allclose(result["errp"], 0.081665, atol=1e-3)
    assert_allclose(result["ul"], 1.431722, atol=1e-3)
Exemple #4
0
def test_flux_estimator_1d(hess_datasets):
    estimator = FluxEstimator(source="Crab", energy_range=[1, 10] * u.TeV)
    result = estimator.run(hess_datasets, steps=["err", "ts", "errp-errn", "ul"])

    assert_allclose(result["norm"], 1.176789, atol=1e-3)
    assert_allclose(result["ts"], 693.111777, atol=1e-3)
    assert_allclose(result["norm_err"], 0.078087, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.078046, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.081665, atol=1e-3)
    assert_allclose(result["norm_ul"], 1.431722, atol=1e-3)
Exemple #5
0
def test_flux_estimator_fermi_with_reoptimization(fermi_datasets):
    estimator = FluxEstimator(0,
                              energy_min="1 GeV",
                              energy_max="100 GeV",
                              selection_optional=None,
                              reoptimize=True)
    result = estimator.run(fermi_datasets)

    assert_allclose(result["norm"], 0.989989, atol=1e-3)
    assert_allclose(result["ts"], 18729.907481, rtol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
Exemple #6
0
def test_flux_estimator_fermi_with_reoptimization(fermi_datasets):
    estimator = FluxEstimator(0,
                              e_min="1 GeV",
                              e_max="100 GeV",
                              reoptimize=True,
                              selection_optional=None)
    result = estimator.run(fermi_datasets)

    assert_allclose(result["norm"], 1.010983, atol=1e-3)
    assert_allclose(result["ts"], 20896.1864, atol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
Exemple #7
0
def test_flux_estimator_fermi_with_reoptimization(fermi_datasets):
    estimator = FluxEstimator(0, selection_optional=None, reoptimize=True)

    datasets = fermi_datasets.slice_by_energy(energy_min="1 GeV",
                                              energy_max="100 GeV")
    datasets.models = fermi_datasets.models

    result = estimator.run(datasets)

    assert_allclose(result["norm"], 0.989989, atol=1e-3)
    assert_allclose(result["ts"], 18729.368105, rtol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
Exemple #8
0
def test_flux_estimator_incorrect_energy_range(fermi_datasets):
    with pytest.raises(ValueError):
        FluxEstimator(source="Crab",
                      energy_min=10 * u.TeV,
                      energy_max=1 * u.TeV)

    fe = FluxEstimator(source="Crab Nebula",
                       energy_min=0.18 * u.TeV,
                       energy_max=0.2 * u.TeV)

    result = fe.run(fermi_datasets)

    assert np.isnan(result["norm"])
Exemple #9
0
def test_flux_estimator_1d(hess_datasets):
    estimator = FluxEstimator(source="Crab",
                              e_min=1 * u.TeV,
                              e_max=10 * u.TeV,
                              selection_optional=["errn-errp", "ul"])
    result = estimator.run(hess_datasets)

    assert_allclose(result["norm"], 1.176789, atol=1e-3)
    assert_allclose(result["ts"], 693.111777, atol=1e-3)
    assert_allclose(result["norm_err"], 0.078087, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.078046, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.081665, atol=1e-3)
    assert_allclose(result["norm_ul"], 1.431722, atol=1e-3)
Exemple #10
0
def test_flux_estimator_1d(hess_datasets):
    estimator = FluxEstimator(
        source="Crab",
        energy_min=1 * u.TeV,
        energy_max=10 * u.TeV,
        selection_optional=["errn-errp", "ul"],
    )
    result = estimator.run(hess_datasets)

    assert_allclose(result["norm"], 1.218139, atol=1e-3)
    assert_allclose(result["ts"], 527.492959, atol=1e-3)
    assert_allclose(result["norm_err"], 0.095496, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.093204, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.097818, atol=1e-3)
    assert_allclose(result["norm_ul"], 1.525773, atol=1e-3)
    assert_allclose(result["e_min"], 1 * u.TeV, atol=1e-3)
    assert_allclose(result["e_max"], 10 * u.TeV, atol=1e-3)
Exemple #11
0
def test_flux_estimator_fermi_no_reoptimization(fermi_datasets):
    estimator = FluxEstimator(fermi_datasets,
                              0,
                              norm_n_values=5,
                              norm_min=0.5,
                              norm_max=2,
                              reoptimize=False)
    result = estimator.run("1 GeV", "100 GeV")

    assert_allclose(result["norm"], 0.970614, atol=1e-3)
    assert_allclose(result["delta_ts"], 29695.720611, atol=1e-3)
    assert_allclose(result["err"], 0.01998, atol=1e-3)
    assert_allclose(result["errn"], 0.0199, atol=1e-3)
    assert_allclose(result["errp"], 0.0199, atol=1e-3)
    assert len(result["norm_scan"]) == 5
    assert_allclose(result["norm_scan"][0], 0.5)
    assert_allclose(result["norm_scan"][-1], 2)
Exemple #12
0
def test_inhomogeneous_datasets(fermi_datasets, hess_datasets):

    for dataset in hess_datasets:
        dataset.models = fermi_datasets.models

    datasets = Datasets()

    datasets.extend(fermi_datasets)
    datasets.extend(hess_datasets)

    estimator = FluxEstimator(source="Crab Nebula",
                              e_min=1 * u.TeV,
                              e_max=10 * u.TeV,
                              selection_optional=None)
    result = estimator.run(datasets)

    assert_allclose(result["norm"], 1.022802, atol=1e-3)
    assert_allclose(result["ts"], 21584.515969, atol=1e-3)
    assert_allclose(result["norm_err"], 0.01966, atol=1e-3)
Exemple #13
0
def test_flux_estimator_fermi_no_reoptimization(fermi_datasets):
    estimator = FluxEstimator(
        0,
        energy_range=["1 GeV", "100 GeV"],
        norm_n_values=5,
        norm_min=0.5,
        norm_max=2,
        reoptimize=False,
    )
    result = estimator.run(fermi_datasets)

    assert_allclose(result["norm"], 0.970614, atol=1e-3)
    assert_allclose(result["ts"], 29695.689216, atol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.0199, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.0199, atol=1e-3)
    assert len(result["norm_scan"]) == 5
    assert_allclose(result["norm_scan"][0], 0.5)
    assert_allclose(result["norm_scan"][-1], 2)
Exemple #14
0
def test_flux_estimator_fermi_no_reoptimization(fermi_datasets):
    estimator = FluxEstimator(
        0,
        e_min="1 GeV",
        e_max="100 GeV",
        norm_n_values=5,
        norm_min=0.5,
        norm_max=2,
        reoptimize=False,
    )

    result = estimator.run(fermi_datasets)

    assert_allclose(result["norm"], 1.010983, atol=1e-3)
    assert_allclose(result["ts"], 28086.565, atol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.0199, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.0199, atol=1e-3)
    assert len(result["norm_scan"]) == 5
    assert_allclose(result["norm_scan"][0], 0.5)
    assert_allclose(result["norm_scan"][-1], 2)
Exemple #15
0
def test_flux_estimator_1d(hess_datasets):
    estimator = FluxEstimator(
        source="Crab",
        selection_optional=["errn-errp", "ul"],
        reoptimize=False
    )
    datasets = hess_datasets.slice_by_energy(
        energy_min=1 * u.TeV, energy_max=10 * u.TeV,
    )
    datasets.models = hess_datasets.models

    result = estimator.run(datasets)

    assert_allclose(result["norm"], 1.218139, atol=1e-3)
    assert_allclose(result["ts"], 527.492959, atol=1e-3)
    assert_allclose(result["norm_err"], 0.095496, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.093204, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.097818, atol=1e-3)
    assert_allclose(result["norm_ul"], 1.418475, atol=1e-3)
    assert_allclose(result["e_min"], 1 * u.TeV, atol=1e-3)
    assert_allclose(result["e_max"], 10 * u.TeV, atol=1e-3)
Exemple #16
0
def test_inhomogeneous_datasets(fermi_datasets, hess_datasets):
    datasets = Datasets()

    datasets.extend(fermi_datasets)
    datasets.extend(hess_datasets)

    datasets = datasets.slice_by_energy(
        energy_min=1 * u.TeV,
        energy_max=10 * u.TeV,
    )
    datasets.models = fermi_datasets.models

    estimator = FluxEstimator(source="Crab Nebula",
                              selection_optional=[],
                              reoptimize=True)
    result = estimator.run(datasets)

    assert_allclose(result["norm"], 1.190622, atol=1e-3)
    assert_allclose(result["ts"], 612.50171, atol=1e-3)
    assert_allclose(result["norm_err"], 0.090744, atol=1e-3)
    assert_allclose(result["e_min"], 0.693145 * u.TeV, atol=1e-3)
    assert_allclose(result["e_max"], 10 * u.TeV, atol=1e-3)
Exemple #17
0
def test_flux_estimator_fermi_no_reoptimization(fermi_datasets):
    estimator = FluxEstimator(
        0,
        energy_min="1 GeV",
        energy_max="100 GeV",
        norm_n_values=5,
        norm_min=0.5,
        norm_max=2,
        reoptimize=False,
    )

    result = estimator.run(fermi_datasets)

    assert_allclose(result["norm"], 0.982434, atol=1e-3)
    assert_allclose(result["ts"], 23856.262603, atol=1e-3)
    assert_allclose(result["norm_err"], 0.01998, atol=1e-3)
    assert_allclose(result["norm_errn"], 0.0199, atol=1e-3)
    assert_allclose(result["norm_errp"], 0.0199, atol=1e-3)
    assert len(result["norm_scan"]) == 5
    assert_allclose(result["norm_scan"][0], 0.5)
    assert_allclose(result["norm_scan"][-1], 2)
    assert_allclose(result["e_min"], 10 * u.GeV, atol=1e-3)
    assert_allclose(result["e_max"], 83.255 * u.GeV, atol=1e-3)
Exemple #18
0
def test_inhomogeneous_datasets(fermi_datasets, hess_datasets):

    for dataset in hess_datasets:
        dataset.models = fermi_datasets.models

    datasets = Datasets()

    datasets.extend(fermi_datasets)
    datasets.extend(hess_datasets)

    estimator = FluxEstimator(
        source="Crab Nebula",
        energy_min=1 * u.TeV,
        energy_max=10 * u.TeV,
        selection_optional=None,
    )
    result = estimator.run(datasets)

    assert_allclose(result["norm"], 1.190622, atol=1e-3)
    assert_allclose(result["ts"], 612.500392, atol=1e-3)
    assert_allclose(result["norm_err"], 0.090744, atol=1e-3)
    assert_allclose(result["e_min"], 0.693145 * u.TeV, atol=1e-3)
    assert_allclose(result["e_max"], 2 * u.TeV, atol=1e-3)
Exemple #19
0
def test_inhomogeneous_datasets(fermi_datasets, hess_datasets):
    fermi_datasets.append(hess_datasets[0])
    with pytest.raises(ValueError):
        estimator = FluxEstimator(source=0, energy_range=[1, 10] * u.TeV)
        estimator.run(fermi_datasets)