コード例 #1
0
ファイル: test_hpxnd.py プロジェクト: tobiaskleiner/gammapy
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")
コード例 #2
0
ファイル: test_hpxmap.py プロジェクト: peroju/gammapy
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")
コード例 #3
0
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)
コード例 #4
0
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)
コード例 #5
0
 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)
コード例 #6
0
 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")
コード例 #7
0
 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)