46
46
# caveat 2: Note that the bytespervox you get is in str ( not an int)
47
47
_dtdefs = ( # code, conversion function, dtype, bytes per voxel
48
48
(0 , 'uint8' , '>u1' , '1' , 'MRI_UCHAR' , np .uint8 , np .dtype (np .uint8 ),
49
- np .dtype (np .uint8 ).newbyteorder ('S ' )),
49
+ np .dtype (np .uint8 ).newbyteorder ('B ' )),
50
50
(4 , 'int16' , '>i2' , '2' , 'MRI_SHORT' , np .int16 , np .dtype (np .int16 ),
51
- np .dtype (np .int16 ).newbyteorder ('S ' )),
51
+ np .dtype (np .int16 ).newbyteorder ('B ' )),
52
52
(1 , 'int32' , '>i4' , '4' , 'MRI_INT' , np .int32 , np .dtype (np .int32 ),
53
- np .dtype (np .int32 ).newbyteorder ('S ' )),
53
+ np .dtype (np .int32 ).newbyteorder ('B ' )),
54
54
(3 , 'float' , '>f4' , '4' , 'MRI_FLOAT' , np .float32 , np .dtype (np .float32 ),
55
- np .dtype (np .float32 ).newbyteorder ('S ' )))
55
+ np .dtype (np .float32 ).newbyteorder ('B ' )))
56
56
57
57
# make full code alias bank, including dtype column
58
58
data_type_codes = Recoder (_dtdefs , fields = ('code' , 'label' , 'dtype' ,
@@ -243,7 +243,7 @@ def get_data_dtype(self):
243
243
For examples see ``set_data_dtype``
244
244
'''
245
245
code = int (self ._header_data ['type' ])
246
- dtype = self ._data_type_codes .dtype [code ]
246
+ dtype = self ._data_type_codes .numpy_dtype [code ]
247
247
return dtype
248
248
249
249
def set_data_dtype (self , datatype ):
@@ -255,6 +255,34 @@ def set_data_dtype(self, datatype):
255
255
raise MGHError ('datatype dtype "%s" not recognized' % datatype )
256
256
self ._header_data ['type' ] = code
257
257
258
+ def get_zooms (self ):
259
+ ''' Get zooms from header
260
+
261
+ Returns
262
+ -------
263
+ z : tuple
264
+ tuple of header zoom values
265
+ '''
266
+ hdr = self ._header_data
267
+ zooms = hdr ['delta' ]
268
+ return tuple (zooms [:])
269
+
270
+ def set_zooms (self , zooms ):
271
+ ''' Set zooms into header fields
272
+
273
+ See docstring for ``get_zooms`` for examples
274
+ '''
275
+ hdr = self ._header_data
276
+ zooms = np .asarray (zooms )
277
+ if len (zooms ) != hdr ['delta' ]:
278
+ raise HeaderDataError ('Expecting %d zoom values for ndim'
279
+ % hdr ['delta' ])
280
+ if np .any (zooms < 0 ):
281
+ raise HeaderDataError ('zooms must be positive' )
282
+ delta = hdr ['delta' ]
283
+ delta [:] = zooms [:]
284
+
285
+
258
286
def get_data_shape (self ):
259
287
''' Get shape of data
260
288
'''
0 commit comments