diff --git a/fsl/data/dicom.py b/fsl/data/dicom.py index 88d4f602347e4eec22f36bb9c9313bc2dcd0d307..9abee46b91d285e0f9a0445d9472832ff3f792fe 100644 --- a/fsl/data/dicom.py +++ b/fsl/data/dicom.py @@ -152,8 +152,9 @@ def scanDir(dcmdir): if not enabled(): raise RuntimeError('dcm2niix is not available or is too old') - dcmdir = op.abspath(dcmdir) - cmd = 'dcm2niix -b o -ba n -f %s -o . {}'.format(dcmdir) + dcmdir = op.abspath(dcmdir) + cmd = 'dcm2niix -b o -ba n -f %s -o . {}'.format(dcmdir) + snumPattern = re.compile('^[0-9]+') with tempdir.tempdir() as td: @@ -165,11 +166,17 @@ def scanDir(dcmdir): if len(files) == 0: return [] - # sort numerically by series number - def sortkey(f): - return int(op.splitext(op.basename(f))[0]) + # sort numerically by series number if possible + try: + def sortkey(f): + match = re.match(snumPattern, f) + snum = int(match.group(0)) + return snum - files = sorted(files, key=sortkey) + files = sorted(files, key=sortkey) + + except Exception: + files = sorted(files) series = [] for fn in files: