3
3
4
4
import numpy as np
5
5
import pandas as pd
6
+
6
7
from nibabel .tmpdirs import TemporaryDirectory
7
8
from nilearn ._utils .compat import _basestring
8
- from nilearn .datasets import func , utils
9
- from nilearn .datasets .tests import test_utils as tst
10
9
from nilearn .datasets .utils import _get_dataset_dir
11
- from nose import with_setup
12
- from nose .tools import (assert_equal ,
13
- assert_true ,
14
- )
15
10
16
11
from nistats import datasets
17
12
from nistats .datasets import fetch_openneuro_dataset_index , \
21
16
datadir = os .path .join (currdir , 'data' )
22
17
23
18
24
- def setup_mock ():
25
- return tst .setup_mock (utils , func )
26
-
27
-
28
- def teardown_mock ():
29
- return tst .teardown_mock (utils , func )
30
-
31
-
32
- @with_setup (setup_mock , teardown_mock )
33
- @with_setup (tst .setup_tmpdata , tst .teardown_tmpdata )
34
- def test_fetch_bids_langloc_dataset ():
35
- data_dir = os .path .join (tst .tmpdir , 'bids_langloc_example' )
19
+ def test_fetch_bids_langloc_dataset (request_mocker , tmp_path ):
20
+ data_dir = str (tmp_path / 'bids_langloc_example' )
36
21
os .mkdir (data_dir )
37
22
main_folder = os .path .join (data_dir , 'bids_langloc_dataset' )
38
23
os .mkdir (main_folder )
39
24
40
- datadir , dl_files = datasets .fetch_bids_langloc_dataset (tst . tmpdir )
25
+ datadir , dl_files = datasets .fetch_bids_langloc_dataset (str ( tmp_path ) )
41
26
42
- assert_true ( isinstance (datadir , _basestring ) )
43
- assert_true ( isinstance (dl_files , list ) )
27
+ assert isinstance (datadir , _basestring )
28
+ assert isinstance (dl_files , list )
44
29
45
30
46
31
def test_select_from_index ():
@@ -60,35 +45,35 @@ def test_select_from_index():
60
45
61
46
# Only 1 subject and not subject specific files get downloaded
62
47
new_urls = datasets .select_from_index (urls , n_subjects = 1 )
63
- assert_true ( len (new_urls ) == 6 )
64
- assert_true ( data_prefix + '/sub-yyy.html' not in new_urls )
48
+ assert len (new_urls ) == 6
49
+ assert data_prefix + '/sub-yyy.html' not in new_urls
65
50
66
51
# 2 subjects and not subject specific files get downloaded
67
52
new_urls = datasets .select_from_index (urls , n_subjects = 2 )
68
- assert_true ( len (new_urls ) == 9 )
69
- assert_true ( data_prefix + '/sub-yyy.html' in new_urls )
53
+ assert len (new_urls ) == 9
54
+ assert data_prefix + '/sub-yyy.html' in new_urls
70
55
# ALL subjects and not subject specific files get downloaded
71
56
new_urls = datasets .select_from_index (urls , n_subjects = None )
72
- assert_true ( len (new_urls ) == 9 )
57
+ assert len (new_urls ) == 9
73
58
74
59
# test inclusive filters. Only files with task-rest
75
60
new_urls = datasets .select_from_index (
76
61
urls , inclusion_filters = ['*task-rest*' ])
77
- assert_true ( len (new_urls ) == 2 )
78
- assert_true ( data_prefix + '/stuff.html' not in new_urls )
62
+ assert len (new_urls ) == 2
63
+ assert data_prefix + '/stuff.html' not in new_urls
79
64
80
65
# test exclusive filters. only files without ses-01
81
66
new_urls = datasets .select_from_index (
82
67
urls , exclusion_filters = ['*ses-01*' ])
83
- assert_true ( len (new_urls ) == 6 )
84
- assert_true ( data_prefix + '/stuff.html' in new_urls )
68
+ assert len (new_urls ) == 6
69
+ assert data_prefix + '/stuff.html' in new_urls
85
70
86
71
# test filter combination. only files with task-rest and without ses-01
87
72
new_urls = datasets .select_from_index (
88
73
urls , inclusion_filters = ['*task-rest*' ],
89
74
exclusion_filters = ['*ses-01*' ])
90
- assert_true ( len (new_urls ) == 1 )
91
- assert_true ( data_prefix + '/sub-xxx/ses-02_task-rest.txt' in new_urls )
75
+ assert len (new_urls ) == 1
76
+ assert data_prefix + '/sub-xxx/ses-02_task-rest.txt' in new_urls
92
77
93
78
94
79
def test_fetch_openneuro_dataset_index ():
@@ -115,13 +100,11 @@ def test_fetch_openneuro_dataset_index():
115
100
assert urls == mock_json_content
116
101
117
102
118
- @with_setup (setup_mock , teardown_mock )
119
- @with_setup (tst .setup_tmpdata , tst .teardown_tmpdata )
120
- def test_fetch_openneuro_dataset ():
103
+ def test_fetch_openneuro_dataset (request_mocker , tmp_path ):
121
104
dataset_version = 'ds000030_R1.0.4'
122
105
data_prefix = '{}/{}/uncompressed' .format (
123
106
dataset_version .split ('_' )[0 ], dataset_version )
124
- data_dir = _get_dataset_dir (data_prefix , data_dir = tst . tmpdir ,
107
+ data_dir = _get_dataset_dir (data_prefix , data_dir = str ( tmp_path ) ,
125
108
verbose = 1 )
126
109
url_file = os .path .join (data_dir , 'urls.json' )
127
110
# Prepare url files for subject and filter tests
@@ -138,16 +121,16 @@ def test_fetch_openneuro_dataset():
138
121
139
122
# Only 1 subject and not subject specific files get downloaded
140
123
datadir , dl_files = datasets .fetch_openneuro_dataset (
141
- urls , tst . tmpdir , dataset_version )
142
- assert_true ( isinstance (datadir , _basestring ) )
143
- assert_true ( isinstance (dl_files , list ) )
144
- assert_true ( len (dl_files ) == 9 )
124
+ urls , str ( tmp_path ) , dataset_version )
125
+ assert isinstance (datadir , _basestring )
126
+ assert isinstance (dl_files , list )
127
+ assert len (dl_files ) == 9
145
128
146
129
147
130
def test_fetch_localizer ():
148
131
dataset = datasets .fetch_localizer_first_level ()
149
- assert_true ( isinstance (dataset ['events' ], _basestring ) )
150
- assert_true ( isinstance (dataset .epi_img , _basestring ) )
132
+ assert isinstance (dataset ['events' ], _basestring )
133
+ assert isinstance (dataset .epi_img , _basestring )
151
134
152
135
153
136
def _mock_original_spm_auditory_events_file ():
@@ -174,10 +157,8 @@ def _mock_bids_compliant_spm_auditory_events_file():
174
157
return actual_events_data_string , events_filepath
175
158
176
159
177
- @with_setup (setup_mock , teardown_mock )
178
- @with_setup (tst .setup_tmpdata , tst .teardown_tmpdata )
179
- def test_fetch_language_localizer_demo_dataset ():
180
- data_dir = tst .tmpdir
160
+ def test_fetch_language_localizer_demo_dataset (request_mocker , tmp_path ):
161
+ data_dir = str (tmp_path )
181
162
expected_data_dir , expected_files = _mock_language_localizer_demo_dataset (
182
163
data_dir )
183
164
actual_data_dir , actual_subdirs = fetch_language_localizer_demo_dataset (
@@ -240,26 +221,24 @@ def test_make_spm_auditory_events_file():
240
221
actual_events_data_string = replace_win_line_ends (actual_events_data_string )
241
222
expected_events_data_string = replace_win_line_ends (expected_events_data_string )
242
223
243
- assert_equal ( actual_events_data_string , expected_events_data_string )
224
+ assert actual_events_data_string == expected_events_data_string
244
225
245
226
246
- @with_setup (setup_mock , teardown_mock )
247
- @with_setup (tst .setup_tmpdata , tst .teardown_tmpdata )
248
- def test_fetch_spm_auditory ():
227
+ def test_fetch_spm_auditory (request_mocker , tmp_path ):
249
228
import nibabel as nib
250
229
import shutil
251
230
saf = ["fM00223/fM00223_%03i.img" % index for index in range (4 , 100 )]
252
231
saf_ = ["fM00223/fM00223_%03i.hdr" % index for index in range (4 , 100 )]
253
232
254
- data_dir = os . path . join ( tst . tmpdir , 'spm_auditory' )
233
+ data_dir = str ( tmp_path / 'spm_auditory' )
255
234
os .mkdir (data_dir )
256
235
subject_dir = os .path .join (data_dir , 'sub001' )
257
236
os .mkdir (subject_dir )
258
237
os .mkdir (os .path .join (subject_dir , 'fM00223' ))
259
238
os .mkdir (os .path .join (subject_dir , 'sM00223' ))
260
239
261
- path_img = os . path . join ( tst . tmpdir , 'tmp.img' )
262
- path_hdr = os . path . join ( tst . tmpdir , 'tmp.hdr' )
240
+ path_img = str ( tmp_path / 'tmp.img' )
241
+ path_hdr = str ( tmp_path / 'tmp.hdr' )
263
242
nib .save (nib .Nifti1Image (np .zeros ((2 , 3 , 4 )), np .eye (4 )), path_img )
264
243
shutil .copy (path_img , os .path .join (subject_dir , "sM00223/sM00223_002.img" ))
265
244
shutil .copy (path_hdr , os .path .join (subject_dir , "sM00223/sM00223_002.hdr" ))
@@ -268,16 +247,14 @@ def test_fetch_spm_auditory():
268
247
for file_ in saf_ :
269
248
shutil .copy (path_hdr , os .path .join (subject_dir , file_ ))
270
249
271
- dataset = datasets .fetch_spm_auditory (data_dir = tst . tmpdir )
272
- assert_true ( isinstance (dataset .anat , _basestring ) )
273
- assert_true ( isinstance (dataset .func [0 ], _basestring ) )
274
- assert_equal ( len (dataset .func ), 96 )
250
+ dataset = datasets .fetch_spm_auditory (data_dir = str ( tmp_path ) )
251
+ assert isinstance (dataset .anat , _basestring )
252
+ assert isinstance (dataset .func [0 ], _basestring )
253
+ assert len (dataset .func ) == 96
275
254
276
255
277
- @with_setup (setup_mock , teardown_mock )
278
- @with_setup (tst .setup_tmpdata , tst .teardown_tmpdata )
279
- def test_fetch_spm_multimodal ():
280
- data_dir = os .path .join (tst .tmpdir , 'spm_multimodal_fmri' )
256
+ def test_fetch_spm_multimodal (request_mocker , tmp_path ):
257
+ data_dir = str (tmp_path / 'spm_multimodal_fmri' )
281
258
os .mkdir (data_dir )
282
259
subject_dir = os .path .join (data_dir , 'sub001' )
283
260
os .mkdir (subject_dir )
@@ -293,23 +270,21 @@ def test_fetch_spm_multimodal():
293
270
open (os .path .join (dir_ , 'fMETHODS-000%i-%i-01.img' %
294
271
(session + 5 , i )), 'a' ).close ()
295
272
296
- dataset = datasets .fetch_spm_multimodal_fmri (data_dir = tst . tmpdir )
297
- assert_true ( isinstance (dataset .anat , _basestring ) )
298
- assert_true ( isinstance (dataset .func1 [0 ], _basestring ) )
299
- assert_equal ( len (dataset .func1 ), 390 )
300
- assert_true ( isinstance (dataset .func2 [0 ], _basestring ) )
301
- assert_equal ( len (dataset .func2 ), 390 )
302
- assert_equal ( dataset .slice_order , 'descending' )
303
- assert_true (dataset .trials_ses1 , _basestring )
304
- assert_true (dataset .trials_ses2 , _basestring )
273
+ dataset = datasets .fetch_spm_multimodal_fmri (data_dir = str ( tmp_path ) )
274
+ assert isinstance (dataset .anat , _basestring )
275
+ assert isinstance (dataset .func1 [0 ], _basestring )
276
+ assert len (dataset .func1 ) == 390
277
+ assert isinstance (dataset .func2 [0 ], _basestring )
278
+ assert len (dataset .func2 ) == 390
279
+ assert dataset .slice_order == 'descending'
280
+ assert isinstance (dataset .trials_ses1 , _basestring )
281
+ assert isinstance (dataset .trials_ses2 , _basestring )
305
282
306
283
307
- @with_setup (setup_mock , teardown_mock )
308
- @with_setup (tst .setup_tmpdata , tst .teardown_tmpdata )
309
- def test_fiac ():
284
+ def test_fiac (request_mocker , tmp_path ):
310
285
# Create dummy 'files'
311
- fiac_dir = os . path . join ( tst . tmpdir , 'fiac_nistats' , 'nipy-data-0.2' ,
312
- 'data' , 'fiac' )
286
+ fiac_dir = str ( tmp_path / 'fiac_nistats' / 'nipy-data-0.2' /
287
+ 'data' / 'fiac' )
313
288
fiac0_dir = os .path .join (fiac_dir , 'fiac0' )
314
289
os .makedirs (fiac0_dir )
315
290
for session in [1 , 2 ]:
@@ -321,9 +296,9 @@ def test_fiac():
321
296
mask = os .path .join (fiac0_dir , 'mask.nii.gz' )
322
297
open (mask , 'a' ).close ()
323
298
324
- dataset = datasets .fetch_fiac_first_level (data_dir = tst . tmpdir )
325
- assert_true ( isinstance (dataset .func1 , _basestring ) )
326
- assert_true ( isinstance (dataset .func2 , _basestring ) )
327
- assert_true ( isinstance (dataset .design_matrix1 , _basestring ) )
328
- assert_true ( isinstance (dataset .design_matrix2 , _basestring ) )
329
- assert_true ( isinstance (dataset .mask , _basestring ) )
299
+ dataset = datasets .fetch_fiac_first_level (data_dir = str ( tmp_path ) )
300
+ assert isinstance (dataset .func1 , _basestring )
301
+ assert isinstance (dataset .func2 , _basestring )
302
+ assert isinstance (dataset .design_matrix1 , _basestring )
303
+ assert isinstance (dataset .design_matrix2 , _basestring )
304
+ assert isinstance (dataset .mask , _basestring )
0 commit comments