@@ -75,6 +75,85 @@ def test_readwritedata():
75
75
img = nib .load (name )
76
76
nib .save (img , 'test.nii' )
77
77
img2 = nib .load ('test.nii' )
78
- assert_equal (len (img .header .matrix .mims ), len (img2 .header .matrix .mims ))
79
- assert_array_almost_equal (img .data ,
80
- img2 .data )
78
+ assert_equal (len (img .header .matrix .mims ),
79
+ len (img2 .header .matrix .mims ))
80
+ # Order should be preserved in load/save
81
+ for mim1 , mim2 in zip (img .header .matrix .mims ,
82
+ img2 .header .matrix .mims ):
83
+ assert_equal (len (mim1 .named_maps ), len (mim2 .named_maps ))
84
+ for map1 , map2 in zip (mim1 .named_maps , mim2 .named_maps ):
85
+ assert_equal (map1 .map_name , map2 .map_name )
86
+ if map1 .label_table is None :
87
+ assert_true (map2 .label_table is None )
88
+ else :
89
+ assert_equal (len (map1 .label_table .labels ),
90
+ len (map2 .label_table .labels ))
91
+ assert_array_almost_equal (img .data , img2 .data )
92
+
93
+
94
+ def test_cifti2types ():
95
+ """Check that we instantiate Cifti2 classes correctly, and that our
96
+ test files exercise all classes"""
97
+ counter = {ci .Cifti2LabelTable : 0 ,
98
+ ci .Cifti2Label : 0 ,
99
+ ci .Cifti2NamedMap : 0 ,
100
+ ci .Cifti2Surface : 0 ,
101
+ ci .Cifti2VoxelIndicesIJK : 0 ,
102
+ ci .Cifti2Vertices : 0 ,
103
+ ci .Cifti2Parcel : 0 ,
104
+ ci .Cifti2TransformationMatrixVoxelIndicesIJKtoXYZ : 0 ,
105
+ ci .Cifti2Volume : 0 ,
106
+ ci .Cifti2VertexIndices : 0 ,
107
+ ci .Cifti2BrainModel : 0 ,
108
+ ci .Cifti2MatrixIndicesMap : 0 ,
109
+ }
110
+ for name in datafiles :
111
+ hdr = nib .load (name ).header
112
+ # Matrix and MetaData aren't conditional, so don't bother counting
113
+ assert_true (isinstance (hdr .matrix , ci .Cifti2Matrix ))
114
+ assert_true (isinstance (hdr .matrix .metadata , ci .Cifti2MetaData ))
115
+ assert_true (isinstance (hdr .matrix .mims , list ))
116
+ for mim in hdr .matrix .mims :
117
+ assert_true (isinstance (mim , ci .Cifti2MatrixIndicesMap ))
118
+ counter [ci .Cifti2MatrixIndicesMap ] += 1
119
+ assert_true (isinstance (mim .brain_models , list ))
120
+ for bm in mim .brain_models :
121
+ assert_true (isinstance (bm , ci .Cifti2BrainModel ))
122
+ counter [ci .Cifti2BrainModel ] += 1
123
+ if isinstance (bm .vertex_indices , ci .Cifti2VertexIndices ):
124
+ counter [ci .Cifti2VertexIndices ] += 1
125
+ if isinstance (bm .voxel_indices_ijk , ci .Cifti2VoxelIndicesIJK ):
126
+ counter [ci .Cifti2VoxelIndicesIJK ] += 1
127
+ assert_true (isinstance (mim .named_maps , list ))
128
+ for nm in mim .named_maps :
129
+ assert_true (isinstance (nm , ci .Cifti2NamedMap ))
130
+ counter [ci .Cifti2NamedMap ] += 1
131
+ assert_true (isinstance (nm .metadata , ci .Cifti2MetaData ))
132
+ if isinstance (nm .label_table , ci .Cifti2LabelTable ):
133
+ counter [ci .Cifti2LabelTable ] += 1
134
+ assert_true (isinstance (nm .label_table .labels , list ))
135
+ for label in nm .label_table .labels :
136
+ assert_true (isinstance (label , ci .Cifti2Label ))
137
+ counter [ci .Cifti2Label ] += 1
138
+ assert_true (isinstance (mim .parcels , list ))
139
+ for parc in mim .parcels :
140
+ assert_true (isinstance (parc , ci .Cifti2Parcel ))
141
+ counter [ci .Cifti2Parcel ] += 1
142
+ if isinstance (parc .voxel_indices_ijk ,
143
+ ci .Cifti2VoxelIndicesIJK ):
144
+ counter [ci .Cifti2VoxelIndicesIJK ] += 1
145
+ assert_true (isinstance (parc .vertices , list ))
146
+ for vtcs in parc .vertices :
147
+ assert_true (isinstance (vtcs , ci .Cifti2Vertices ))
148
+ counter [ci .Cifti2Vertices ] += 1
149
+ assert_true (isinstance (mim .surfaces , list ))
150
+ for surf in mim .surfaces :
151
+ assert_true (isinstance (surf , ci .Cifti2Surface ))
152
+ counter [ci .Cifti2Surface ] += 1
153
+ if isinstance (mim .volume , ci .Cifti2Volume ):
154
+ counter [ci .Cifti2Volume ] += 1
155
+ if isinstance (mim .volume .transformation_matrix_voxel_indices_ijk_to_xyz ,
156
+ ci .Cifti2TransformationMatrixVoxelIndicesIJKtoXYZ ):
157
+ counter [ci .Cifti2TransformationMatrixVoxelIndicesIJKtoXYZ ] += 1
158
+ for klass , count in counter .items ():
159
+ assert_true (count > 0 , "No exercise of " + klass .__name__ )
0 commit comments