Skip to content

Commit ea168e1

Browse files
committed
reduce number of SPM calls
1 parent a80b3bf commit ea168e1

File tree

2 files changed

+50
-38
lines changed

2 files changed

+50
-38
lines changed

nipype/interfaces/base.py

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -925,34 +925,36 @@ def _check_version_requirements(self, trait_object, raise_exception=True):
925925
""" Raises an exception on version mismatch
926926
"""
927927
unavailable_traits = []
928-
version = LooseVersion(str(self.version))
929-
if not version:
930-
return
931928
# check minimum version
932929
check = dict(min_ver=lambda t: t is not None)
933930
names = trait_object.trait_names(**check)
934-
for name in names:
935-
min_ver = LooseVersion(str(trait_object.traits()[name].min_ver))
936-
if min_ver > version:
937-
unavailable_traits.append(name)
938-
if not isdefined(getattr(trait_object, name)):
939-
continue
940-
if raise_exception:
941-
raise Exception('Trait %s (%s) (version %s < required %s)' %
942-
(name, self.__class__.__name__,
943-
version, min_ver))
944-
check = dict(max_ver=lambda t: t is not None)
945-
names = trait_object.trait_names(**check)
946-
for name in names:
947-
max_ver = LooseVersion(str(trait_object.traits()[name].max_ver))
948-
if max_ver < version:
949-
unavailable_traits.append(name)
950-
if not isdefined(getattr(trait_object, name)):
951-
continue
952-
if raise_exception:
953-
raise Exception('Trait %s (%s) (version %s > required %s)' %
954-
(name, self.__class__.__name__,
955-
version, max_ver))
931+
932+
if names:
933+
version = LooseVersion(str(self.version))
934+
if not version:
935+
return
936+
for name in names:
937+
min_ver = LooseVersion(str(trait_object.traits()[name].min_ver))
938+
if min_ver > version:
939+
unavailable_traits.append(name)
940+
if not isdefined(getattr(trait_object, name)):
941+
continue
942+
if raise_exception:
943+
raise Exception('Trait %s (%s) (version %s < required %s)' %
944+
(name, self.__class__.__name__,
945+
version, min_ver))
946+
check = dict(max_ver=lambda t: t is not None)
947+
names = trait_object.trait_names(**check)
948+
for name in names:
949+
max_ver = LooseVersion(str(trait_object.traits()[name].max_ver))
950+
if max_ver < version:
951+
unavailable_traits.append(name)
952+
if not isdefined(getattr(trait_object, name)):
953+
continue
954+
if raise_exception:
955+
raise Exception('Trait %s (%s) (version %s > required %s)' %
956+
(name, self.__class__.__name__,
957+
version, max_ver))
956958
return unavailable_traits
957959

958960
def _run_wrapper(self, runtime):

nipype/interfaces/spm/preprocess.py

Lines changed: 23 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -765,16 +765,21 @@ class Segment(SPMCommand):
765765
>>> seg.run() # doctest: +SKIP
766766
767767
"""
768-
769-
if Info.version() and Info.version()['name'] == "SPM12":
770-
_jobtype = 'tools'
771-
_jobname = 'oldseg'
772-
else:
773-
_jobtype = 'spatial'
774-
_jobname = 'preproc'
768+
775769

776770
input_spec = SegmentInputSpec
777771
output_spec = SegmentOutputSpec
772+
773+
def __init__(self, **inputs):
774+
version = Info.version()
775+
if version and version['name'] == "SPM12":
776+
self._jobtype = 'tools'
777+
self._jobname = 'oldseg'
778+
else:
779+
self._jobtype = 'spatial'
780+
self._jobname = 'preproc'
781+
782+
SPMCommand.__init__(self, **inputs)
778783

779784
def _format_arg(self, opt, spec, val):
780785
"""Convert input to appropriate format for spm
@@ -893,12 +898,17 @@ class NewSegment(SPMCommand):
893898

894899
input_spec = NewSegmentInputSpec
895900
output_spec = NewSegmentOutputSpec
896-
if Info.version() and Info.version()['name'] == "SPM12":
897-
_jobtype = 'spatial'
898-
_jobname = 'preproc'
899-
else:
900-
_jobtype = 'tools'
901-
_jobname = 'preproc8'
901+
902+
def __init__(self, **inputs):
903+
version = Info.version()
904+
if version and version['name'] == "SPM12":
905+
self._jobtype = 'tools'
906+
self._jobname = 'oldseg'
907+
else:
908+
self._jobtype = 'spatial'
909+
self._jobname = 'preproc'
910+
911+
SPMCommand.__init__(self, **inputs)
902912

903913
def _format_arg(self, opt, spec, val):
904914
"""Convert input to appropriate format for spm

0 commit comments

Comments
 (0)