|
20 | 20 | from collections.abc import MutableSequence, MutableMapping, Iterable
|
21 | 21 | from collections import OrderedDict
|
22 | 22 | from .. import xmlutils as xml
|
23 |
| -from ..filebasedimages import FileBasedHeader |
| 23 | +from ..filebasedimages import FileBasedHeader, SerializableImage |
24 | 24 | from ..dataobj_images import DataobjImage
|
| 25 | +from ..nifti1 import Nifti1Extensions |
25 | 26 | from ..nifti2 import Nifti2Image, Nifti2Header
|
26 | 27 | from ..arrayproxy import reshape_dataobj
|
27 | 28 | from warnings import warn
|
@@ -1255,6 +1256,9 @@ def _to_xml_element(self):
|
1255 | 1256 | cifti.append(mat_xml)
|
1256 | 1257 | return cifti
|
1257 | 1258 |
|
| 1259 | + def __eq__(self, other): |
| 1260 | + return self.to_xml() == other.to_xml() |
| 1261 | + |
1258 | 1262 | @classmethod
|
1259 | 1263 | def may_contain_header(klass, binaryblock):
|
1260 | 1264 | from .parse_cifti2 import _Cifti2AsNiftiHeader
|
@@ -1326,7 +1330,7 @@ def from_axes(cls, axes):
|
1326 | 1330 | return cifti2_axes.to_header(axes)
|
1327 | 1331 |
|
1328 | 1332 |
|
1329 |
| -class Cifti2Image(DataobjImage): |
| 1333 | +class Cifti2Image(DataobjImage, SerializableImage): |
1330 | 1334 | """ Class for single file CIFTI-2 format image
|
1331 | 1335 | """
|
1332 | 1336 | header_class = Cifti2Header
|
@@ -1454,6 +1458,9 @@ def to_file_map(self, file_map=None):
|
1454 | 1458 | self.update_headers()
|
1455 | 1459 | header = self._nifti_header
|
1456 | 1460 | extension = Cifti2Extension(content=self.header.to_xml())
|
| 1461 | + header.extensions = Nifti1Extensions( |
| 1462 | + ext for ext in header.extensions if not isinstance(ext, Cifti2Extension) |
| 1463 | + ) |
1457 | 1464 | header.extensions.append(extension)
|
1458 | 1465 | if self._dataobj.shape != self.header.matrix.get_data_shape():
|
1459 | 1466 | raise ValueError(
|
|
0 commit comments