From 0e3ea76aa1799de2275be553d54cd4b26d9e3ae1 Mon Sep 17 00:00:00 2001 From: Hao Date: Fri, 10 Feb 2017 19:31:30 +0100 Subject: [PATCH 1/3] Datagrabber bug with the flag raise_on_empty --- nipype/interfaces/io.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/nipype/interfaces/io.py b/nipype/interfaces/io.py index 5687b3f77e..3af35b6ff5 100644 --- a/nipype/interfaces/io.py +++ b/nipype/interfaces/io.py @@ -1242,8 +1242,11 @@ def _list_outputs(self): if self.inputs.sort_filelist: outfiles = human_order_sorted(outfiles) outputs[key].append(list_to_filename(outfiles)) - if any([val is None for val in outputs[key]]): - outputs[key] = [] + if self.inputs.raise_on_empty: # if the raise_on_empty is True by default, make sure no None in outputs + if any([val is None for val in outputs[key]]): + outputs[key] = [] + else: # if the raise_on_empty is False remove the Nones in outputs + outputs[key] = [[] if x is None else x for x in outputs[key]] if len(outputs[key]) == 0: outputs[key] = None elif len(outputs[key]) == 1: From d573790fb8820101036b7b3130d34e8e1af28ef5 Mon Sep 17 00:00:00 2001 From: Hao Date: Thu, 15 Feb 2018 18:15:00 +0100 Subject: [PATCH 2/3] bug for datagrabber #1783 --- nipype/interfaces/io.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nipype/interfaces/io.py b/nipype/interfaces/io.py index 3af35b6ff5..5baf0bc9eb 100644 --- a/nipype/interfaces/io.py +++ b/nipype/interfaces/io.py @@ -1242,11 +1242,11 @@ def _list_outputs(self): if self.inputs.sort_filelist: outfiles = human_order_sorted(outfiles) outputs[key].append(list_to_filename(outfiles)) - if self.inputs.raise_on_empty: # if the raise_on_empty is True by default, make sure no None in outputs + if self.inputs.drop_blank_outputs: + outputs[key] = [x for x in outputs[key] if x is not None] + else: if any([val is None for val in outputs[key]]): outputs[key] = [] - else: # if the raise_on_empty is False remove the Nones in outputs - outputs[key] = [[] if x is None else x for x in outputs[key]] if len(outputs[key]) == 0: outputs[key] = None elif len(outputs[key]) == 1: From b8eda2d15755b9e3ff9c6572c223f86e2df2f732 Mon Sep 17 00:00:00 2001 From: "Christopher J. Markiewicz" Date: Fri, 16 Feb 2018 08:25:47 -0500 Subject: [PATCH 3/3] ENH: Add drop_blank_outputs input field --- nipype/interfaces/io.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/nipype/interfaces/io.py b/nipype/interfaces/io.py index 5baf0bc9eb..c4fdd75216 100644 --- a/nipype/interfaces/io.py +++ b/nipype/interfaces/io.py @@ -1044,6 +1044,10 @@ class DataGrabberInputSpec(DynamicTraitedSpec, BaseInterfaceInputSpec): True, usedefault=True, desc='Generate exception if list is empty for a given field') + drop_blank_outputs = traits.Bool( + False, usedefault=True, + desc="Remove ``None`` entries from output lists" + ) sort_filelist = traits.Bool( mandatory=True, desc='Sort the filelist that matches the template') template = Str(