diff --git a/.zenodo.json b/.zenodo.json index 83d940fa28..5f1de88008 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -765,6 +765,11 @@ "name": "Mihai, Paul Glad", "orcid": "0000-0001-5715-6442" }, + { + "affiliation": "Department of Psychology, University of Bielefeld, Bielefeld, Germany.", + "name": "Doll, Anna", + "orcid": "0000-0002-0799-0831" + }, { "affiliation": "Department of Psychology, Stanford University", "name": "Gorgolewski, Krzysztof J.", diff --git a/nipype/interfaces/fsl/model.py b/nipype/interfaces/fsl/model.py index b4e04c690e..e06377cb4d 100644 --- a/nipype/interfaces/fsl/model.py +++ b/nipype/interfaces/fsl/model.py @@ -1574,8 +1574,7 @@ def _run_interface(self, runtime): for tcon in con[2]: convals[tconmap[self.inputs.contrasts.index(tcon)]] = 1 fcon_txt.append(" ".join(["%d" % val for val in convals])) - fcon_txt = "\n".join(fcon_txt) - fcon_txt += "\n" + fcon_txt = "\n".join(fcon_txt) + "\n" # write group file grp_txt = ["/NumWaves 1", "/NumPoints %d" % npoints, "", "/Matrix"] for i in range(npoints): diff --git a/nipype/interfaces/fsl/tests/test_model.py b/nipype/interfaces/fsl/tests/test_model.py index ea86d8f628..456e7b6492 100644 --- a/nipype/interfaces/fsl/tests/test_model.py +++ b/nipype/interfaces/fsl/tests/test_model.py @@ -6,26 +6,28 @@ import pytest import nipype.interfaces.fsl.model as fsl from nipype.interfaces.fsl import no_fsl +from pathlib import Path +from ....pipeline import engine as pe @pytest.mark.skipif(no_fsl(), reason="fsl is not installed") def test_MultipleRegressDesign(tmpdir): - tmpdir.chdir() - foo = fsl.MultipleRegressDesign() - foo.inputs.regressors = dict( + designer = pe.Node(fsl.MultipleRegressDesign(), name='designer', base_dir=str(tmpdir)) + designer.inputs.regressors = dict( voice_stenght=[1, 1, 1], age=[0.2, 0.4, 0.5], BMI=[1, -1, 2] ) con1 = ["voice_and_age", "T", ["age", "voice_stenght"], [0.5, 0.5]] con2 = ["just_BMI", "T", ["BMI"], [1]] - foo.inputs.contrasts = [con1, con2, ["con3", "F", [con1, con2]]] - res = foo.run() + designer.inputs.contrasts = [con1, con2, ["con3", "F", [con1, con2]], ["con4", "F", [con2]]] + res = designer.run() + outputs = res.outputs.get_traitsfree() - for ii in ["mat", "con", "fts", "grp"]: - assert ( - getattr(res.outputs, "design_" + ii) == tmpdir.join("design." + ii).strpath - ) + for ftype in ["mat", "con", "fts", "grp"]: + assert Path(outputs["design_" + ftype]).exists() - design_mat_expected_content = """/NumWaves 3 + expected_content = {} + + expected_content["design_mat"] = """/NumWaves 3 /NumPoints 3 /PPheights 3.000000e+00 5.000000e-01 1.000000e+00 @@ -35,7 +37,7 @@ def test_MultipleRegressDesign(tmpdir): 2.000000e+00 5.000000e-01 1.000000e+00 """ - design_con_expected_content = """/ContrastName1 voice_and_age + expected_content["design_con"] = """/ContrastName1 voice_and_age /ContrastName2 just_BMI /NumWaves 3 /NumContrasts 2 @@ -47,14 +49,15 @@ def test_MultipleRegressDesign(tmpdir): 1.000000e+00 0.000000e+00 0.000000e+00 """ - design_fts_expected_content = """/NumWaves 2 -/NumContrasts 1 + expected_content["design_fts"] = """/NumWaves 2 +/NumContrasts 2 /Matrix 1 1 +0 1 """ - design_grp_expected_content = """/NumWaves 1 + expected_content["design_grp"] = """/NumWaves 1 /NumPoints 3 /Matrix @@ -62,7 +65,6 @@ def test_MultipleRegressDesign(tmpdir): 1 1 """ - for ii in ["mat", "con", "fts", "grp"]: - assert tmpdir.join("design." + ii).read() == eval( - "design_" + ii + "_expected_content" - ) + for ftype in ["mat", "con", "fts", "grp"]: + outfile = "design_" + ftype + assert Path(outputs[outfile]).read_text() == expected_content[outfile]