Skip to content

Commit 249e77a

Browse files
author
Ben Cipollini
committed
RF: Header=>SpatialHeader
1 parent f5e5b22 commit 249e77a

File tree

4 files changed

+42
-28
lines changed

4 files changed

+42
-28
lines changed

nibabel/minc1.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
from .externals.netcdf import netcdf_file
1616

17-
from .spatialimages import Header, SpatialImage
17+
from .spatialimages import SpatialHeader, SpatialImage
1818
from .fileslice import canonical_slicers
1919

2020
from .deprecated import FutureWarningMixin
@@ -264,7 +264,7 @@ def __getitem__(self, sliceobj):
264264
return self.minc_file.get_scaled_data(sliceobj)
265265

266266

267-
class MincHeader(Header):
267+
class MincHeader(SpatialHeader):
268268
""" Class to contain header for MINC formats
269269
"""
270270
# We don't use the data layout - this just in case we do later

nibabel/parrec.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@
9797
from locale import getpreferredencoding
9898

9999
from .keywordonly import kw_only_meth
100-
from .spatialimages import SpatialImage, Header
100+
from .spatialimages import SpatialHeader, SpatialImage
101101
from .eulerangles import euler2mat
102102
from .volumeutils import Recoder, array_from_file
103103
from .affines import from_matvec, dot_reduce, apply_affine
@@ -615,7 +615,7 @@ def __getitem__(self, slicer):
615615
return raw_data * slopes[slicer] + inters[slicer]
616616

617617

618-
class PARRECHeader(Header):
618+
class PARRECHeader(SpatialHeader):
619619
"""PAR/REC header"""
620620
def __init__(self, info, image_defs, permit_truncated=False):
621621
"""
@@ -645,10 +645,9 @@ def __init__(self, info, image_defs, permit_truncated=False):
645645
% bitpix)
646646
# REC data always little endian
647647
dt = np.dtype('uint' + str(bitpix)).newbyteorder('<')
648-
Header.__init__(self,
649-
data_dtype=dt,
650-
shape=self._calc_data_shape(),
651-
zooms=self._calc_zooms())
648+
super(PARRECHeader, self).__init__(data_dtype=dt,
649+
shape=self._calc_data_shape(),
650+
zooms=self._calc_zooms())
652651

653652
@classmethod
654653
def from_header(klass, header=None):

nibabel/spatialimages.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ class HeaderTypeError(Exception):
154154
pass
155155

156156

157-
class Header(FileBasedHeader):
157+
class SpatialHeader(FileBasedHeader):
158158
''' Template class to implement header protocol '''
159159
default_x_flip = True
160160
data_layout = 'F'
@@ -308,20 +308,21 @@ def supported_np_types(obj):
308308
return set(supported)
309309

310310

311+
class Header(SpatialHeader):
312+
'''Alias for SpatialHeader; kept for backwards compatibility.'''
313+
def __init__(self, *args, **kwargs):
314+
warnings.warn('Header is deprecated, use SpatialHeader',
315+
DeprecationWarning, stacklevel=2)
316+
super(Header, self).__init__(*args, **kwargs)
317+
318+
311319
class ImageDataError(Exception):
312320
pass
313321

314322

315323
class SpatialImage(FileBasedImage):
316-
''' Template class for images '''
317-
header_class = Header
318-
_meta_sniff_len = 0
319-
files_types = (('image', None),)
320-
valid_exts = ()
321-
_compressed_suffixes = ()
322-
323-
makeable = True # Used in test code
324-
rw = True # Used in test code
324+
''' Template class for volumetric (3D/4D) images '''
325+
header_class = SpatialHeader
325326

326327
def __init__(self, dataobj, affine, header=None,
327328
extra=None, file_map=None):

nibabel/tests/test_spatialimages.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,22 @@
99
""" Testing spatialimages
1010
1111
"""
12-
from ..externals.six import BytesIO
12+
13+
import warnings
14+
1315
import numpy as np
1416

15-
from ..spatialimages import (Header, SpatialImage, HeaderDataError,
16-
ImageDataError)
17+
from ..externals.six import BytesIO
18+
from ..spatialimages import (SpatialHeader, SpatialImage, HeaderDataError,
19+
Header, ImageDataError)
1720

1821
from unittest import TestCase
19-
2022
from nose.tools import (assert_true, assert_false, assert_equal,
2123
assert_not_equal, assert_raises)
22-
2324
from numpy.testing import assert_array_equal, assert_array_almost_equal
2425

2526
from .test_helpers import bytesio_round_trip
26-
from ..testing import suppress_warnings
27+
from ..testing import clear_and_catch_warnings, suppress_warnings
2728
from ..tmpdirs import InTemporaryDirectory
2829
from .. import load as top_load
2930

@@ -110,7 +111,7 @@ def test_shape_zooms():
110111
assert_equal(hdr.get_data_shape(), (1,2,3))
111112
assert_equal(hdr.get_zooms(), (1.0,1.0,1.0))
112113
hdr.set_zooms((4, 3, 2))
113-
assert_equal(hdr.get_zooms(), (4.0,3.0,2.0))
114+
assert_equal(hdr.get_zooms(), (4.0,3.0,2.0))
114115
hdr.set_data_shape((1, 2))
115116
assert_equal(hdr.get_data_shape(), (1,2))
116117
assert_equal(hdr.get_zooms(), (4.0,3.0))
@@ -159,9 +160,9 @@ def test_affine():
159160

160161

161162
def test_read_data():
162-
class CHeader(Header):
163-
data_layout='C'
164-
for klass, order in ((Header, 'F'), (CHeader, 'C')):
163+
class CHeader(SpatialHeader):
164+
data_layout = 'C'
165+
for klass, order in ((SpatialHeader, 'F'), (CHeader, 'C')):
165166
hdr = klass(np.int32, shape=(1,2,3), zooms=(3.0, 2.0, 1.0))
166167
fobj = BytesIO()
167168
data = np.arange(6).reshape((1,2,3))
@@ -187,6 +188,7 @@ class CHeader(Header):
187188
class DataLike(object):
188189
# Minimal class implementing 'data' API
189190
shape = (3,)
191+
190192
def __array__(self):
191193
return np.arange(3)
192194

@@ -384,3 +386,15 @@ def test_load_mmap(self):
384386
# Check invalid values raise error
385387
assert_raises(ValueError, func, param1, mmap='rw')
386388
assert_raises(ValueError, func, param1, mmap='r+')
389+
390+
391+
def test_header_deprecated():
392+
with clear_and_catch_warnings() as w:
393+
warnings.simplefilter('always', DeprecationWarning)
394+
395+
class MyHeader(Header):
396+
pass
397+
assert_equal(len(w), 0)
398+
399+
MyHeader()
400+
assert_equal(len(w), 1)

0 commit comments

Comments
 (0)