Ejemplo n.º 1
0
def test_edisp_map_read_write(tmp_path):
    edisp_map = make_edisp_map_test()

    edisp_map.write(tmp_path / "tmp.fits")
    new_edmap = EDispMap.read(tmp_path / "tmp.fits")

    assert_allclose(edisp_map.edisp_map.quantity, new_edmap.edisp_map.quantity)
Ejemplo n.º 2
0
def get_map_dataset(sky_model, geom, geom_etrue, edisp=True, **kwargs):
    """Returns a MapDatasets"""
    # define background model
    m = Map.from_geom(geom)
    m.quantity = 0.2 * np.ones(m.data.shape)
    background_model = BackgroundModel(m)

    psf = get_psf()
    exposure = get_exposure(geom_etrue)

    if edisp:
        # define energy dispersion
        e_true = geom_etrue.get_axis_by_name("energy")
        edisp = EDispMap.from_diagonal_response(energy_axis_true=e_true)
    else:
        edisp = None

    # define fit mask
    center = sky_model.spatial_model.position
    circle = CircleSkyRegion(center=center, radius=1 * u.deg)
    mask_fit = background_model.map.geom.region_mask([circle])
    mask_fit = Map.from_geom(geom, data=mask_fit)

    return MapDataset(models=sky_model,
                      exposure=exposure,
                      background_model=background_model,
                      psf=psf,
                      edisp=edisp,
                      mask_fit=mask_fit,
                      **kwargs)
Ejemplo n.º 3
0
def test_edisp_map_read_write(tmpdir):
    edmap = make_edisp_map_test()

    filename = str(tmpdir / "edispmap.fits")
    edmap.write(filename, overwrite=True)
    new_edmap = EDispMap.read(filename)

    assert_allclose(edmap.edisp_map.quantity, new_edmap.edisp_map.quantity)
Ejemplo n.º 4
0
def test_edisp_from_diagonal_response(position):
    position = SkyCoord(position)
    energy_axis_true = MapAxis.from_energy_bounds("0.3 TeV", "10 TeV", nbin=31)
    edisp_map = EDispMap.from_diagonal_response(energy_axis_true)

    e_reco = energy_axis_true.edges
    edisp_kernel = edisp_map.get_edisp_kernel(position, e_reco=e_reco)

    sum_kernel = np.sum(edisp_kernel.data.data, axis=1).data

    # We exclude the first and last bin, where there is no
    # e_reco to contribute to
    assert_allclose(sum_kernel[1:-1], 1)
Ejemplo n.º 5
0
def test_edisp_map_to_from_hdulist():
    edmap = make_edisp_map_test()
    hdulist = edmap.to_hdulist(edisp_hdu="EDISP", edisp_hdubands="BANDSEDISP")
    assert "EDISP" in hdulist
    assert "BANDSEDISP" in hdulist
    assert "EXPMAP" in hdulist
    assert "BANDSEXP" in hdulist

    new_edmap = EDispMap.from_hdulist(hdulist,
                                      edisp_hdu="EDISP",
                                      edisp_hdubands="BANDSEDISP")
    assert_allclose(edmap.edisp_map.data, new_edmap.edisp_map.data)
    assert new_edmap.edisp_map.geom == edmap.edisp_map.geom
    assert new_edmap.exposure_map.geom == edmap.exposure_map.geom