@@ -223,12 +223,30 @@ def _parse_header(self):
223223 raise ValueError (
224224 "SYNC channel is not present in the recording. " "Set load_sync_channel to False"
225225 )
226-
227- if has_sync_trace and not self .load_sync_channel :
228- self ._stream_buffer_slice [stream_id ] = slice (None , - 1 )
226+
227+ num_neural_channels = sum (1 for ch in info ["channels" ] if "ADC" not in ch ["channel_name" ])
228+ num_non_neural_channels = sum (1 for ch in info ["channels" ] if "ADC" in ch ["channel_name" ])
229+
230+
231+ if num_non_neural_channels == 0 :
232+ if has_sync_trace and not self .load_sync_channel :
233+ self ._stream_buffer_slice [stream_id ] = slice (None , - 1 )
234+ else :
235+ self ._stream_buffer_slice [stream_id ] = None
229236 else :
230- self ._stream_buffer_slice [stream_id ] = None
231-
237+ # For ADC channels, we remove the last channel which is the Synch channel
238+ stream_id_neural = stream_id
239+ stream_id_non_neural = str (int (stream_id ) + self ._num_of_signal_streams )
240+
241+ # Note this implementation assumes that the neural channels come before the non-neural channels
242+
243+ self ._stream_buffer_slice [stream_id_neural ] = slice (0 , num_neural_channels )
244+ self ._stream_buffer_slice [stream_id_non_neural ] = slice (num_neural_channels , None )
245+
246+ # It also assumes that the synch channel is the last channel in the buffer
247+ if has_sync_trace and not self .load_sync_channel :
248+ self ._stream_buffer_slice [stream_id_non_neural ] = slice (num_neural_channels , - 1 )
249+
232250 # events zone
233251 # channel map: one channel one stream
234252 event_channels = []
0 commit comments