Skip to content

Commit 801b295

Browse files
committed
Update BIDSDataGrabber for pybids 0.7, including tests, and derivatives handling
1 parent 8db5111 commit 801b295

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ before_install:
8787

8888
- travis_retry pip install -r requirements.txt
8989
- travis_retry pip install grabbit==0.1.2
90-
- travis_retry git clone -b 0.6.5 https://github.com/INCF/pybids.git ${HOME}/pybids && pip install -e ${HOME}/pybids
90+
- travis_retry git clone https://github.com/INCF/pybids.git ${HOME}/pybids && pip install -e ${HOME}/pybids
9191

9292
install:
9393
- travis_retry pip install $EXTRA_PIP_FLAGS -e .[$NIPYPE_EXTRAS]

nipype/interfaces/io.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2761,8 +2761,10 @@ class BIDSDataGrabberInputSpec(DynamicTraitedSpec):
27612761
desc='Generate exception if list is empty '
27622762
'for a given field')
27632763
return_type = traits.Enum('file', 'namedtuple', usedefault=True)
2764-
strict = traits.Bool(desc='Return only BIDS "proper" files (e.g., '
2765-
'ignore derivatives/, sourcedata/, etc.)')
2764+
index_derivatives = traits.Bool(False, usedefault=True,
2765+
desc='Index derivatives/ sub-directory')
2766+
extra_derivatives = traits.List(Directory(exists=True),
2767+
desc='Additional derivative directories to index')
27662768

27672769

27682770
class BIDSDataGrabber(IOBase):
@@ -2788,7 +2790,7 @@ class BIDSDataGrabber(IOBase):
27882790
are filtered on common entities, which can be explicitly defined as
27892791
infields.
27902792
2791-
>>> bg = BIDSDataGrabber(infields = ['subject'], outfields = ['dwi'])
2793+
>>> bg = BIDSDataGrabber(infields = ['subject'])
27922794
>>> bg.inputs.base_dir = 'ds005/'
27932795
>>> bg.inputs.subject = '01'
27942796
>>> bg.inputs.output_query['dwi'] = dict(modality='dwi')
@@ -2810,8 +2812,10 @@ def __init__(self, infields=None, **kwargs):
28102812

28112813
if not isdefined(self.inputs.output_query):
28122814
self.inputs.output_query = {
2813-
"func": {"modality": "func", 'extensions': ['nii', '.nii.gz']},
2814-
"anat": {"modality": "anat", 'extensions': ['nii', '.nii.gz']},
2815+
"bold": {"datatype": "func", "suffix": "bold",
2816+
"extensions": ["nii", ".nii.gz"]},
2817+
"T1w": {"datatype": "anat", "suffix": "T1w",
2818+
"extensions": ["nii", ".nii.gz"]},
28152819
}
28162820

28172821
# If infields is empty, use all BIDS entities
@@ -2838,10 +2842,11 @@ def _run_interface(self, runtime):
28382842
return runtime
28392843

28402844
def _list_outputs(self):
2841-
exclude = None
2842-
if self.inputs.strict:
2843-
exclude = ['derivatives/', 'code/', 'sourcedata/']
2844-
layout = bidslayout.BIDSLayout(self.inputs.base_dir, exclude=exclude)
2845+
layout = bidslayout.BIDSLayout(self.inputs.base_dir,
2846+
derivatives=self.inputs.derivatives)
2847+
2848+
if isdefined(self.inputs.extra_derivatives):
2849+
layout.add_derivatives(self.inputs.extra_derivatives)
28452850

28462851
# If infield is not given nm input value, silently ignore
28472852
filters = {}

nipype/interfaces/tests/test_io.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -591,9 +591,9 @@ def test_bids_grabber(tmpdir):
591591
bg.inputs.base_dir = os.path.join(datadir, 'ds005')
592592
bg.inputs.subject = '01'
593593
results = bg.run()
594-
assert 'sub-01_T1w.nii.gz' in map(os.path.basename, results.outputs.anat)
594+
assert 'sub-01_T1w.nii.gz' in map(os.path.basename, results.outputs.T1w)
595595
assert 'sub-01_task-mixedgamblestask_run-01_bold.nii.gz' in \
596-
map(os.path.basename, results.outputs.func)
596+
map(os.path.basename, results.outputs.bold)
597597

598598

599599
@pytest.mark.skipif(not have_pybids,

0 commit comments

Comments
 (0)