def test_wcs_nd_map_data_transpose_issue(tmp_path): # Regression test for https://github.com/gammapy/gammapy/issues/1346 # Our test case: a little map with WCS shape (3, 2), i.e. numpy array shape (2, 3) data = np.array([[0, 1, 2], [np.nan, np.inf, -np.inf]]) geom = WcsGeom.create(npix=(3, 2)) # Data should be unmodified after init m = WcsNDMap(data=data, geom=geom) assert_equal(m.data, data) # Data should be unmodified if initialised like this m = WcsNDMap(geom=geom) # and then filled via an in-place Numpy array operation m.data += data assert_equal(m.data, data) # Data should be unmodified after write / read to normal image format m.write(tmp_path / "normal.fits.gz") m2 = Map.read(tmp_path / "normal.fits.gz") assert_equal(m2.data, data) # Data should be unmodified after write / read to sparse image format m.write(tmp_path / "sparse.fits.gz") m2 = Map.read(tmp_path / "sparse.fits.gz") assert_equal(m2.data, data)
def test_wcsndmap_read_write_fgst(tmpdir): filename = str(tmpdir / "map.fits") axis = MapAxis.from_bounds(100.0, 1000.0, 4, name="energy", unit="MeV") geom = WcsGeom.create(npix=10, binsz=1.0, proj="AIT", coordsys="GAL", axes=[axis]) # Test Counts Cube m = WcsNDMap(geom) m.write(filename, conv="fgst-ccube", overwrite=True) with fits.open(filename) as h: assert "EBOUNDS" in h m2 = Map.read(filename) assert m2.geom.conv == "fgst-ccube" # Test Model Cube m.write(filename, conv="fgst-template", overwrite=True) with fits.open(filename) as h: assert "ENERGIES" in h m2 = Map.read(filename) assert m2.geom.conv == "fgst-template"
def test_wcsndmap_read_write_fgst(tmp_path): path = tmp_path / "tmp.fits" axis = MapAxis.from_bounds(100.0, 1000.0, 4, name="energy", unit="MeV") geom = WcsGeom.create(npix=10, binsz=1.0, proj="AIT", frame="galactic", axes=[axis]) # Test Counts Cube m = WcsNDMap(geom) m.write(path, format="fgst-ccube", overwrite=True) with fits.open(path, memmap=False) as hdulist: assert "EBOUNDS" in hdulist m2 = Map.read(path) assert m2.geom.axes[0].name == "energy" # Test Model Cube m.write(path, format="fgst-template", overwrite=True) with fits.open(path, memmap=False) as hdulist: assert "ENERGIES" in hdulist
def test_wcsndmap_read_write(tmp_path, npix, binsz, frame, proj, skydir, axes): geom = WcsGeom.create(npix=npix, binsz=binsz, proj=proj, frame=frame, axes=axes) path = tmp_path / "tmp.fits" m0 = WcsNDMap(geom) fill_poisson(m0, mu=0.5) m0.write(path, overwrite=True) m1 = WcsNDMap.read(path) m2 = Map.read(path) m3 = Map.read(path, map_type="wcs") assert_allclose(m0.data, m1.data) assert_allclose(m0.data, m2.data) assert_allclose(m0.data, m3.data) m0.write(path, sparse=True, overwrite=True) m1 = WcsNDMap.read(path) m2 = Map.read(path) m3 = Map.read(path, map_type="wcs") assert_allclose(m0.data, m1.data) assert_allclose(m0.data, m2.data) assert_allclose(m0.data, m3.data) # Specify alternate HDU name for IMAGE and BANDS table m0.write(path, hdu="IMAGE", hdu_bands="TEST", overwrite=True) m1 = WcsNDMap.read(path) m2 = Map.read(path) m3 = Map.read(path, map_type="wcs")
def test_wcsndmap_read_write(tmpdir, npix, binsz, coordsys, proj, skydir, axes): geom = WcsGeom.create(npix=npix, binsz=binsz, proj=proj, coordsys=coordsys, axes=axes) filename = str(tmpdir / "map.fits") m0 = WcsNDMap(geom) fill_poisson(m0, mu=0.5) m0.write(filename, overwrite=True) m1 = WcsNDMap.read(filename) m2 = Map.read(filename) m3 = Map.read(filename, map_type="wcs") assert_allclose(m0.data, m1.data) assert_allclose(m0.data, m2.data) assert_allclose(m0.data, m3.data) m0.write(filename, sparse=True, overwrite=True) m1 = WcsNDMap.read(filename) m2 = Map.read(filename) m3 = Map.read(filename, map_type="wcs") assert_allclose(m0.data, m1.data) assert_allclose(m0.data, m2.data) assert_allclose(m0.data, m3.data) # Specify alternate HDU name for IMAGE and BANDS table m0.write(filename, hdu="IMAGE", hdu_bands="TEST", overwrite=True) m1 = WcsNDMap.read(filename) m2 = Map.read(filename) m3 = Map.read(filename, map_type="wcs")