1
1
import os
2
2
from pathlib import Path
3
+ import tempfile
3
4
from datetime import datetime
4
5
import pytest
5
- import xnat4tests
6
+ import xnat4tests .config
7
+ from arcana .data .stores .medimage import Xnat
6
8
7
9
8
10
TEST_SUBJECT_LABEL = 'TESTSUBJ'
9
11
TEST_SESSION_LABEL = 'TESTSUBJ_01'
10
12
13
+ trained_models_dir = Path (__file__ ).parent / 'dds4xnat' / 'trained_models'
14
+
11
15
test_data_dir = Path (__file__ ).parent / 'tests' / 'data'
12
16
13
17
test_mr_session_names = [str (p .stem ) for p in test_data_dir .iterdir ()
14
18
if not p .name .startswith ('.' )]
15
19
20
+ @pytest .fixture (scope = 'session' )
21
+ def trained_model_file ():
22
+ return trained_models_dir / 'model_all_brain_tumor_data.hdf5'
23
+
24
+ @pytest .fixture ()
25
+ def work_dir ():
26
+ return Path (tempfile .mkdtemp ())
16
27
17
28
@pytest .fixture (scope = 'session' )
18
29
def xnat_project (timestamp ):
@@ -28,16 +39,23 @@ def xnat_project(timestamp):
28
39
def timestamp ():
29
40
"A datetime string used to avoid stale data left over from previous tests"
30
41
return datetime .strftime (datetime .now (), '%Y%m%d%H%M%S' )
31
-
42
+
32
43
33
44
@pytest .fixture (params = test_mr_session_names )
34
- def mr_session (xnat_project , request ):
45
+ def mr_session (xnat_project , work_dir , request ):
35
46
session_label = request .param
36
- project_id = datetime . strftime ( datetime . now (), '%Y%m%d%H%M%S' )
47
+ # Upload test data to test XNAT
37
48
upload_test_dataset (xnat_project , session_label ,
38
49
test_data_dir / session_label )
39
- return xnat_project .experiments [session_label ]
40
-
50
+ # Create store and dataset objects to access data
51
+ store = Xnat (server = xnat4tests .config .XNAT_URI ,
52
+ user = xnat4tests .config .XNAT_USER ,
53
+ password = xnat4tests .config .XNAT_PASSWORD ,
54
+ cache_dir = work_dir / 'cache' )
55
+ dataset = store .load_dataset (xnat_project .id )
56
+ # Access single row of dataset
57
+ return dataset .row (id = session_label )
58
+
41
59
42
60
def make_project_name (dataset_name : str , run_prefix : str = None ):
43
61
return (run_prefix if run_prefix else '' ) + dataset_name
0 commit comments