Exemple #1
0
def test_read_duplicated_container_types(tmp_path):
    path = tmp_path / "test.h5"

    hillas_config_1 = HillasParametersContainer(
        x=1 * u.m, y=2 * u.m, length=3 * u.m, width=4 * u.m, prefix="hillas_1"
    )
    hillas_config_2 = HillasParametersContainer(
        x=2 * u.m, y=3 * u.m, length=4 * u.m, width=5 * u.m, prefix="hillas_2"
    )

    with HDF5TableWriter(path, group_name="dl1", add_prefix=True) as writer:
        writer.write("params", [hillas_config_1, hillas_config_2])

    df = pd.read_hdf(path, key="/dl1/params")
    assert "hillas_1_x" in df.columns
    assert "hillas_2_x" in df.columns

    with HDF5TableReader(path) as reader:
        generator = reader.read(
            "/dl1/params",
            [HillasParametersContainer(), HillasParametersContainer()],
            prefixes=["hillas_1", "hillas_2"],
        )
        hillas_1, hillas_2 = next(generator)

    for value, read_value in zip(
        hillas_config_1.as_dict().values(), hillas_1.as_dict().values()
    ):
        np.testing.assert_equal(value, read_value)

    for value, read_value in zip(
        hillas_config_2.as_dict().values(), hillas_2.as_dict().values()
    ):
        np.testing.assert_equal(value, read_value)
Exemple #2
0
def test_read_multiple_containers():
    hillas_parameter_container = HillasParametersContainer(x=1 * u.m,
                                                           y=1 * u.m,
                                                           length=1 * u.m,
                                                           width=1 * u.m)

    leakage_container = LeakageContainer(
        pixels_width_1=0.1,
        pixels_width_2=0.1,
        intensity_width_1=0.1,
        intensity_width_2=0.1,
    )
    with tempfile.NamedTemporaryFile() as f:
        with HDF5TableWriter(f.name, group_name="dl1",
                             add_prefix=True) as writer:
            writer.write("params",
                         [hillas_parameter_container, leakage_container])

        df = pd.read_hdf(f.name, key="/dl1/params")
        assert "hillas_x" in df.columns
        assert "leakage_pixels_width_1" in df.columns

        # test reading both containers separately
        with HDF5TableReader(f.name) as reader:
            generator = reader.read("/dl1/params",
                                    HillasParametersContainer(),
                                    prefixes=True)
            hillas = next(generator)
        for value, read_value in zip(
                hillas_parameter_container.as_dict().values(),
                hillas.as_dict().values()):
            np.testing.assert_equal(value, read_value)

        with HDF5TableReader(f.name) as reader:
            generator = reader.read("/dl1/params",
                                    LeakageContainer(),
                                    prefixes=True)
            leakage = next(generator)
        for value, read_value in zip(leakage_container.as_dict().values(),
                                     leakage.as_dict().values()):
            np.testing.assert_equal(value, read_value)

        # test reading both containers simultaneously
        with HDF5TableReader(f.name) as reader:
            generator = reader.read(
                "/dl1/params",
                [HillasParametersContainer(),
                 LeakageContainer()],
                prefixes=True,
            )
            hillas_, leakage_ = next(generator)

        for value, read_value in zip(leakage_container.as_dict().values(),
                                     leakage_.as_dict().values()):
            np.testing.assert_equal(value, read_value)

        for value, read_value in zip(
                hillas_parameter_container.as_dict().values(),
                hillas_.as_dict().values()):
            np.testing.assert_equal(value, read_value)
Exemple #3
0
def test_read_without_prefixes(tmp_path):
    path = tmp_path / "test.h5"

    hillas_parameter_container = HillasParametersContainer(fov_lon=1 * u.deg,
                                                           fov_lat=1 * u.deg,
                                                           length=1 * u.deg,
                                                           width=1 * u.deg)

    leakage_container = LeakageContainer(
        pixels_width_1=0.1,
        pixels_width_2=0.1,
        intensity_width_1=0.1,
        intensity_width_2=0.1,
    )

    with HDF5TableWriter(path, group_name="dl1", add_prefix=False) as writer:
        writer.write("params", [hillas_parameter_container, leakage_container])

    df = pd.read_hdf(path, key="/dl1/params")
    assert "fov_lon" in df.columns
    assert "pixels_width_1" in df.columns

    # call with prefixes=False
    with HDF5TableReader(path) as reader:
        generator = reader.read(
            "/dl1/params",
            [HillasParametersContainer(),
             LeakageContainer()],
            prefixes=False,
        )
        hillas_, leakage_ = next(generator)

    for value, read_value in zip(leakage_container.as_dict().values(),
                                 leakage_.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    for value, read_value in zip(hillas_parameter_container.as_dict().values(),
                                 hillas_.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    # call with manually removed prefixes
    with HDF5TableReader(path) as reader:
        generator = reader.read(
            "/dl1/params",
            [
                HillasParametersContainer(prefix=""),
                LeakageContainer(prefix="")
            ],
            prefixes=True,
        )
        hillas_, leakage_ = next(generator)

    for value, read_value in zip(leakage_container.as_dict().values(),
                                 leakage_.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    for value, read_value in zip(hillas_parameter_container.as_dict().values(),
                                 hillas_.as_dict().values()):
        np.testing.assert_equal(value, read_value)
Exemple #4
0
def test_read_multiple_containers(tmp_path):
    path = tmp_path / "test_append.h5"
    hillas_parameter_container = HillasParametersContainer(fov_lon=1 * u.deg,
                                                           fov_lat=1 * u.deg,
                                                           length=1 * u.deg,
                                                           width=1 * u.deg)

    leakage_container = LeakageContainer(
        pixels_width_1=0.1,
        pixels_width_2=0.1,
        intensity_width_1=0.1,
        intensity_width_2=0.1,
    )
    with HDF5TableWriter(path, group_name="dl1", add_prefix=True) as writer:
        writer.write("params", [hillas_parameter_container, leakage_container])

    df = pd.read_hdf(path, key="/dl1/params")
    assert "hillas_fov_lon" in df.columns
    assert "leakage_pixels_width_1" in df.columns

    # test reading both containers separately
    with HDF5TableReader(path) as reader:
        generator = reader.read("/dl1/params",
                                HillasParametersContainer(),
                                prefixes=True)
        hillas = next(generator)
    for value, read_value in zip(hillas_parameter_container.as_dict().values(),
                                 hillas.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    with HDF5TableReader(path) as reader:
        generator = reader.read("/dl1/params",
                                LeakageContainer(),
                                prefixes=True)
        leakage = next(generator)
    for value, read_value in zip(leakage_container.as_dict().values(),
                                 leakage.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    # test reading both containers simultaneously
    with HDF5TableReader(path) as reader:
        generator = reader.read(
            "/dl1/params",
            [HillasParametersContainer(),
             LeakageContainer()],
            prefixes=True,
        )
        hillas_, leakage_ = next(generator)

    for value, read_value in zip(leakage_container.as_dict().values(),
                                 leakage_.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    for value, read_value in zip(hillas_parameter_container.as_dict().values(),
                                 hillas_.as_dict().values()):
        np.testing.assert_equal(value, read_value)
Exemple #5
0
def test_read_without_prefixes():
    hillas_parameter_container = HillasParametersContainer(
        x=1 * u.m, y=1 * u.m, length=1 * u.m, width=1 * u.m
    )

    leakage_container = LeakageContainer(
        pixels_width_1=0.1,
        pixels_width_2=0.1,
        intensity_width_1=0.1,
        intensity_width_2=0.1,
    )
    with tempfile.NamedTemporaryFile() as f:
        with HDF5TableWriter(f.name, group_name="dl1", add_prefix=False) as writer:
            writer.write("params", [hillas_parameter_container, leakage_container])

        df = pd.read_hdf(f.name, key="/dl1/params")
        assert "x" in df.columns
        assert "pixels_width_1" in df.columns

        # call with prefixes=False
        with HDF5TableReader(f.name) as reader:
            generator = reader.read(
                "/dl1/params",
                [HillasParametersContainer(), LeakageContainer()],
                prefixes=False,
            )
            hillas_, leakage_ = next(generator)

        for value, read_value in zip(
            leakage_container.as_dict().values(), leakage_.as_dict().values()
        ):
            np.testing.assert_equal(value, read_value)

        for value, read_value in zip(
            hillas_parameter_container.as_dict().values(), hillas_.as_dict().values()
        ):
            np.testing.assert_equal(value, read_value)

        # call with manually removed prefixes
        with HDF5TableReader(f.name) as reader:
            generator = reader.read(
                "/dl1/params",
                [HillasParametersContainer(prefix=""), LeakageContainer(prefix="")],
                prefixes=True,
            )
            hillas_, leakage_ = next(generator)

        for value, read_value in zip(
            leakage_container.as_dict().values(), leakage_.as_dict().values()
        ):
            np.testing.assert_equal(value, read_value)

        for value, read_value in zip(
            hillas_parameter_container.as_dict().values(), hillas_.as_dict().values()
        ):
            np.testing.assert_equal(value, read_value)
Exemple #6
0
def test_read_duplicated_container_types():
    hillas_config_1 = HillasParametersContainer(
        x=1 * u.m,
        y=2 * u.m,
        length=3 * u.m,
        width=4 * u.m,
        prefix='hillas_1',
    )
    hillas_config_2 = HillasParametersContainer(
        x=2 * u.m,
        y=3 * u.m,
        length=4 * u.m,
        width=5 * u.m,
        prefix='hillas_2',
    )

    with tempfile.NamedTemporaryFile() as f:
        with HDF5TableWriter(f.name, group_name="dl1",
                             add_prefix=True) as writer:
            writer.write("params", [hillas_config_1, hillas_config_2])

        df = pd.read_hdf(f.name, key="/dl1/params")
        assert "hillas_1_x" in df.columns
        assert "hillas_2_x" in df.columns

        with HDF5TableReader(f.name) as reader:
            generator = reader.read(
                "/dl1/params",
                [HillasParametersContainer(),
                 HillasParametersContainer()],
                prefixes=['hillas_1', 'hillas_2'])
            hillas_1, hillas_2 = next(generator)

        for value, read_value in zip(hillas_config_1.as_dict().values(),
                                     hillas_1.as_dict().values()):
            np.testing.assert_equal(value, read_value)

        for value, read_value in zip(hillas_config_2.as_dict().values(),
                                     hillas_2.as_dict().values()):
            np.testing.assert_equal(value, read_value)
Exemple #7
0
def test_custom_prefix():
    container = HillasParametersContainer(
        x=1 * u.m, y=1 * u.m, length=1 * u.m, width=1 * u.m
    )
    container.prefix = "custom"
    with tempfile.NamedTemporaryFile() as f:
        with HDF5TableWriter(f.name, group_name="dl1", add_prefix=True) as writer:
            writer.write("params", container)

        with HDF5TableReader(f.name) as reader:
            generator = reader.read(
                "/dl1/params", HillasParametersContainer(), prefixes="custom"
            )
            read_container = next(generator)
        assert isinstance(read_container, HillasParametersContainer)
        for value, read_value in zip(
            container.as_dict().values(), read_container.as_dict().values()
        ):
            np.testing.assert_equal(value, read_value)
Exemple #8
0
def test_custom_prefix(tmp_path):
    path = tmp_path / "test.h5"

    container = HillasParametersContainer(fov_lon=1 * u.deg,
                                          fov_lat=1 * u.deg,
                                          length=1 * u.deg,
                                          width=1 * u.deg)
    container.prefix = "custom"
    with HDF5TableWriter(path, group_name="dl1", add_prefix=True) as writer:
        writer.write("params", container)

    with HDF5TableReader(path) as reader:
        generator = reader.read("/dl1/params",
                                HillasParametersContainer(),
                                prefixes="custom")
        read_container = next(generator)
    assert isinstance(read_container, HillasParametersContainer)
    for value, read_value in zip(container.as_dict().values(),
                                 read_container.as_dict().values()):
        np.testing.assert_equal(value, read_value)
Exemple #9
0
def test_prefix(tmp_path):
    tmp_file = tmp_path / "test_prefix.hdf5"
    hillas_parameter_container = HillasParametersContainer(x=1 * u.m,
                                                           y=1 * u.m,
                                                           length=1 * u.m,
                                                           width=1 * u.m)

    leakage_container = LeakageContainer(
        pixels_width_1=0.1,
        pixels_width_2=0.1,
        intensity_width_1=0.1,
        intensity_width_2=0.1,
    )

    with HDF5TableWriter(tmp_file.name, group_name="blabla",
                         add_prefix=True) as writer:
        writer.write("events", [hillas_parameter_container, leakage_container])

    df = pd.read_hdf(tmp_file.name, key="/blabla/events")
    assert "hillas_x" in df.columns
    assert "leakage_pixels_width_1" in df.columns

    with HDF5TableReader(tmp_file.name) as reader:
        generator = reader.read("/blabla/events",
                                HillasParametersContainer(),
                                prefix=True)
        hillas = next(generator)
    for value, read_value in zip(hillas_parameter_container.as_dict().values(),
                                 hillas.as_dict().values()):
        np.testing.assert_equal(value, read_value)

    with HDF5TableReader(tmp_file.name) as reader:
        generator = reader.read("/blabla/events",
                                LeakageContainer(),
                                prefix=True)
        leakage = next(generator)
    for value, read_value in zip(leakage_container.as_dict().values(),
                                 leakage.as_dict().values()):
        np.testing.assert_equal(value, read_value)