def test_event_id(): url = get_dataset_path("chec_r1.tio") source = TargetIOEventSource(input_url=url) event_id = 2 source._get_event_by_id(event_id) assert (event_id == source._reader.fCurrentEventID) assert (round(source._r1_samples[0, 0, 0]) == -274)
def test_eventseeker(): dataset = get_dataset_path("chec_r1.tio") with TargetIOEventSource(input_url=dataset) as source: seeker = EventSeeker(source) event = seeker[0] assert source._event_index == 0 assert source._event_id == 2 assert event.count == 0 assert event.r1.event_id == 2 assert (round(source._r1_samples[0, 0, 0]) == -274) event = seeker['2'] assert source._event_index == 0 assert source._event_id == 2 assert event.count == 0 assert event.r1.event_id == 2 assert (round(source._r1_samples[0, 0, 0]) == -274) event = seeker[-1] assert event.count == len(seeker) - 1 with TargetIOEventSource(input_url=dataset, max_events=3) as source: with pytest.raises(IndexError): seeker = EventSeeker(source) seeker[5]
def test_singlemodule_r0(): url = get_dataset_path("targetmodule_r0.tio") source = TargetIOEventSource(input_url=url) event = source._get_event_by_index(0) assert (round(source._r0_samples[0, 0, 0]) == 600) assert (source._r1_samples is None) assert (event.r0.tels_with_data == {0}) assert (event.r0.tel[0].waveform[0, 0, 0] == source._r0_samples[0, 0, 0])
def test_len(): dataset = get_dataset_path("chec_r1.tio") with TargetIOEventSource(input_url=dataset) as source: count = 0 for _ in source: count += 1 assert count == len(source) with TargetIOEventSource(input_url=dataset, max_events=3) as reader: assert len(reader) == 3
def test_geom(): dataset = get_dataset_path("chec_r1.tio") with TargetIOEventSource(input_url=dataset) as source: event = source._get_event_by_index(0) assert event.inst.subarray.tels[0].camera.pix_x.size == 2048 dataset = get_dataset_path("targetmodule_r1.tio") with TargetIOEventSource(input_url=dataset) as source: event = source._get_event_by_index(0) assert event.inst.subarray.tels[0].camera.pix_x.size == 64
def test_chec_r1(): url = get_dataset_path("chec_r1.tio") source = TargetIOEventSource(input_url=url) event = source._get_event_by_index(0) assert (source._r0_samples is None) assert (source._r1_samples.shape[1] == 2048) assert (round(source._r1_samples[0, 0, 0]) == -274) assert (event.r0.tels_with_data == {0}) assert (event.r0.tel[0].waveform is None) assert (event.r1.tel[0].waveform[0, 0, 0] == source._r1_samples[0, 0, 0])
def test_pipeline(): dataset = get_dataset_path("chec_r1.tio") reader = TargetIOEventSource(input_url=dataset, max_events=10) calibrator = CameraCalibrator(eventsource=reader) for event in reader: calibrator.calibrate(event) assert event.r0.tel.keys() == event.dl1.tel.keys()
def test_that_event_is_not_modified_after_loop(): dataset = get_dataset_path("chec_r1.tio") with TargetIOEventSource(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
def test_targetio_calibrator(): from ctapipe_io_targetio import TargetIOEventSource from ctapipe.calib import CameraR1Calibrator url_r0 = get_dataset_path("targetmodule_r0.tio") url_r1 = get_dataset_path("targetmodule_r1.tio") pedpath = get_dataset_path("targetmodule_ped.tcal") source_r0 = TargetIOEventSource(input_url=url_r0) source_r1 = TargetIOEventSource(input_url=url_r1) r1c = CameraR1Calibrator.from_eventsource(eventsource=source_r0) event_r0 = source_r0._get_event_by_index(0) event_r1 = source_r1._get_event_by_index(0) r1c.calibrate(event_r0) assert_array_equal(event_r0.r0.tel[0].waveform, event_r0.r1.tel[0].waveform) r1c = CameraR1Calibrator.from_eventsource(eventsource=source_r0, pedestal_path=pedpath) r1c.calibrate(event_r0) assert_array_almost_equal( event_r0.r1.tel[0].waveform, event_r1.r1.tel[0].waveform, 1, )
def test_loop(): dataset = get_dataset_path("chec_r1.tio") with TargetIOEventSource(input_url=dataset) as source: count = 0 for event in source: assert event.r0.tels_with_data == {0} assert event.count == count count += 1 for event in source: # Check generator has restarted from beginning assert event.count == 0 break
def test_stream(): dataset = get_dataset_path("chec_r1.tio") with TargetIOEventSource(input_url=dataset) as source: assert not source.is_stream
def test_compatible(): dataset = get_dataset_path("chec_r1.tio") assert TargetIOEventSource.is_compatible(dataset) dataset = get_dataset_path("gamma_test_large.simtel.gz") assert not TargetIOEventSource.is_compatible(dataset)