Skip to content

Commit fdec1de

Browse files
committed
Better handling of block indices and segment indices
1 parent f18f843 commit fdec1de

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

neo/rawio/openephysbinaryrawio.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -352,6 +352,7 @@ def explore_folder(dirname, experiment_names=None):
352352
nb_segment_per_block = {}
353353
# nested dictionary: block_index > seg_index > data_type > stream_name
354354
all_streams = {}
355+
block_names_dict = {}
355356
possible_experiment_names = []
356357
for root, dirs, files in os.walk(dirname):
357358
for file in files:
@@ -365,26 +366,32 @@ def explore_folder(dirname, experiment_names=None):
365366
# so no node_name
366367
node_name = ''
367368

368-
# here we skip if self.experiment_names is not None
369+
# here we skip if experiment_names is not None
369370
experiment_name = root.parents[0].stem
370371
possible_experiment_names.append(experiment_name)
371372
if experiment_names is not None and experiment_name not in experiment_names:
372373
continue
373-
block_index = int(root.parents[0].stem.lower().replace('experiment', '')) - 1
374-
if block_index not in all_streams:
374+
block_name = experiment_name
375+
if block_name not in block_names_dict:
376+
block_index = nb_block
377+
segment_names_dict = {}
378+
block_names_dict[experiment_name] = block_index
375379
all_streams[block_index] = {}
376-
nb_block += 1
377380
nb_segment_per_block[block_index] = 0
381+
nb_block += 1
382+
seg_index = -1
378383

379-
seg_index = int(root.stem.replace('recording', '')) - 1
380-
if seg_index not in all_streams[block_index]:
384+
recording_name = root.stem
385+
if recording_name not in segment_names_dict:
386+
# segment index restarts from zero for each block (index)
387+
seg_index += 1
381388
all_streams[block_index][seg_index] = {
382389
'continuous': {},
383390
'events': {},
384391
'spikes': {},
385392
}
386-
if seg_index >= nb_segment_per_block[block_index]:
387-
nb_segment_per_block[block_index] = seg_index + 1
393+
segment_names_dict[recording_name] = seg_index
394+
nb_segment_per_block[block_index] += 1
388395

389396
# metadata
390397
with open(root / 'structure.oebin', encoding='utf8', mode='r') as f:
@@ -440,7 +447,7 @@ def check_stream_consistency(all_streams, nb_block, nb_segment_per_block, possib
440447
for block_index in range(nb_block):
441448
segment_stream_names = None
442449
if nb_segment_per_block[block_index] > 1:
443-
for segment_index in range(nb_segment_per_block[block_index]):
450+
for segment_index in all_streams[block_index]:
444451
stream_names = sorted(list(all_streams[block_index][segment_index]["continuous"].keys()))
445452
if segment_stream_names is None:
446453
segment_stream_names = stream_names

0 commit comments

Comments
 (0)