def test_Datasets_mutation(): dat = MyDataset(name="test-1") dats = Datasets([MyDataset(name="test-2"), MyDataset(name="test-3")]) dats2 = Datasets([MyDataset(name="test-4"), MyDataset(name="test-5")]) dats.insert(0, dat) assert dats.names == ["test-1", "test-2", "test-3"] dats.extend(dats2) assert dats.names == ["test-1", "test-2", "test-3", "test-4", "test-5"] dat3 = dats[3] dats.remove(dats[3]) assert dats.names == ["test-1", "test-2", "test-3", "test-5"] dats.append(dat3) assert dats.names == ["test-1", "test-2", "test-3", "test-5", "test-4"] dats.pop(3) assert dats.names == ["test-1", "test-2", "test-3", "test-4"] with pytest.raises(ValueError, match="Dataset names must be unique"): dats.append(dat) with pytest.raises(ValueError, match="Dataset names must be unique"): dats.insert(0, dat) with pytest.raises(ValueError, match="Dataset names must be unique"): dats.extend(dats2)
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)
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)
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)