def test_bkg_2d_wrong_units(): energy = [0.1, 10, 1000] * u.TeV energy_axis = MapAxis.from_energy_edges(energy) offset_axis = MapAxis.from_edges([0, 1, 2], unit="deg", name="offset") wrong_unit = u.cm**2 * u.s data = np.ones((energy_axis.nbin, offset_axis.nbin)) * wrong_unit bkg2d_test = Background2D(axes=[energy_axis, offset_axis]) with pytest.raises(ValueError) as error: Background2D(axes=[energy_axis, offset_axis], data=data) assert error.match( f"Error: {wrong_unit} is not an allowed unit. {bkg2d_test.tag} requires {bkg2d_test.default_unit} data quantities." )
def bkg_2d(): offset_axis = MapAxis.from_bounds(0, 4, nbin=10, name="offset", unit="deg") energy_axis = MapAxis.from_energy_bounds("0.1 TeV", "10 TeV", nbin=20) bkg_2d = Background2D(axes=[energy_axis, offset_axis], unit="s-1 TeV-1 sr-1") coords = bkg_2d.axes.get_coord() value = np.exp(-0.5 * (coords["offset"] / (2 * u.deg))**2) bkg_2d.data = (value * (coords["energy"] / (1 * u.TeV))**-2).to_value("") return bkg_2d
def _make_bkg2d(ebounds, offset, unit): ebounds = ebounds.to("MeV") offset = offset.to("deg") shape = len(ebounds) - 1, len(offset) - 1 return Background2D( energy_lo=ebounds[:-1], energy_hi=ebounds[1:], offset_lo=offset[:-1], offset_hi=offset[1:], data=np.zeros(shape) * u.Unit(unit), )
def bkg_2d(): """A simple Background2D test case""" energy = [0.1, 10, 1000] * u.TeV energy_axis = MapAxis.from_energy_edges(energy) offset = [0, 1, 2, 3] * u.deg offset_axis = MapAxis.from_edges(offset, name="offset") data = np.zeros((2, 3)) * u.Unit("s-1 MeV-1 sr-1") data.value[1, 0] = 2 data.value[1, 1] = 4 return Background2D(energy_axis=energy_axis, offset_axis=offset_axis, data=data,)
def test_background_2d_read_missing_hducls(): energy_axis = MapAxis.from_energy_bounds("1 TeV", "10 TeV", nbin=3) offset_axis = MapAxis.from_edges([0, 1, 2], unit="deg", name="offset") bkg = Background2D(axes=[energy_axis, offset_axis], unit="s-1 MeV-1 sr-1") table = bkg.to_table() table.meta.pop("HDUCLAS2") bkg = Background2D.from_table(table) assert bkg.axes[0].name == "energy"
def bkg_2d(): """A simple Background2D test case""" energy = [0.1, 10, 1000] * u.TeV offset = [0, 1, 2, 3] * u.deg data = np.zeros((2, 3)) * u.Unit("s-1 MeV-1 sr-1") data.value[1, 0] = 2 data.value[1, 1] = 4 return Background2D( energy_lo=energy[:-1], energy_hi=energy[1:], offset_lo=offset[:-1], offset_hi=offset[1:], data=data, )