@@ -61,6 +61,7 @@ def test_modelgen_spm_concat():
6161 filename2 = os .path .join (tempdir , 'test2.nii' )
6262 Nifti1Image (np .random .rand (10 , 10 , 10 , 30 ), np .eye (4 )).to_filename (filename1 )
6363 Nifti1Image (np .random .rand (10 , 10 , 10 , 30 ), np .eye (4 )).to_filename (filename2 )
64+ # Test case when only one duration is passed, as being the same for all onsets.
6465 s = SpecifySPMModel ()
6566 s .inputs .input_units = 'secs'
6667 s .inputs .concatenate_runs = True
@@ -78,23 +79,40 @@ def test_modelgen_spm_concat():
7879 yield assert_equal , np .sum (res .outputs .session_info [0 ]['regress' ][0 ]['val' ]), 30
7980 yield assert_equal , len (res .outputs .session_info [0 ]['cond' ]), 1
8081 yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][0 ]['onset' ]), np .array ([2.0 , 50.0 , 100.0 , 170.0 , 210.0 , 220.0 , 280.0 , 330.0 ])
82+ # Test case of scans as output units instead of seconds
8183 setattr (s .inputs , 'output_units' , 'scans' )
8284 yield assert_equal , s .inputs .output_units , 'scans'
8385 s .inputs .subject_info = deepcopy (info )
8486 res = s .run ()
8587 yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][0 ]['onset' ]), np .array ([2.0 , 50.0 , 100.0 , 170.0 , 210.0 , 220.0 , 280.0 , 330.0 ])/ 6
88+ # Test case for no concatenation with seconds as output units
8689 s .inputs .concatenate_runs = False
8790 s .inputs .subject_info = deepcopy (info )
8891 s .inputs .output_units = 'secs'
8992 res = s .run ()
9093 yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][0 ]['onset' ]), np .array ([2.0 , 50.0 , 100.0 , 170.0 ])
94+ # Test case for variable number of events in separate runs, sometimes unique.
95+ filename3 = os .path .join (tempdir , 'test3.nii' )
96+ Nifti1Image (np .random .rand (10 , 10 , 10 , 30 ), np .eye (4 )).to_filename (filename3 )
97+ s .inputs .functional_runs = [filename1 , filename2 , filename3 ]
9198 info = [Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 ]], durations = [[1 , 1 ], [1 ]]),
92- Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 , 4 ]], durations = [[1 , 1 ], [1 , 1 ]])]
99+ Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 , 4 ]], durations = [[1 , 1 ], [1 , 1 ]]),
100+ Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 ]], durations = [[1 , 1 ], [1 ]])]
93101 s .inputs .subject_info = deepcopy (info )
94102 res = s .run ()
95103 yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][0 ]['duration' ]), np .array ([1. , 1. ])
96104 yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][1 ]['duration' ]), np .array ([1. ,])
97105 yield assert_almost_equal , np .array (res .outputs .session_info [1 ]['cond' ][1 ]['duration' ]), np .array ([1. , 1. ])
106+ yield assert_almost_equal , np .array (res .outputs .session_info [2 ]['cond' ][1 ]['duration' ]), np .array ([1. ,])
107+ # Test case for variable number of events in concatenated runs, sometimes unique.
108+ s .inputs .concatenate_runs = True
109+ info = [Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 ]], durations = [[1 , 1 ], [1 ]]),
110+ Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 , 4 ]], durations = [[1 , 1 ], [1 , 1 ]]),
111+ Bunch (conditions = ['cond1' , 'cond2' ], onsets = [[2 , 3 ], [2 ]], durations = [[1 , 1 ], [1 ]])]
112+ s .inputs .subject_info = deepcopy (info )
113+ res = s .run ()
114+ yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][0 ]['duration' ]), np .array ([1. , 1. , 1. , 1. , 1. , 1. ])
115+ yield assert_almost_equal , np .array (res .outputs .session_info [0 ]['cond' ][1 ]['duration' ]), np .array ([1. , 1. , 1. , 1. ])
98116 rmtree (tempdir )
99117
100118
0 commit comments