diff --git a/.zenodo.json b/.zenodo.json index 44159ebd58..1f85a8c38b 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -864,7 +864,13 @@ }, { "name": "Hui Qian, Tan" - } + }, + { + "affiliation": "Insitiute and Polyclinc for Diagnostic and Interventional Neuroradiology, University Hospital Carl Gustav Carus, Dresden, Germany", + "name": "Kuntke, Paul", + "orcid": "0000-0003-1838-2230" + } + ], "keywords": [ "neuroimaging", diff --git a/nipype/interfaces/io.py b/nipype/interfaces/io.py index 142139548c..78d8efc797 100644 --- a/nipype/interfaces/io.py +++ b/nipype/interfaces/io.py @@ -2866,6 +2866,9 @@ class BIDSDataGrabberInputSpec(DynamicTraitedSpec): output_query = traits.Dict( key_trait=Str, value_trait=traits.Dict, desc="Queries for outfield outputs" ) + load_layout = Directory( + exists=True, desc="Path to load already saved Bidslayout.", mandatory=False + ) raise_on_empty = traits.Bool( True, usedefault=True, @@ -2965,9 +2968,13 @@ def __init__(self, infields=None, **kwargs): def _list_outputs(self): from bids import BIDSLayout - layout = BIDSLayout( - self.inputs.base_dir, derivatives=self.inputs.index_derivatives - ) + # if load_layout is given load layout which is on some datasets much faster + if isdefined(self.inputs.load_layout): + layout = BIDSLayout.load(self.inputs.load_layout) + else: + layout = BIDSLayout( + self.inputs.base_dir, derivatives=self.inputs.index_derivatives + ) if isdefined(self.inputs.extra_derivatives): layout.add_derivatives(self.inputs.extra_derivatives) diff --git a/nipype/interfaces/tests/test_auto_BIDSDataGrabber.py b/nipype/interfaces/tests/test_auto_BIDSDataGrabber.py index dd7d45e42b..c2a899958c 100644 --- a/nipype/interfaces/tests/test_auto_BIDSDataGrabber.py +++ b/nipype/interfaces/tests/test_auto_BIDSDataGrabber.py @@ -12,6 +12,9 @@ def test_BIDSDataGrabber_inputs(): mandatory=True, usedefault=True, ), + load_layout=dict( + mandatory=False, + ), output_query=dict(), raise_on_empty=dict( usedefault=True,