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 data_prep(): data_store = DataStore.from_dir("$GAMMAPY_DATA/cta-1dc/index/gps/") OBS_ID = 110380 obs_ids = OBS_ID * np.ones(N_OBS) observations = data_store.get_observations(obs_ids) energy_axis = MapAxis.from_bounds(0.1, 10, nbin=10, unit="TeV", name="energy", interp="log") geom = WcsGeom.create( skydir=(0, 0), binsz=0.02, width=(10, 8), frame="galactic", proj="CAR", axes=[energy_axis], ) offset_max = 4 * u.deg maker = MapDatasetMaker() safe_mask_maker = SafeMaskMaker(methods=["offset-max"], offset_max=offset_max) stacked = MapDataset.create(geom=geom) spatial_model = PointSpatialModel(lon_0="-0.05 deg", lat_0="-0.05 deg", frame="galactic") spectral_model = ExpCutoffPowerLawSpectralModel( index=2, amplitude=3e-12 * u.Unit("cm-2 s-1 TeV-1"), reference=1.0 * u.TeV, lambda_=0.1 / u.TeV, ) model = SkyModel(spatial_model=spatial_model, spectral_model=spectral_model, name="gc-source") datasets = Datasets([]) for idx, obs in enumerate(observations): cutout = stacked.cutout(obs.pointing_radec, width=2 * offset_max, name=f"dataset{idx}") dataset = maker.run(cutout, obs) dataset = safe_mask_maker.run(dataset, obs) dataset.models = model datasets.append(dataset) return datasets