4
4
from nipype .testing import assert_equal , assert_true , skipif , utils
5
5
from nipype .algorithms .misc import TSNR
6
6
7
+ from hashlib import sha1
7
8
import unittest
8
9
import mock
9
10
import nibabel as nb
@@ -17,9 +18,11 @@ class TestTSNR(unittest.TestCase):
17
18
regress_poly = traits.Range(low=1, desc='Remove polynomials')
18
19
'''
19
20
20
- filenames = {
21
+ in_filenames = {
21
22
'in_file' : 'tsnrinfile.nii' ,
23
+ }
22
24
25
+ out_filenames = {
23
26
# default output file names
24
27
'detrended_file' : '/home/ubuntu/nipype/detrend.nii.gz' ,
25
28
'mean_file' : '/home/ubuntu/nipype/mean.nii.gz' ,
@@ -29,17 +32,80 @@ class TestTSNR(unittest.TestCase):
29
32
30
33
def setUp (self ):
31
34
# setup
32
- utils .save_toy_nii (self .fake_data , self .filenames ['in_file' ])
35
+ utils .save_toy_nii (self .fake_data , self .in_filenames ['in_file' ])
33
36
34
37
def test_tsnr (self ):
35
- # setup
36
38
# run
37
- tsnrresult = TSNR (in_file = self .in_file_name , regress_poly = 1 )
39
+ tsnrresult = TSNR (in_file = self .in_filenames ['in_file' ]).run ()
40
+
41
+ # assert
42
+ self .assert_expected_outputs (tsnrresult , {
43
+ 'mean_file' : '1a55bcdf49901f25a2a838c90769989b9e4f2f19' ,
44
+ 'stddev_file' : '0ba52a51fae90a9db6090c735432df5b742d663a' ,
45
+ 'tsnr_file' : 'a794fc55766c8ad725437d3ff8b1153bd5f6e9b0'
46
+ })
47
+
48
+ def test_tsnr_withpoly1 (self ):
49
+ # run
50
+ tsnrresult = TSNR (in_file = self .in_filenames ['in_file' ],
51
+ regress_poly = 1 ).run ()
52
+
38
53
# assert
39
- # cleanup
54
+ self .assert_expected_outputs_poly (tsnrresult , {
55
+ 'detrended_file' : 'ee4f6c0b0e8c547617fc11aa50cf659436f9ccf0' ,
56
+ 'mean_file' : '1a55bcdf49901f25a2a838c90769989b9e4f2f19' ,
57
+ 'stddev_file' : 'e61d94e3cfea20b0c86c81bfdf80d82c55e9203b' ,
58
+ 'tsnr_file' : 'a49f1cbd88f2aa71183dcd7aa4b86b17df622f0c'
59
+ })
60
+
61
+ def test_tsnr_withpoly2 (self ):
62
+ # run
63
+ tsnrresult = TSNR (in_file = self .in_filenames ['in_file' ],
64
+ regress_poly = 2 ).run ()
65
+
66
+ # assert
67
+ self .assert_expected_outputs_poly (tsnrresult , {
68
+ 'detrended_file' : '22cb7f058d61cc090eb1a9dd7d31550bd4362a61' ,
69
+ 'mean_file' : '4cee6776461f6bc238d11a55c0a8d1947a5732df' ,
70
+ 'stddev_file' : '7267de4d9b63fcc553115c0198f1fa3bbb6a5a13' ,
71
+ 'tsnr_file' : '1c6ed05f94806838f7b563df65900f37e60f8a6d'
72
+ })
73
+
74
+ def test_tsnr_withpoly3 (self ):
75
+ # run
76
+ tsnrresult = TSNR (in_file = self .in_filenames ['in_file' ],
77
+ regress_poly = 3 ).run ()
78
+
79
+ # assert
80
+ self .assert_expected_outputs_poly (tsnrresult , {
81
+ 'detrended_file' : '3f2c1c7da233f128a7020b6fed79d6be2ec59fca' ,
82
+ 'mean_file' : '4cee6776461f6bc238d11a55c0a8d1947a5732df' ,
83
+ 'stddev_file' : '82bb793b76fab503d1d6b3e2d1b20a1bdebd7a2a' ,
84
+ 'tsnr_file' : 'e004bd6096a0077b15058aabd4b0339bf6e21f64'
85
+ })
86
+
87
+ def assert_expected_outputs_poly (self , tsnrresult , hash_dict ):
88
+ assert_equal (tsnrresult .outputs .detrended_file ,
89
+ self .out_filenames ['detrended_file' ])
90
+ self .assert_expected_outputs (tsnrresult , hash_dict )
91
+
92
+ def assert_expected_outputs (self , tsnrresult , hash_dict ):
93
+ self .assert_default_outputs (tsnrresult .outputs )
94
+ self .assert_unchanged (hash_dict )
95
+
96
+ def assert_default_outputs (self , outputs ):
97
+ assert_equal (outputs .mean_file , self .out_filenames ['mean_file' ])
98
+ assert_equal (outputs .stddev_file , self .out_filenames ['stddev_file' ])
99
+ assert_equal (outputs .tsnr_file , self .out_filenames ['tsnr_file' ])
100
+
101
+ def assert_unchanged (self , expected_hashes ):
102
+ for key , hexhash in expected_hashes .iteritems ():
103
+ data = np .asanyarray (nb .load (self .out_filenames [key ])._data )
104
+ assert_equal (sha1 (str (data )).hexdigest (), hexhash )
40
105
41
106
def tearDown (self ):
42
- utils .remove_nii (self .filenames .values ())
107
+ utils .remove_nii (self .in_filenames .values ())
108
+ utils .remove_nii (self .out_filenames .values ())
43
109
44
110
fake_data = np .array ([[[[2 , 4 , 3 , 9 , 1 ],
45
111
[3 , 6 , 4 , 7 , 4 ]],
0 commit comments