Skip to content

Commit 703de29

Browse files
committed
Merge branch 'maint/1.4.x'
2 parents cfb9e3f + 6373632 commit 703de29

File tree

5 files changed

+55
-17
lines changed

5 files changed

+55
-17
lines changed

CHANGES.rst

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,15 @@ This release upgrades the Dockerfile to use FSL6, and includes some new interfac
2424
* FIX: Scipy docs path (#681)
2525
* TEST: Drop excessively long interface equivalence tests (#674)
2626

27+
1.4.7 (March 31, 2022)
28+
======================
29+
Bug-fix release in the 1.4.x series.
30+
31+
* FIX: Use copy function that does not preserve mtime when creating fsaverage directories (#703)
32+
* FIX: Add unlink() with missing_ok for Python 3.7 (#695)
33+
* ENH: Select magnitude images in collect_data for BIDS 1.5.0 (#594)
34+
* CI: Install package across Python versions and run pytest (#697)
35+
2736
1.4.6 (March 09, 2022)
2837
======================
2938
Patch release in the 1.4.x series.
@@ -182,6 +191,12 @@ A list of prominent changes can be found below. (With thanks to Lea Waller for t
182191
* ``NormalizeMotionParams`` now under ``confounds``.
183192
* ``FMRISummary``, ``CompCorVariancePlot``, ``ConfoundsCorrelationPlot`` from ``plotting``
184193

194+
1.3.7 (March 31, 2022)
195+
======================
196+
Bug-fix release in the 1.3.x series
197+
198+
* FIX: Use copy function that does not preserve mtime when creating fsaverage directories (#703)
199+
185200
1.3.6 (March 09, 2022)
186201
======================
187202
Bug-fix release in the 1.3.x series

niworkflows/data/nipreps.json

Lines changed: 26 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,22 @@
4949
"name": "echo",
5050
"pattern": "[_/\\\\]+echo-([0-9]+)"
5151
},
52+
{
53+
"name": "flip",
54+
"pattern": "[_/\\\\]+flip-([0-9]+)"
55+
},
56+
{
57+
"name": "inv",
58+
"pattern": "[_/\\\\]+inv-([0-9]+)"
59+
},
60+
{
61+
"name": "mt",
62+
"pattern": "[_/\\\\]+mt-(on|off)"
63+
},
64+
{
65+
"name": "part",
66+
"pattern": "[_/\\\\]+part-(mag|phase|real|imag)"
67+
},
5268
{
5369
"name": "recording",
5470
"pattern": "[_/\\\\]+recording-([a-zA-Z0-9]+)"
@@ -136,26 +152,28 @@
136152
}
137153
],
138154
"default_path_patterns": [
155+
"sub-{subject}[/ses-{session}]/{datatype<anat>|anat}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<T1w|T2w|T1rho|T1map|T2map|T2starmap|FLAIR|FLASH|PDmap|PD|PDT2|dseg|inplaneT[12]|angio|T2starw|MTw|TSE>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
139156
"sub-{subject}[/ses-{session}]/{datatype<anat>|anat}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<T1w|T2w|T1rho|T1map|T2map|T2starmap|FLAIR|FLASH|PDmap|PD|PDT2|dseg|inplaneT[12]|angio|T2starw|MTw|TSE>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
140157
"sub-{subject}[/ses-{session}]/{datatype<anat>|anat}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}]_from-{from}_to-{to}_mode-{mode<image|points>|image}_{suffix<xfm>|xfm}{extension<.txt|.h5>}",
141158
"sub-{subject}[/ses-{session}]/{datatype<anat>|anat}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}]_hemi-{hemi<L|R>}[_space-{space}][_cohort-{cohort}][_den-{density}]_{suffix<wm|smoothwm|pial|midthickness|inflated|vinflated|sphere|flat>}{extension<.surf.gii>}",
142159
"sub-{subject}[/ses-{session}]/{datatype<anat>|anat}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}]_desc-{desc}_{suffix<mask>|mask}{extension<.nii|.nii.gz|.json>|.nii.gz}",
143160
"sub-{subject}[/ses-{session}]/{datatype<anat>|anat}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}]_label-{label}[_desc-{desc}]_{suffix<probseg>|probseg}{extension<.nii|.nii.gz|.json>|.nii.gz}",
144-
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<bold|cbv|phase|sbref|boldref|dseg>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
161+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<bold|cbv|sbref|boldref|dseg>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
162+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<phase>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
145163
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}]_from-{from}_to-{to}_mode-{mode<image|points>|image}_{suffix<xfm>|xfm}{extension<.txt|.h5>}",
146-
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_res-{resolution}]_desc-{desc}_{suffix<mask>|mask}{extension<.nii|.nii.gz|.json>|.nii.gz}",
147-
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<AROMAnoiseICs>|AROMAnoiseICs}{extension<.csv|.tsv>|.csv}",
148-
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<timeseries|regressors>|timeseries}{extension<.json|.tsv>|.tsv}",
149-
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<components|mixing>|components}{extension<.json|.tsv|.nii|.nii.gz>|.tsv}",
150-
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<decomposition>|decomposition}{extension<.json>|.json}",
164+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_res-{resolution}]_desc-{desc}_{suffix<mask>|mask}{extension<.nii|.nii.gz|.json>|.nii.gz}",
165+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<AROMAnoiseICs>|AROMAnoiseICs}{extension<.csv|.tsv>|.csv}",
166+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<timeseries|regressors>|timeseries}{extension<.json|.tsv>|.tsv}",
167+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<components|mixing>|components}{extension<.json|.tsv|.nii|.nii.gz>|.tsv}",
168+
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<decomposition>|decomposition}{extension<.json>|.json}",
151169
"sub-{subject}[/ses-{session}]/{datatype<func>|func}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_hemi-{hemi<L|R>}][_space-{space}][_cohort-{cohort}][_den-{density}][_desc-{desc}]_{suffix<bold>}{extension<.dtseries.nii|.dtseries.json|.func.gii|.func.json>}",
152170
"sub-{subject}[/ses-{session}]/{datatype<dwi>|dwi}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<dwi|epiref|lowb|dseg>}{extension<.json|.nii.gz|.nii>|.nii.gz}",
153171
"sub-{subject}[/ses-{session}]/{datatype<dwi>|dwi}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}]_desc-{desc}_{suffix<mask>}{extension<.json|.nii.gz|.nii>|.nii.gz}",
154172
"sub-{subject}[/ses-{session}]/{datatype<dwi>|dwi}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_desc-{desc}]_{suffix<dwi>}{extension<.tsv|.bval|.bvec>|.tsv}",
155173
"sub-{subject}[/ses-{session}]/{datatype<dwi>|dwi}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_rec-{reconstruction}][_dir-{direction}][_run-{run}]_from-{from}_to-{to}_mode-{mode<image|points>|image}_{suffix<xfm>|xfm}{extension<.txt|.h5>}",
156-
"sub-{subject}[/ses-{session}]/{datatype<fmap>|fmap}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_dir-{direction}][_run-{run}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_fmapid-{fmapid}][_desc-{desc}]_{suffix<fieldmap>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
174+
"sub-{subject}[/ses-{session}]/{datatype<fmap>|fmap}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_dir-{direction}][_run-{run}][_part-{part}][_space-{space}][_cohort-{cohort}][_res-{resolution}][_fmapid-{fmapid}][_desc-{desc}]_{suffix<fieldmap>}{extension<.nii|.nii.gz|.json>|.nii.gz}",
157175
"sub-{subject}/{datatype<figures>}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<T1w|T2w|T1rho|T1map|T2map|T2star|FLAIR|FLASH|PDmap|PD|PDT2|inplaneT[12]|angio|dseg|mask|dwi|epiref|T2starw|MTw|TSE>}{extension<.html|.svg>|.svg}",
158176
"sub-{subject}/{datatype<figures>}/sub-{subject}[_ses-{session}][_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_run-{run}][_space-{space}][_cohort-{cohort}][_fmapid-{fmapid}][_desc-{desc}]_{suffix<fieldmap>}{extension<.html|.svg>|.svg}",
159-
"sub-{subject}/{datatype<figures>}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<bold>}{extension<.html|.svg>|.svg}"
177+
"sub-{subject}/{datatype<figures>}/sub-{subject}[_ses-{session}]_task-{task}[_acq-{acquisition}][_ce-{ceagent}][_rec-{reconstruction}][_dir-{direction}][_run-{run}][_echo-{echo}][_part-{part}][_space-{space}][_cohort-{cohort}][_desc-{desc}]_{suffix<bold>}{extension<.html|.svg>|.svg}"
160178
]
161179
}

niworkflows/interfaces/bids.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
from collections import defaultdict
2525
from json import dumps, loads
2626
from pathlib import Path
27-
from shutil import copytree, rmtree
27+
import shutil
2828
from pkg_resources import resource_filename as _pkgres
2929
import re
3030

@@ -913,10 +913,15 @@ def _run_interface(self, runtime):
913913

914914
# Finesse is overrated. Either leave it alone or completely clobber it.
915915
if dest.exists() and self.inputs.overwrite_fsaverage:
916-
rmtree(dest)
916+
shutil.rmtree(dest)
917917
if not dest.exists():
918918
try:
919-
copytree(source, dest)
919+
# Use copy instead of copy2; copy calls copymode while copy2 calls
920+
# copystat, which will preserve atime/mtime.
921+
# atime should *not* be copied to avoid triggering processes that
922+
# sweep un-accessed files.
923+
# If we want to preserve mtime, that will require a new copy function.
924+
shutil.copytree(source, dest, copy_function=shutil.copy)
920925
except FileExistsError:
921926
LOGGER.warning(
922927
"%s exists; if multiple jobs are running in parallel"

niworkflows/utils/bids.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -219,11 +219,11 @@ def collect_data(
219219

220220
queries = {
221221
"fmap": {"datatype": "fmap"},
222-
"bold": {"datatype": "func", "suffix": "bold"},
223-
"sbref": {"datatype": "func", "suffix": "sbref"},
224-
"flair": {"datatype": "anat", "suffix": "FLAIR"},
225-
"t2w": {"datatype": "anat", "suffix": "T2w"},
226-
"t1w": {"datatype": "anat", "suffix": "T1w"},
222+
"bold": {"datatype": "func", "suffix": "bold", "part": ["mag", None]},
223+
"sbref": {"datatype": "func", "suffix": "sbref", "part": ["mag", None]},
224+
"flair": {"datatype": "anat", "suffix": "FLAIR", "part": ["mag", None]},
225+
"t2w": {"datatype": "anat", "suffix": "T2w", "part": ["mag", None]},
226+
"t1w": {"datatype": "anat", "suffix": "T1w", "part": ["mag", None]},
227227
"roi": {"datatype": "anat", "suffix": "roi"},
228228
}
229229
bids_filters = bids_filters or {}

setup.cfg

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ install_requires =
3636
numpy
3737
packaging
3838
pandas
39-
pybids >= 0.15
39+
pybids ~= 0.15.1
4040
PyYAML
4141
scikit-image
4242
scipy

0 commit comments

Comments
 (0)