def test_hpxmap_read_write(tmp_path, nside, nested, frame, region, axes): path = tmp_path / "tmp.fits" m = create_map(nside, nested, frame, region, axes) m.write(path, sparse=True, overwrite=True) m2 = HpxNDMap.read(path) m4 = Map.read(path, map_type="hpx") msk = np.ones_like(m2.data[...], dtype=bool) assert_allclose(m.data[...][msk], m2.data[...][msk]) assert_allclose(m.data[...][msk], m4.data[...][msk]) m.write(path, overwrite=True) m2 = HpxNDMap.read(path) m3 = HpxMap.read(path, map_type="hpx") m4 = Map.read(path, map_type="hpx") assert_allclose(m.data[...][msk], m2.data[...][msk]) assert_allclose(m.data[...][msk], m3.data[...][msk]) assert_allclose(m.data[...][msk], m4.data[...][msk]) # Specify alternate HDU name for IMAGE and BANDS table m.write(path, sparse=True, hdu="IMAGE", hdu_bands="TEST", overwrite=True) m2 = HpxNDMap.read(path) m3 = Map.read(path) m4 = Map.read(path, map_type="hpx")
def test_hpxmap_read_write(tmp_path, nside, nested, coordsys, region, axes, sparse): path = tmp_path / "tmp.fits" m = create_map(nside, nested, coordsys, region, axes, sparse) fill_poisson(m, mu=0.5, random_state=0) m.write(path, sparse=sparse, overwrite=True) m2 = HpxNDMap.read(path) m3 = HpxSparseMap.read(path) m4 = Map.read(path, map_type="hpx") if sparse: msk = np.isfinite(m2.data[...]) else: msk = np.ones_like(m2.data[...], dtype=bool) assert_allclose(m.data[...][msk], m2.data[...][msk]) assert_allclose(m.data[...][msk], m3.data[...][msk]) assert_allclose(m.data[...][msk], m4.data[...][msk]) m.write(path, sparse=True, overwrite=True) m2 = HpxNDMap.read(path) m3 = HpxMap.read(path, map_type="hpx") m4 = Map.read(path, map_type="hpx") assert_allclose(m.data[...][msk], m2.data[...][msk]) assert_allclose(m.data[...][msk], m3.data[...][msk]) assert_allclose(m.data[...][msk], m4.data[...][msk]) # Specify alternate HDU name for IMAGE and BANDS table m.write(path, hdu="IMAGE", hdu_bands="TEST", overwrite=True) m2 = HpxNDMap.read(path) m3 = Map.read(path) m4 = Map.read(path, map_type="hpx")
def extract_spectra_fermi(target_position, on_radius): """Extract 1d spectra for Fermi-LAT""" log.info("Extracting 1d spectra for Fermi-LAT") events = EventList.read("data/fermi/events.fits.gz") exposure = HpxNDMap.read("data/fermi/exposure_cube.fits.gz") psf = EnergyDependentTablePSF.read("data/fermi/psf.fits.gz") emin, emax, dex = 0.03, 2, 0.1 num = int(np.log10(emax / emin) / dex) energy = np.logspace(start=np.log10(emin), stop=np.log10(emax), num=num) * u.TeV bkg_estimate = fermi_ring_background_extract(events, target_position, on_radius) extract = SpectrumExtractionFermi1D( events=events, exposure=exposure, psf=psf, bkg_estimate=bkg_estimate, target_position=target_position, on_radius=on_radius, energy=energy, containment_correction=True, ) obs = extract.run() path = f"{config.repo_path}/results/spectra/fermi" log.info(f"Writing to {path}") obs.write(path, use_sherpa=True, overwrite=True)
def extract_spectra_fermi(target_position, on_radius): """Extract 1d spectra for Fermi-LAT""" log.info("Extracting 1d spectra for Fermi-LAT") events = EventList.read("data/fermi/events.fits.gz") exposure = HpxNDMap.read("data/fermi/exposure_cube.fits.gz") psf = EnergyDependentTablePSF.read("data/fermi/psf.fits.gz") valid_range = (config.energy_bins >= 30 * u.GeV) * (config.energy_bins <= 2 * u.TeV) energy = config.energy_bins[valid_range] bkg_estimate = ring_background_estimate( pos=target_position, on_radius=on_radius, inner_radius=1 * u.deg, outer_radius=2 * u.deg, events=events, ) extract = SpectrumExtractionFermi1D( events=events, exposure=exposure, psf=psf, bkg_estimate=bkg_estimate, target_position=target_position, on_radius=on_radius, energy=energy, ) obs = extract.run() path = "results/spectra/fermi" log.info(f"Writing to {path}") obs.write(path, use_sherpa=True, overwrite=True)
def __init__(self, evt_file="$JOINT_CRAB/data/fermi/events.fits.gz", exp_file="$JOINT_CRAB/data/fermi/exposure_cube.fits.gz", psf_file="$JOINT_CRAB/data/fermi/psf.fits.gz", max_psf_radius='0.5 deg'): # Read data self.events = EventList.read(evt_file) self.exposure = HpxNDMap.read(exp_file) self.exposure.unit = u.Unit('cm2s') # no unit stored on map... self.psf = EnergyDependentTablePSF.read(psf_file)
def __init__( self, evt_file="../data/joint-crab/fermi/events.fits.gz", exp_file="../data/joint-crab/fermi/exposure_cube.fits.gz", psf_file="../data/joint-crab/fermi/psf.fits.gz", ): # Read data self.events = EventList.read(evt_file) self.exposure = HpxNDMap.read(exp_file) self.exposure.unit = u.Unit("cm2s") # no unit stored on map... self.psf = PSFMap.read(psf_file, format="gtpsf")
def __init__( self, evt_file="../data/joint-crab/fermi/events.fits.gz", exp_file="../data/joint-crab/fermi/exposure_cube.fits.gz", psf_file="../data/joint-crab/fermi/psf.fits.gz", max_psf_radius="0.5 deg", ): # Read data self.events = EventList.read(evt_file) self.exposure = HpxNDMap.read(exp_file) self.exposure.unit = u.Unit("cm2s") # no unit stored on map... self.psf = EnergyDependentTablePSF.read(psf_file)