Skip to content

Commit 9bbfd58

Browse files
committed
Natural sort of experiment and recording names
1 parent ba93998 commit 9bbfd58

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

neo/rawio/openephysbinaryrawio.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import json
1616

1717
from pathlib import Path
18+
from natsort import natsorted
1819

1920
import numpy as np
2021

@@ -454,10 +455,18 @@ def explore_folder(dirname, experiment_names=None):
454455
# now create all_streams, nb_block, nb_segment_per_block (from first recording Node)
455456
recording_node = folder_structure[list(folder_structure.keys())[0]]
456457
nb_block = len(recording_node['experiments'])
457-
for block_index, experiment in enumerate(recording_node['experiments']):
458+
# natural sort experiment names so that block_index sequentially indicate experiments
459+
experiment_names = [e['name'] for e in recording_node['experiments']]
460+
experiment_order = np.argsort([int(ename.replace('experiment', '')) for ename in experiment_names])
461+
for block_index, exp_index in enumerate(experiment_order):
462+
experiment = recording_node['experiments'][exp_index]
458463
nb_segment_per_block[block_index] = len(experiment['recordings'])
459464
all_streams[block_index] = {}
460-
for seg_index, recording in enumerate(experiment['recordings']):
465+
# natural sort recording names so that seg_index sequentially indicate recordings
466+
recording_names = [r['name'] for r in experiment['recordings']]
467+
recording_order = np.argsort([int(rname.replace('recording', '')) for rname in recording_names])
468+
for seg_index, rec_index in enumerate(recording_order):
469+
recording = experiment['recordings'][rec_index]
461470
all_streams[block_index][seg_index] = {}
462471
for stream_type in recording['streams']:
463472
all_streams[block_index][seg_index][stream_type] = {}

0 commit comments

Comments
 (0)