Skip to content

Commit bf75e49

Browse files
committed
Use write_dataset for pydicom < 0.9.9 compat
1 parent 32fd4b1 commit bf75e49

File tree

2 files changed

+22
-8
lines changed

2 files changed

+22
-8
lines changed

nibabel/nifti1.py

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -462,14 +462,25 @@ def _unmangle(self,value):
462462

463463
def _mangle(self, value):
464464
bio=BytesIO()
465-
write_file(bio,value)
466-
bio.seek(0)
467-
return bio.read()
465+
dio=DicomFileLike(bio)
466+
if self._preamble:
467+
dio.write(self._preamble) # blank 128 byte preamble
468+
_write_file_meta_info(dio, self._meta)
469+
470+
# Set file VR, endian. MUST BE AFTER writing META INFO (which changes to Explicit LittleEndian)
471+
dio.is_implicit_VR = self._is_implicit_VR
472+
dio.is_little_endian = self._is_little_endian
473+
474+
write_dataset(dio, value)
475+
# write_file(bio,value)
476+
dio.seek(0)
477+
return dio.read()
468478

469479
try:
470480
from dicom.dataset import FileDataset
471481
from dicom.filereader import read_dataset,read_preamble,_read_file_meta_info
472-
from dicom.filewriter import write_file
482+
from dicom.filewriter import write_dataset,_write_file_meta_info
483+
from dicom.filebase import DicomFileLike
473484
from dicom.values import converters as dicom_converters
474485
import dicom.UID
475486
from io import BytesIO

nibabel/tests/test_nifti1.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1096,6 +1096,7 @@ def test_nifti_dicom_extension():
10961096
assert_equal(dcmext._guess_implicit_VR(),False)
10971097
assert_equal(dcmext._is_implicit_VR,False)
10981098
assert_equal(dcmext._is_little_endian,True)
1099+
assert_equal(dcmext._check_encoding(),(False,True))
10991100
assert_equal(dcmext.get_code(),2)
11001101
assert_equal(dcmext.get_content().PatientID, 'NiPy')
11011102
assert_equal(len(dcmext.get_content().values()), 1)
@@ -1108,6 +1109,7 @@ def test_nifti_dicom_extension():
11081109
assert_equal(dcmext._guess_implicit_VR(),True)
11091110
assert_equal(dcmext._is_implicit_VR,True)
11101111
assert_equal(dcmext._is_little_endian,True)
1112+
assert_equal(dcmext._check_encoding(),(True,True))
11111113
assert_equal(dcmext.get_code(),2)
11121114
assert_equal(dcmext.get_content().PatientID, 'NiPy')
11131115
assert_equal(len(dcmext.get_content().values()), 1)
@@ -1126,14 +1128,15 @@ def test_nifti_dicom_extension():
11261128
with open(dicom_file,'rb') as dim:
11271129
dcmbytes_full = dim.read()
11281130
dcmext = Nifti1DicomExtension(2,dcmbytes_full)
1131+
assert_equal(dcmext.get_code(),2)
11291132
assert_equal(dcmext._is_implicit_VR,True)
11301133
assert_equal(dcmext._is_little_endian,True)
1131-
assert_equal(dcmext.get_code(),2)
1134+
assert_equal(dcmext._check_encoding(),(True,True))
11321135
assert_equal(dcmext.get_content().PatientID, '1234')
11331136
assert_equal(len(dcmext.get_content().values()), 139)
1134-
# assert_equal(
1135-
# dcmext.get_content().file_meta,
1136-
# dicom.filereader.read_file_meta_info(dicom_file))
1137+
assert_equal(
1138+
dcmext.get_content().file_meta.TransferSyntaxUID,
1139+
dicom.filereader.read_file_meta_info(dicom_file).TransferSyntaxUID)
11371140
assert_equal(dcmext.get_sizeondisk() % 16, 0)
11381141

11391142
# make it round-tripable

0 commit comments

Comments
 (0)