@@ -176,7 +176,6 @@ def _parse_header(self):
176176 # event channels are characterized by (name, id, type), with type in ['event', 'epoch']
177177 channel_name = echannel_info .m_Name .decode ()
178178 event_channels .append ((channel_name , echannel_info .m_Channel , 'event' ))
179- self ._event_channel_cache [channel_name ] = self .pl2reader .pl2_get_digital_channel_data_by_name (channel_name )
180179
181180 event_channels = np .array (event_channels , dtype = _event_channel_dtype )
182181
@@ -452,6 +451,10 @@ def _event_count(self, block_index, seg_index, event_channel_index):
452451 channel_header = self .header ['event_channels' ][event_channel_index ]
453452 channel_name = channel_header ['name' ]
454453
454+ # loading event channel data on demand when not already cached
455+ if channel_name not in self ._event_channel_cache :
456+ self ._event_channel_cache [channel_name ] = self .pl2reader .pl2_get_digital_channel_data_by_name (channel_name )
457+
455458 event_times , values = self ._event_channel_cache [channel_name ]
456459
457460 return len (event_times )
@@ -465,6 +468,10 @@ def _get_event_timestamps(self, block_index, seg_index, event_channel_index, t_s
465468 channel_header = self .header ['event_channels' ][event_channel_index ]
466469 channel_name = channel_header ['name' ]
467470
471+ # loading event channel data on demand when not already cached
472+ if channel_name not in self ._event_channel_cache :
473+ self ._event_channel_cache [channel_name ] = self .pl2reader .pl2_get_digital_channel_data_by_name (channel_name )
474+
468475 event_times , labels = self ._event_channel_cache [channel_name ]
469476 labels = np .asarray (labels , dtype = 'U' )
470477
0 commit comments