@@ -377,7 +377,7 @@ def _get_read_blocks(self) -> Iterator[dict]: # noqa: C901
377377 timestamps = []
378378 for amplifier_dataset in amplifier_datasets_to_compress :
379379 recording = si .read_binary (amplifier_dataset , ** binary_info )
380-
380+ recording_samples = recording . get_num_samples ()
381381 # unsigned to signed
382382 recording = spre .unsigned_to_signed (
383383 recording , bit_depth = adc_depth
@@ -391,8 +391,6 @@ def _get_read_blocks(self) -> Iterator[dict]: # noqa: C901
391391 # update cumulative start frame
392392 cumulative_start_frame += recording .get_num_frames ()
393393
394- recording_list .append (recording )
395-
396394 # align timestamps based on harp sync data
397395 clock_dataset_name = amplifier_dataset .name .replace (
398396 "AmplifierData" , "Clock"
@@ -414,11 +412,24 @@ def _get_read_blocks(self) -> Iterator[dict]: # noqa: C901
414412 clock_data = np .memmap (
415413 clock_dataset , dtype = "uint64" , mode = "r"
416414 )
417- harp_data = pd .read_csv (harp_sync_dataset )
415+ harp_data = pd .read_csv (harp_sync_dataset , index_col = False )
416+ # Drop rows with missing values (NaNs/zeros)
417+ harp_data = harp_data [harp_data != 0 ].dropna ()
418418 timestamps_chunk = self ._sync_chronic_timestamps (
419419 clock_data , harp_data , fs = recording .sampling_frequency
420420 )
421+ timestamps_samples = len (timestamps_chunk )
422+ if timestamps_samples != recording_samples :
423+ logging .warning ( # pragma: no cover
424+ f"Number of timestamps ({ timestamps_samples } ) "
425+ f"does not match recording samples "
426+ f"({ recording_samples } ). "
427+ f"Skipping chunk { amplifier_dataset .name } !"
428+ )
429+ continue # pragma: no cover
430+
421431 timestamps .append (timestamps_chunk )
432+ recording_list .append (recording )
422433
423434 # concatenate recordings
424435 recording_concatenated = si .concatenate_recordings (recording_list )
0 commit comments