Skip to content

Commit 083c16f

Browse files
author
Shoshana Berleant
committed
completed rsfmri wf test
1 parent c18a780 commit 083c16f

File tree

2 files changed

+35
-13
lines changed

2 files changed

+35
-13
lines changed

nipype/workflows/rsfmri/fsl/resting.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def create_realign_flow(name='realign'):
9696
return realignflow
9797

9898

99-
def create_resting_preproc(name='restpreproc'):
99+
def create_resting_preproc(name='restpreproc', base_dir=None):
100100
"""Create a "resting" time series preprocessing workflow
101101
102102
The noise removal is based on Behzadi et al. (2007)
@@ -128,7 +128,7 @@ def create_resting_preproc(name='restpreproc'):
128128
129129
"""
130130

131-
restpreproc = pe.Workflow(name=name)
131+
restpreproc = pe.Workflow(name=name, base_dir=base_dir)
132132

133133
# Define nodes
134134
inputnode = pe.Node(interface=util.IdentityInterface(fields=['func',

nipype/workflows/rsfmri/fsl/tests/test_resting.py

Lines changed: 33 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from .....testing import (assert_equal, assert_true, assert_almost_equal,
55
skipif, utils)
6-
from .....interfaces import fsl, IdentityInterface
6+
from .....interfaces import fsl, IdentityInterface, utility
77
from .....pipeline.engine import Node, Workflow
88

99
from ..resting import create_resting_preproc
@@ -42,39 +42,61 @@ def stub_wf(*args, **kwargs):
4242

4343
class TestResting(unittest.TestCase):
4444

45-
in_filenames = {}
45+
in_filenames = {
46+
'realigned_file': 'rsfmrifunc.nii',
47+
'mask_file': 'rsfmrimask.nii'
48+
}
4649

4750
out_filenames = {
48-
'noise_mask_file': '',
49-
'filtered_file': ''
51+
'components_file': 'restpreproc/compcor/noise_components.txt'
5052
}
5153

54+
num_noise_components = 6
55+
5256
def setUp(self):
53-
# setup
57+
# setup temp folder
5458
self.orig_dir = os.getcwd()
5559
self.temp_dir = tempfile.mkdtemp()
5660
os.chdir(self.temp_dir)
57-
self.in_filenames['realigned_file'] = utils.save_toy_nii(self.fake_data, os.path.abspath('rsfmrifunc.nii'))
61+
self.in_filenames = {key: os.path.abspath(value)
62+
for key, value in self.in_filenames.items()}
63+
64+
# create&save input files
65+
utils.save_toy_nii(self.fake_data, self.in_filenames['realigned_file'])
5866
mask = np.zeros(self.fake_data.shape[:3])
5967
for i in range(mask.shape[0]):
6068
for j in range(mask.shape[1]):
6169
if i==j:
6270
mask[i,j] = 1
63-
self.in_filenames['noise_mask_file'] = utils.save_toy_nii(mask, os.path.abspath('rsfmrimask.nii'))
71+
utils.save_toy_nii(mask, self.in_filenames['mask_file'])
6472

6573
@mock.patch('nipype.workflows.rsfmri.fsl.resting.create_realign_flow',
6674
side_effect=stub_wf)
6775
@mock.patch('nipype.pipeline.engine.Node', side_effect=stub_node_factory)
6876
def test_create_resting_preproc(self, mock_Node, mock_realign_wf):
69-
wf = create_resting_preproc()
77+
wf = create_resting_preproc(base_dir=os.getcwd())
7078

71-
wf.inputs.inputspec.num_noise_components = 6
72-
wf.get_node('slicetimer').inputs.slice_time_corrected_file = self.in_filenames['realigned_file']
73-
wf.get_node('threshold').inputs.out_file = self.in_filenames['noise_mask_file']
79+
wf.inputs.inputspec.num_noise_components = self.num_noise_components
80+
mask_in = wf.get_node('threshold').inputs
81+
mask_in.out_file = self.in_filenames['mask_file']
82+
func_in = wf.get_node('slicetimer').inputs
83+
func_in.slice_time_corrected_file = self.in_filenames['realigned_file']
7484

7585
wf.run()
7686

7787
# assert
88+
expected_file = os.path.abspath(self.out_filenames['components_file'])
89+
with open(expected_file, 'r') as components_file:
90+
components_data = [line.split() for line in components_file]
91+
num_got_components = len(components_data)
92+
assert_true(num_got_components == self.num_noise_components
93+
or num_got_components == self.fake_data.shape[3])
94+
first_two = [row[:2] for row in components_data]
95+
assert_equal(first_two, [['-0.5172356654', '-0.6973053243'],
96+
['0.2574722644', '0.1645270737'],
97+
['-0.0806469590', '0.5156853779'],
98+
['0.7187176051', '-0.3235820287'],
99+
['-0.3783072450', '0.3406749013']])
78100

79101
def tearDown(self):
80102
os.chdir(self.orig_dir)

0 commit comments

Comments
 (0)