@@ -239,7 +239,7 @@ def test_dtseries():
239
239
img = ci .Cifti2Image (data , hdr )
240
240
241
241
with InTemporaryDirectory ():
242
- ci .save (img , 'test.dtseries.nii' , infer_intent = True )
242
+ ci .save (img , 'test.dtseries.nii' )
243
243
img2 = nib .load ('test.dtseries.nii' )
244
244
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnDenseSeries'
245
245
assert isinstance (img2 , ci .Cifti2Image )
@@ -282,7 +282,7 @@ def test_dlabel():
282
282
img = ci .Cifti2Image (data , hdr )
283
283
284
284
with InTemporaryDirectory ():
285
- ci .save (img , 'test.dlabel.nii' , infer_intent = True )
285
+ ci .save (img , 'test.dlabel.nii' )
286
286
img2 = nib .load ('test.dlabel.nii' )
287
287
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnDenseLabel'
288
288
assert isinstance (img2 , ci .Cifti2Image )
@@ -301,7 +301,7 @@ def test_dconn():
301
301
img = ci .Cifti2Image (data , hdr )
302
302
303
303
with InTemporaryDirectory ():
304
- ci .save (img , 'test.dconn.nii' , infer_intent = True )
304
+ ci .save (img , 'test.dconn.nii' )
305
305
img2 = nib .load ('test.dconn.nii' )
306
306
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnDense'
307
307
assert isinstance (img2 , ci .Cifti2Image )
@@ -322,7 +322,7 @@ def test_ptseries():
322
322
img = ci .Cifti2Image (data , hdr )
323
323
324
324
with InTemporaryDirectory ():
325
- ci .save (img , 'test.ptseries.nii' , infer_intent = True )
325
+ ci .save (img , 'test.ptseries.nii' )
326
326
img2 = nib .load ('test.ptseries.nii' )
327
327
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnParcelSries'
328
328
assert isinstance (img2 , ci .Cifti2Image )
@@ -343,7 +343,7 @@ def test_pscalar():
343
343
img = ci .Cifti2Image (data , hdr )
344
344
345
345
with InTemporaryDirectory ():
346
- ci .save (img , 'test.pscalar.nii' , infer_intent = True )
346
+ ci .save (img , 'test.pscalar.nii' )
347
347
img2 = nib .load ('test.pscalar.nii' )
348
348
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnParcelScalr'
349
349
assert isinstance (img2 , ci .Cifti2Image )
@@ -364,7 +364,7 @@ def test_pdconn():
364
364
img = ci .Cifti2Image (data , hdr )
365
365
366
366
with InTemporaryDirectory ():
367
- ci .save (img , 'test.pdconn.nii' , infer_intent = True )
367
+ ci .save (img , 'test.pdconn.nii' )
368
368
img2 = ci .load ('test.pdconn.nii' )
369
369
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnParcelDense'
370
370
assert isinstance (img2 , ci .Cifti2Image )
@@ -385,7 +385,7 @@ def test_dpconn():
385
385
img = ci .Cifti2Image (data , hdr )
386
386
387
387
with InTemporaryDirectory ():
388
- ci .save (img , 'test.dpconn.nii' , infer_intent = True )
388
+ ci .save (img , 'test.dpconn.nii' )
389
389
img2 = ci .load ('test.dpconn.nii' )
390
390
assert img2 .nifti_header .get_intent ()[0 ] == 'ConnDenseParcel'
391
391
assert isinstance (img2 , ci .Cifti2Image )
@@ -425,7 +425,7 @@ def test_pconn():
425
425
img = ci .Cifti2Image (data , hdr )
426
426
427
427
with InTemporaryDirectory ():
428
- ci .save (img , 'test.pconn.nii' , infer_intent = True )
428
+ ci .save (img , 'test.pconn.nii' )
429
429
img2 = ci .load ('test.pconn.nii' )
430
430
assert img .nifti_header .get_intent ()[0 ] == 'ConnParcels'
431
431
assert isinstance (img2 , ci .Cifti2Image )
@@ -447,7 +447,7 @@ def test_pconnseries():
447
447
img = ci .Cifti2Image (data , hdr )
448
448
449
449
with InTemporaryDirectory ():
450
- ci .save (img , 'test.pconnseries.nii' , infer_intent = True )
450
+ ci .save (img , 'test.pconnseries.nii' )
451
451
img2 = ci .load ('test.pconnseries.nii' )
452
452
assert img .nifti_header .get_intent ()[0 ] == 'ConnPPSr'
453
453
assert isinstance (img2 , ci .Cifti2Image )
@@ -470,7 +470,7 @@ def test_pconnscalar():
470
470
img = ci .Cifti2Image (data , hdr )
471
471
472
472
with InTemporaryDirectory ():
473
- ci .save (img , 'test.pconnscalar.nii' , infer_intent = True )
473
+ ci .save (img , 'test.pconnscalar.nii' )
474
474
img2 = ci .load ('test.pconnscalar.nii' )
475
475
assert img .nifti_header .get_intent ()[0 ] == 'ConnPPSc'
476
476
assert isinstance (img2 , ci .Cifti2Image )
@@ -509,3 +509,45 @@ def test_wrong_shape():
509
509
with pytest .raises (ValueError ):
510
510
img .to_file_map ()
511
511
512
+
513
+ def test_cifti_validation ():
514
+ # flip label / brain_model index maps
515
+ geometry_map = create_geometry_map ((0 , ))
516
+ label_map = create_label_map ((1 , ))
517
+ matrix = ci .Cifti2Matrix ()
518
+ matrix .append (label_map )
519
+ matrix .append (geometry_map )
520
+ hdr = ci .Cifti2Header (matrix )
521
+ data = np .random .randn (10 , 2 )
522
+ img = ci .Cifti2Image (data , hdr )
523
+
524
+ # attempt to save and validate with an invalid extension
525
+ with pytest .raises (KeyError ):
526
+ ci .save (img , 'test.dlabelz.nii' )
527
+ # even with a proper extension, flipped index maps will fail
528
+ with pytest .raises (ci .Cifti2HeaderError ):
529
+ ci .save (img , 'test.dlabel.nii' )
530
+
531
+ label_map = create_label_map ((0 , ))
532
+ geometry_map = create_geometry_map ((1 , ))
533
+ matrix = ci .Cifti2Matrix ()
534
+ matrix .append (label_map )
535
+ matrix .append (geometry_map )
536
+ hdr = ci .Cifti2Header (matrix )
537
+ data = np .random .randn (2 , 10 )
538
+ img = ci .Cifti2Image (data , hdr )
539
+
540
+ with InTemporaryDirectory ():
541
+ # still fail with invalid extension and validation
542
+ with pytest .raises (KeyError ):
543
+ ci .save (img , 'test.dlabelz.nii' )
544
+ # but removing validation should work (though intent code will be unknown)
545
+ ci .save (img , 'test.dlabelz.nii' , validate = False )
546
+
547
+ img2 = nib .load ('test.dlabelz.nii' )
548
+ assert img2 .nifti_header .get_intent ()[0 ] == 'ConnUnknown'
549
+ assert isinstance (img2 , ci .Cifti2Image )
550
+ assert_array_equal (img2 .get_fdata (), data )
551
+ check_label_map (img2 .header .matrix .get_index_map (0 ))
552
+ check_geometry_map (img2 .header .matrix .get_index_map (1 ))
553
+ del img2
0 commit comments