コード例 #1
0
def test_hessio_file_reader():
    dataset = get_dataset_path("gamma_test.simtel.gz")
    kwargs = dict(config=None, tool=None, input_url=dataset)
    with HESSIOEventSource(**kwargs) as reader:
        assert reader.is_compatible(dataset)
        assert not reader.is_stream
        for event in reader:
            if event.count == 0:
                assert event.r0.tels_with_data == {38, 47}
            elif event.count == 1:
                assert event.r0.tels_with_data == {11, 21, 24, 26, 61, 63, 118,
                                                   119}
            else:
                break
        for event in reader:
            # Check generator has restarted from beginning
            assert event.count == 0
            break

    # test that max_events works:
    max_events = 5
    with HESSIOEventSource(**kwargs, max_events=max_events) as reader:
        count = 0
        for _ in reader:
            count += 1
        assert count == max_events

    # test that the allowed_tels mask works:
    with HESSIOEventSource(**kwargs, allowed_tels={3, 4}) as reader:
        for event in reader:
            assert event.r0.tels_with_data.issubset(reader.allowed_tels)
コード例 #2
0
def test_hessio_file_reader():
    with HESSIOEventSource(input_url=dataset) as reader:
        assert not reader.is_stream
        for event in reader:
            if event.count == 1:
                break

        for event in reader:
            # Check generator has restarted from beginning
            assert event.count == 0
            break

    # test that max_events works:
    max_events = 5
    with HESSIOEventSource(input_url=dataset, max_events=max_events) as reader:
        count = 0
        for _ in reader:
            count += 1
        assert count == max_events

    # test that the allowed_tels mask works:
    with HESSIOEventSource(
            input_url=dataset,
            allowed_tels={3, 4},
            max_events=max_events,
    ) as reader:
        for event in reader:
            assert event.r0.tels_with_data.issubset(reader.allowed_tels)
コード例 #3
0
ファイル: test_hessio.py プロジェクト: ddominis/ctapipe-1
def test_hessio_event_source():
    filename = get_dataset_path("gamma_test.simtel.gz")

    with HESSIOEventSource(input_url=filename) as source:
        event = next(iter(source))
        tels = event.dl0.tels_with_data
        assert tels == {38, 47}
コード例 #4
0
    def setup(self):
        # load up the telescope types table (need to first open a file, a bit of
        # a hack until a proper insturment module exists) and select only the
        # telescopes with the same camera type

        self.reader = HESSIOEventSource(input_url=self.infile,
                                        max_events=self.max_events)

        for event in self.reader:
            camtypes = event.inst.subarray.to_table().group_by('camera_type')
            event.inst.subarray.info(printer=self.log.info)
            break

        group = camtypes.groups[self.telgroup]
        self._selected_tels = list(group['tel_id'].data)
        self._base_tel = self._selected_tels[0]
        self.log.info("Telescope group %d: %s", self.telgroup,
                      str(event.inst.subarray.tel[self._selected_tels[0]]))
        self.log.info("SELECTED TELESCOPES:{}".format(self._selected_tels))

        self.calibrator = CameraCalibrator(config=self.config,
                                           tool=self,
                                           eventsource=self.reader)

        self.reader.allowed_tels = self._selected_tels
コード例 #5
0
ファイル: test_eventseeker.py プロジェクト: smicanov/ctapipe
def test_eventseeker():
    dataset = get_dataset("gamma_test.simtel.gz")
    kwargs = dict(config=None, tool=None, input_url=dataset)
    with HESSIOEventSource(**kwargs) as reader:
        seeker = EventSeeker(reader=reader)
        event = seeker[1]
        assert event.r0.tels_with_data == {11, 21, 24, 26, 61, 63, 118, 119}
        event = seeker[0]
        assert event.r0.tels_with_data == {38, 47}
        event = seeker['409']
        assert event.r0.tels_with_data == {11, 21, 24, 26, 61, 63, 118, 119}
        tel_list = [{38, 47}, {11, 21, 24, 26, 61, 63, 118, 119}]
        events = seeker[0:2]
        events_tels = [e.r0.tels_with_data for e in events]
        assert events_tels == tel_list
        events = seeker[[0, 1]]
        events_tels = [e.r0.tels_with_data for e in events]
        assert events_tels == tel_list
        events = seeker[['408', '409']]
        events_tels = [e.r0.tels_with_data for e in events]
        assert events_tels == tel_list
        assert len(seeker) == 9

        with pytest.raises(IndexError):
            event = seeker[200]
            assert event is not None
        with pytest.raises(ValueError):
            event = seeker['t']
            assert event is not None
        with pytest.raises(TypeError):
            event = seeker[dict()]
            assert event is not None

    with HESSIOEventSource(**kwargs, max_events=5) as reader:
        seeker = EventSeeker(reader=reader)
        with pytest.raises(IndexError):
            event = seeker[5]
            assert event is not None

    class StreamFileReader(HESSIOEventSource):
        def is_stream(self):
            return True

    with StreamFileReader(**kwargs) as reader:
        with pytest.raises(IOError):
            seeker = EventSeeker(reader=reader)
            assert seeker is not None
コード例 #6
0
ファイル: test_r1.py プロジェクト: quasarsr/ctapipe
def test_factory_from_eventsource_override():
    dataset = get_dataset("gamma_test.simtel.gz")
    eventsource = HESSIOEventSource(input_url=dataset)
    calibrator = CameraR1CalibratorFactory.produce(
        eventsource=eventsource,
        product="NullR1Calibrator"
    )
    assert isinstance(calibrator, NullR1Calibrator)
コード例 #7
0
def test_pyhessio_prod2():
    pytest.importorskip('pyhessio')

    with pytest.warns(UnknownPixelShapeWarning):
        with HESSIOEventSource(input_url=dataset) as reader:
            for event in reader:
                if event.count == 2:
                    break
コード例 #8
0
def test_subarray_property():
    dataset = get_dataset_path("gamma_test_large.simtel.gz")
    source = HESSIOEventSource(input_url=dataset)
    subarray = deepcopy(source.subarray)
    event = next(iter(source))
    subarray_event = event.inst.subarray
    assert subarray.tel.keys() == subarray_event.tel.keys()
    assert (subarray.tel[1].camera.geometry.pix_x ==
            subarray_event.tel[1].camera.geometry.pix_x).all()
コード例 #9
0
ファイル: conftest.py プロジェクト: yoshio2018/ctapipe
def test_event():
    """ an example event for algorithm testing"""
    filename = get_dataset_path('gamma_test.simtel.gz')

    with HESSIOEventSource(input_url=filename) as reader:
        seeker = EventSeeker(reader)
        event = seeker['409']

    yield event
コード例 #10
0
def compare_sources(input_url):
    kwargs = dict(config=None, tool=None, input_url=input_url)

    with SimTelEventSource(**kwargs) as simtel_source, \
            HESSIOEventSource(**kwargs) as hessio_source:

        for s, h in zip_longest(simtel_source, hessio_source):

            assert s is not None
            assert h is not None

            assert h.count == s.count
            assert h.r0.obs_id == s.r0.obs_id
            assert h.r0.event_id == s.r0.event_id
            assert h.r0.tels_with_data == s.r0.tels_with_data

            assert (h.trig.tels_with_trigger == s.trig.tels_with_trigger).all()
            assert h.trig.gps_time == s.trig.gps_time

            assert h.mc.energy == s.mc.energy
            assert h.mc.alt == s.mc.alt
            assert h.mc.az == s.mc.az
            assert h.mc.core_x == s.mc.core_x
            assert h.mc.core_y == s.mc.core_y

            assert h.mc.h_first_int == s.mc.h_first_int
            assert h.mc.x_max == s.mc.x_max
            assert h.mc.shower_primary_id == s.mc.shower_primary_id
            assert (h.mcheader.run_array_direction == s.mcheader.run_array_direction).all()

            tels_with_data = s.r0.tels_with_data
            for tel_id in tels_with_data:

                assert h.mc.tel[tel_id].reference_pulse_shape.dtype == s.mc.tel[tel_id].reference_pulse_shape.dtype
                assert type(h.mc.tel[tel_id].meta['refstep']) is type(s.mc.tel[tel_id].meta['refstep'])
                assert type(h.mc.tel[tel_id].time_slice) is type(s.mc.tel[tel_id].time_slice)

                assert (h.mc.tel[tel_id].dc_to_pe == s.mc.tel[tel_id].dc_to_pe).all()
                assert (h.mc.tel[tel_id].pedestal == s.mc.tel[tel_id].pedestal).all()
                assert h.r0.tel[tel_id].waveform.shape == s.r0.tel[tel_id].waveform.shape
                assert np.allclose(h.r0.tel[tel_id].waveform, s.r0.tel[tel_id].waveform)
                assert (h.r0.tel[tel_id].num_samples == s.r0.tel[tel_id].num_samples)
                assert (h.r0.tel[tel_id].image == s.r0.tel[tel_id].image).all()

                assert h.r0.tel[tel_id].num_trig_pix == s.r0.tel[tel_id].num_trig_pix
                assert (h.r0.tel[tel_id].trig_pix_id == s.r0.tel[tel_id].trig_pix_id).all()
                assert (h.mc.tel[tel_id].reference_pulse_shape == s.mc.tel[tel_id].reference_pulse_shape).all()

                assert (h.mc.tel[tel_id].photo_electron_image == s.mc.tel[tel_id].photo_electron_image).all()
                assert h.mc.tel[tel_id].meta == s.mc.tel[tel_id].meta
                assert h.mc.tel[tel_id].time_slice == s.mc.tel[tel_id].time_slice
                assert h.mc.tel[tel_id].azimuth_raw == s.mc.tel[tel_id].azimuth_raw
                assert h.mc.tel[tel_id].altitude_raw == s.mc.tel[tel_id].altitude_raw
コード例 #11
0
def test_that_event_is_not_modified_after_loop():

    dataset = get_dataset_path("gamma_test.simtel.gz")
    with HESSIOEventSource(input_url=dataset, max_events=2) as source:
        for event in source:
            last_event = copy.deepcopy(event)

        # now `event` should be identical with the deepcopy of itself from
        # inside the loop.
        # Unfortunately this does not work:
        #      assert last_event == event
        # So for the moment we just compare event ids
        assert event.r0.event_id == last_event.r0.event_id
コード例 #12
0
ファイル: conftest.py プロジェクト: tokonatu/ctapipe
def _global_example_event():
    """
    helper to get a single event from a MC file. Don't use this fixture
    directly, rather use `test_event`
    """
    filename = get_dataset_path('gamma_test.simtel.gz')

    print("******************** LOAD TEST EVENT ***********************")

    with HESSIOEventSource(input_url=filename) as reader:
        seeker = EventSeeker(reader)
        event = seeker['409']

    return event
コード例 #13
0
    def setup(self):
        self.log_format = "%(levelname)s: %(message)s [%(name)s.%(funcName)s]"
        kwargs = dict(config=self.config, tool=self)

        self.eventsource = HESSIOEventSource(**kwargs)

        extractor = ChargeExtractorFactory.produce(**kwargs)

        self.r1 = HESSIOR1Calibrator(**kwargs)

        self.dl0 = CameraDL0Reducer(**kwargs)

        self.dl1 = CameraDL1Calibrator(extractor=extractor, **kwargs)

        self.calculator = ChargeResolutionCalculator(**kwargs)
コード例 #14
0
ファイル: test_r1.py プロジェクト: tokonatu/ctapipe
def test_factory_from_eventsource():
    dataset = get_dataset_path("gamma_test.simtel.gz")
    eventsource = HESSIOEventSource(input_url=dataset)
    calibrator = CameraR1CalibratorFactory.produce(eventsource=eventsource)
    assert isinstance(calibrator, HESSIOR1Calibrator)
コード例 #15
0
def compare_sources(input_url):
    pytest.importorskip("pyhessio")

    with SimTelEventSource(
            input_url=input_url) as simtel_source, HESSIOEventSource(
                input_url=input_url) as hessio_source:

        for s, h in zip_longest(simtel_source, hessio_source):

            assert s is not None
            assert h is not None

            assert h.count == s.count
            assert h.r0.obs_id == s.r0.obs_id
            assert h.r0.event_id == s.r0.event_id
            assert h.r0.tels_with_data == s.r0.tels_with_data

            assert (h.trig.tels_with_trigger == s.trig.tels_with_trigger).all()
            assert h.trig.gps_time == s.trig.gps_time

            assert h.mc.energy == s.mc.energy
            assert h.mc.alt == s.mc.alt
            assert h.mc.az == s.mc.az
            assert h.mc.core_x == s.mc.core_x
            assert h.mc.core_y == s.mc.core_y

            assert h.mc.h_first_int == s.mc.h_first_int
            assert h.mc.x_max == s.mc.x_max
            assert h.mc.shower_primary_id == s.mc.shower_primary_id
            assert (h.mcheader.run_array_direction ==
                    s.mcheader.run_array_direction).all()

            tels_with_data = s.r0.tels_with_data
            for tel_id in tels_with_data:
                assert (h.mc.tel[tel_id].dc_to_pe == s.mc.tel[tel_id].dc_to_pe
                        ).all()
                assert (h.mc.tel[tel_id].pedestal == s.mc.tel[tel_id].pedestal
                        ).all()
                assert (h.r0.tel[tel_id].waveform.shape ==
                        s.r0.tel[tel_id].waveform.shape)
                assert (h.r1.tel[tel_id].waveform.shape ==
                        s.r1.tel[tel_id].waveform.shape)
                assert np.allclose(h.r0.tel[tel_id].waveform,
                                   s.r0.tel[tel_id].waveform)
                assert np.allclose(h.r1.tel[tel_id].waveform,
                                   s.r1.tel[tel_id].waveform)

                assert h.r0.tel[tel_id].num_trig_pix == s.r0.tel[
                    tel_id].num_trig_pix
                assert (h.r0.tel[tel_id].trig_pix_id ==
                        s.r0.tel[tel_id].trig_pix_id).all()

                assert (h.mc.tel[tel_id].photo_electron_image ==
                        s.mc.tel[tel_id].photo_electron_image).all()
                assert h.mc.tel[tel_id].meta == s.mc.tel[tel_id].meta
                assert h.mc.tel[tel_id].azimuth_raw == s.mc.tel[
                    tel_id].azimuth_raw
                assert h.mc.tel[tel_id].altitude_raw == s.mc.tel[
                    tel_id].altitude_raw
                assert h.pointing[tel_id].altitude == s.pointing[
                    tel_id].altitude
                assert h.pointing[tel_id].azimuth == s.pointing[tel_id].azimuth

                h_camera = h.inst.subarray.tel[tel_id].camera
                s_camera = s.inst.subarray.tel[tel_id].camera
                assert h_camera.readout.sampling_rate == s_camera.readout.sampling_rate
                assert np.array_equal(
                    h_camera.readout.reference_pulse_shape,
                    s_camera.readout.reference_pulse_shape,
                )
                assert (h_camera.readout.reference_pulse_sample_width ==
                        s_camera.readout.reference_pulse_sample_width)