From 09ea513aad91cc4f14c6862a9ad88ca00c8033ad Mon Sep 17 00:00:00 2001 From: Artur Glavic Date: Wed, 25 Feb 2026 14:24:13 +0100 Subject: [PATCH] try fixing empty packets error when reading new files --- eos/file_reader.py | 12 ++++++++++-- eos/reduction_e2h.py | 2 +- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/eos/file_reader.py b/eos/file_reader.py index af5aa1f..4c178ab 100644 --- a/eos/file_reader.py +++ b/eos/file_reader.py @@ -312,7 +312,12 @@ class AmorEventData(AmorHeader): super().__init__(hdf) self.hdf = hdf - self.read_event_stream() + try: + self.read_event_stream() + except EOFError: + self.hdf.close() + del(self.hdf) + raise self.read_log_streams() if type(fileName) is str: @@ -326,6 +331,9 @@ class AmorEventData(AmorHeader): Read the actual event data from file. If file is too large, find event index from packets that allow splitting of file smaller than self.max_events. """ + if self.hdf['/entry1/Amor/detector/data/event_index'].shape[0]==0: + raise EOFError(f'No event packet found starting at event #{self.first_index}, ' + f'number of events is 0') packets = np.recarray(self.hdf['/entry1/Amor/detector/data/event_index'].shape, dtype=PACKET_TYPE) packets.start_index = self.hdf['/entry1/Amor/detector/data/event_index'][:] packets.time = self.hdf['/entry1/Amor/detector/data/event_time_zero'][:] @@ -395,7 +403,7 @@ class AmorEventData(AmorHeader): pulses.time = pulseTimeS pulses.monitor = 1. # default is monitor pulses as it requires no calculation # apply filter in case the events were filtered - if self.first_index>0 or not self.EOF: + if (self.first_index>0 or not self.EOF): pulses = pulses[(pulses.time>=packets.time[0])&(pulses.time<=packets.time[-1])] self.eventStartTime = startTime return pulses diff --git a/eos/reduction_e2h.py b/eos/reduction_e2h.py index 7f3f309..6e7fa5e 100644 --- a/eos/reduction_e2h.py +++ b/eos/reduction_e2h.py @@ -301,7 +301,7 @@ class E2HReduction: try: update_data = AmorEventData(self.file_list[-1], self.dataset.last_index+1, max_events=self.config.reduction.max_events) - except (EOFError, IndexError): + except EOFError: return logging.info(" updating with new data")