Skip to content

Commit 07e2207

Browse files
committed
RF - convert default_structarr to classmethod
It makes more sense for this method not to require an instance.
1 parent 5ec3fed commit 07e2207

File tree

5 files changed

+21
-19
lines changed

5 files changed

+21
-19
lines changed

nibabel/analyze.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -327,10 +327,11 @@ def _guessed_endian(self, hdr):
327327
return native_code
328328
return swapped_code
329329

330-
def default_structarr(self, endianness=None):
330+
@classmethod
331+
def default_structarr(klass, endianness=None):
331332
''' Return header data for empty header with given endianness
332333
'''
333-
hdr_data = super(AnalyzeHeader, self).default_structarr(endianness)
334+
hdr_data = super(AnalyzeHeader, klass).default_structarr(endianness)
334335
hdr_data['sizeof_hdr'] = 348
335336
hdr_data['dim'] = 1
336337
hdr_data['dim'][0] = 0

nibabel/nifti1.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -504,8 +504,8 @@ def from_fileobj(klass, fileobj, size, byteswap):
504504

505505

506506
class Nifti1Header(SpmAnalyzeHeader):
507-
''' Class for NIFTI1 header
508-
507+
''' Class for NIFTI1 header
508+
509509
The NIFTI1 header has many more coded fields than the simpler Analyze
510510
variants. Nifti1 headers also have extensions.
511511
@@ -608,11 +608,11 @@ def get_best_affine(self):
608608
return self.get_qform()
609609
return self.get_base_affine()
610610

611-
def default_structarr(self, endianness=None):
611+
@classmethod
612+
def default_structarr(klass, endianness=None):
612613
''' Create empty header binary block with given endianness '''
613-
hdr_data = analyze.AnalyzeHeader.default_structarr(self, endianness)
614-
hdr_data['scl_slope'] = 1
615-
if self.is_single:
614+
hdr_data = super(Nifti1Header, klass).default_structarr(endianness)
615+
if klass.is_single:
616616
hdr_data['magic'] = 'n+1'
617617
hdr_data['vox_offset'] = 352
618618
else:

nibabel/spm99analyze.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,10 @@ class SpmAnalyzeHeader(analyze.AnalyzeHeader):
4343
has_data_slope = True
4444
has_data_intercept = False
4545

46-
def default_structarr(self, endianness=None):
46+
@classmethod
47+
def default_structarr(klass, endianness=None):
4748
''' Create empty header binary block with given endianness '''
48-
hdr_data = super(SpmAnalyzeHeader, self).default_structarr(endianness)
49+
hdr_data = super(SpmAnalyzeHeader, klass).default_structarr(endianness)
4950
hdr_data['scl_slope'] = 1
5051
return hdr_data
5152

nibabel/tests/test_wrapstruct.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ class MyWrapStruct(WrapStruct):
4949
""" An example binary header class """
5050
_field_recoders = {}
5151
dtype_def = [
52-
('an_integer', 'i4'),
52+
('an_integer', 'i2'),
5353
('a_str', 'S10')]
5454
_dtype = np.dtype(dtype_def)
5555

@@ -58,9 +58,9 @@ def _guessed_endian(self, hdr):
5858
return native_code
5959
return swapped_code
6060

61-
def default_structarr(self, endianness=None):
62-
structarr = super(MyWrapStruct, self).default_structarr(
63-
endianness)
61+
@classmethod
62+
def default_structarr(klass, endianness=None):
63+
structarr = super(MyWrapStruct, klass).default_structarr(endianness)
6464
structarr['an_integer'] = 1
6565
structarr['a_str'] = 'a string'
6666
return structarr

nibabel/wrapstruct.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ def __init__(self,
146146
array(1, dtype=int16)
147147
'''
148148
if binaryblock is None:
149-
self._structarr = self.default_structarr(endianness)
149+
self._structarr = self.__class__.default_structarr(endianness)
150150
return
151151
# check size
152152
if len(binaryblock) != self._dtype.itemsize:
@@ -367,15 +367,15 @@ def _guessed_endian(self, wstr):
367367
'''
368368
raise NotImplementedError
369369

370-
def default_structarr(self, endianness=None):
370+
@classmethod
371+
def default_structarr(klass, endianness=None):
371372
''' Return structured array for default structure, with given endianness
372373
'''
373-
dt = self._dtype
374+
dt = klass._dtype
374375
if endianness is not None:
375376
endianness = endian_codes[endianness]
376377
dt = dt.newbyteorder(endianness)
377-
wstr_data = np.zeros((), dtype=dt)
378-
return wstr_data
378+
return np.zeros((), dtype=dt)
379379

380380
@property
381381
def structarr(self):

0 commit comments

Comments
 (0)