@@ -1476,16 +1476,28 @@ def to_file_map(self, file_map=None):
1476
1476
def update_headers (self ):
1477
1477
''' Harmonize NIfTI headers with image data
1478
1478
1479
+ Ensures that the NIfTI-2 header records the data shape in the last three
1480
+ ``dim`` fields. Per the spec:
1481
+
1482
+ Because the first four dimensions in NIfTI are reserved for space and time, the CIFTI
1483
+ dimensions are stored in the NIfTI header in dim[5] and up, where dim[5] is the length
1484
+ of the first CIFTI dimension (number of values in a row), dim[6] is the length of the
1485
+ second CIFTI dimension, and dim[7] is the length of the third CIFTI dimension, if
1486
+ applicable. The fields dim[1] through dim[4] will be 1; dim[0] will be 6 or 7,
1487
+ depending on whether a third matrix dimension exists.
1488
+
1479
1489
>>> import numpy as np
1480
1490
>>> data = np.zeros((2,3,4))
1481
1491
>>> img = Cifti2Image(data)
1482
1492
>>> img.shape == (2, 3, 4)
1483
1493
True
1484
1494
>>> img.update_headers()
1485
- >>> img.nifti_header.get_data_shape() == (2, 3, 4)
1495
+ >>> img.nifti_header.get_data_shape() == (1, 1, 1, 1, 2, 3, 4)
1496
+ True
1497
+ >>> img.shape == (2, 3, 4)
1486
1498
True
1487
1499
'''
1488
- self ._nifti_header .set_data_shape (self ._dataobj .shape )
1500
+ self ._nifti_header .set_data_shape (( 1 , 1 , 1 , 1 ) + self ._dataobj .shape )
1489
1501
1490
1502
def get_data_dtype (self ):
1491
1503
return self ._nifti_header .get_data_dtype ()
0 commit comments