Skip to content

Commit c11a92c

Browse files
committed
Sort _scans entries first by date and then by filename
1 parent 7892016 commit c11a92c

File tree

2 files changed

+8
-3
lines changed

2 files changed

+8
-3
lines changed

bin/heudiconv

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1024,11 +1024,13 @@ def add_rows_to_scans_keys_file(fn, newrows):
10241024

10251025
header = ['filename', 'acq_time', 'operator', 'randstr']
10261026
# save
1027+
# prepare all the data rows
1028+
data_rows = [[k] + v for k, v in fnames2info.items()]
1029+
# sort by the date/filename
1030+
data_rows_sorted = sorted(data_rows, key=lambda x: (x[1], x[0]))
10271031
with open(fn, 'a') as csvfile:
10281032
writer = csv.writer(csvfile, delimiter='\t')
1029-
writer.writerow(header)
1030-
for key in sorted(fnames2info.keys()):
1031-
writer.writerow([key] + fnames2info[key])
1033+
writer.writerows([header] + data_rows_sorted)
10321034

10331035

10341036
def _find_subj_ses(f_name):

tests/test_main.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,9 @@ def _check_rows(fn, rows):
175175
assert(row_ == ['filename', 'acq_time', 'operator', 'randstr'])
176176
else:
177177
assert(rows[row_[0]] == row_[1:])
178+
# dates, filename should be sorted (date "first", filename "second")
179+
dates = [(r[1], r[0]) for r in rows_loaded[1:]]
180+
assert dates == sorted(dates)
178181

179182
_check_rows(fn, rows)
180183
# add a new one

0 commit comments

Comments
 (0)