Skip to content

Commit dfdf2f5

Browse files
committed
Use normalize_mc_params in SpecifyModel
1 parent 2831b40 commit dfdf2f5

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed

nipype/algorithms/modelgen.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
traits, File, Bunch, BaseInterfaceInputSpec,
3434
isdefined)
3535
from ..utils.filemanip import filename_to_list
36+
from ..utils.misc import normalize_mc_params
3637
from .. import config, logging
3738
iflogger = logging.getLogger('interface')
3839

@@ -187,7 +188,7 @@ class SpecifyModelInputSpec(BaseInterfaceInputSpec):
187188
realignment_parameters = InputMultiPath(File(exists=True),
188189
desc="Realignment parameters returned by motion correction algorithm",
189190
copyfile=False)
190-
parameter_source = traits.Enum("SPM", "FSL", "AFNI", "NiPy", "FSFAST",
191+
parameter_source = traits.Enum("SPM", "FSL", "AFNI", "FSFAST",
191192
desc="Source of motion parameters")
192193
outlier_files = InputMultiPath(File(exists=True),
193194
desc="Files containing scan outlier indices that should be tossed",
@@ -377,16 +378,16 @@ def _generate_standard_design(self, infolist,
377378
def _generate_design(self, infolist=None):
378379
"""Generate design specification for a typical fmri paradigm
379380
"""
380-
par_selection = slice(6)
381-
if isdefined(self.inputs.parameter_source):
382-
source = self.inputs.parameter_source
383-
if source == 'FSFAST':
384-
par_selection = slice(1, 7)
385381
realignment_parameters = []
386382
if isdefined(self.inputs.realignment_parameters):
383+
source = self.inputs.parameter_source
387384
for parfile in self.inputs.realignment_parameters:
388-
realignment_parameters.append(
389-
np.loadtxt(parfile)[:, par_selection])
385+
mpars = np.loadtxt(parfile)
386+
if isdefined(source):
387+
mpars = np.apply_along_axis(func1d=normalize_mc_params,
388+
axis=1, arr=mpars,
389+
source=source)
390+
realignment_parameters.append(mpars)
390391
outliers = []
391392
if isdefined(self.inputs.outlier_files):
392393
for filename in self.inputs.outlier_files:
@@ -428,6 +429,8 @@ def _list_outputs(self):
428429
class SpecifySPMModelInputSpec(SpecifyModelInputSpec):
429430
concatenate_runs = traits.Bool(False, usedefault=True,
430431
desc="Concatenate all runs to look like a single session.")
432+
parameter_source = traits.Enum("SPM", "FSL", "AFNI", "FSFAST", usedefault=True,
433+
desc="Source of motion parameters")
431434
output_units = traits.Enum('secs', 'scans', usedefault=True,
432435
desc="Units of design event onsets and durations (secs or scans)")
433436

@@ -539,7 +542,9 @@ def _generate_design(self, infolist=None):
539542
if isdefined(self.inputs.realignment_parameters):
540543
realignment_parameters = []
541544
for parfile in self.inputs.realignment_parameters:
542-
mc = np.loadtxt(parfile)
545+
mc = np.apply_along_axis(func1d=normalize_mc_params,
546+
axis=1, arr=np.loadtxt(parfile),
547+
source=source)
543548
if not realignment_parameters:
544549
realignment_parameters.insert(0, mc)
545550
else:

nipype/algorithms/tests/test_auto_SpecifySPMModel.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ def test_SpecifySPMModel_inputs():
2323
),
2424
output_units=dict(usedefault=True,
2525
),
26-
parameter_source=dict(),
26+
parameter_source=dict(usedefault=True,
27+
),
2728
realignment_parameters=dict(copyfile=False,
2829
),
2930
subject_info=dict(mandatory=True,

0 commit comments

Comments
 (0)