Skip to content

Commit d9218a4

Browse files
authored
Merge pull request #11 from Australian-Imaging-Service/fix-dicom-write
Fix evolution of DICOM header PET raw data
2 parents 55f0a79 + 4b98367 commit d9218a4

File tree

6 files changed

+94
-389
lines changed

6 files changed

+94
-389
lines changed

medimages4tests/dummy/dicom/base.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
from pathlib import Path
22
import shutil
3-
import sys
43
import typing as ty
54
from copy import copy, deepcopy
65
import pydicom.dataset
@@ -81,7 +80,7 @@ def generate_dicom(
8180
ds = pydicom.dataset.Dataset.from_json(vol_json)
8281
ds.is_implicit_VR = True
8382
ds.is_little_endian = True
84-
if sys.version_info < (3, 10) or pydicom.__version__.split(".")[0] < "3":
83+
if pydicom.__version__.split(".")[0] < "3":
8584
save_kwargs = {"write_like_original": False}
8685
else:
8786
save_kwargs = {"enforce_file_format": True}
@@ -110,6 +109,7 @@ def evolve_header(
110109
keyword arguments containing values to update in the header
111110
"""
112111
hdr = deepcopy(dicom_header)
112+
[getattr(hdr, a) for a in dir(hdr)] # Ensure data dict keys are loaded
113113
if first_name or last_name:
114114
if not first_name or not last_name:
115115
try:
@@ -131,7 +131,11 @@ def evolve_header(
131131
continue
132132
raise ValueError(f"Did not find tag corresponding to keyword {key}")
133133
hex_tag = format(tag_decimal, "08x").upper()
134-
elem = hdr[hex_tag]["Value"]
134+
tag = hdr[hex_tag]
135+
try:
136+
elem = tag["Value"]
137+
except KeyError:
138+
continue
135139
assert isinstance(elem, list) and len(elem) == 1
136140
nested_elem = elem[0]
137141
if isinstance(nested_elem, dict) and list(nested_elem.keys()) == ["Alphabetic"]:

medimages4tests/dummy/raw/pet/siemens/biograph_vision/vr20b/pet_calibration/header.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
)
55

66

7-
def get_image_header(out_dir, **kwargs):
8-
hdr = evolve_header(constant_hdr, skip_unknown=True, **kwargs)
7+
def get_image_header(out_dir, skip_unknown=True, **kwargs):
8+
hdr = evolve_header(constant_hdr, skip_unknown=skip_unknown, **kwargs)
99
return generate_dicom(out_dir, num_vols, hdr, collated_data, {})
1010

1111

medimages4tests/dummy/raw/pet/siemens/biograph_vision/vr20b/pet_countrate/header.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
)
55

66

7-
def get_image_header(out_dir, **kwargs):
8-
hdr = evolve_header(constant_hdr, skip_unknown=True, **kwargs)
7+
def get_image_header(out_dir, skip_unknown=True, **kwargs):
8+
hdr = evolve_header(constant_hdr, skip_unknown=skip_unknown, **kwargs)
99
return generate_dicom(out_dir, num_vols, hdr, collated_data, {})
1010

1111

medimages4tests/dummy/raw/pet/siemens/biograph_vision/vr20b/pet_listmode/header.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
)
55

66

7-
def get_image_header(out_dir, **kwargs):
8-
hdr = evolve_header(constant_hdr, skip_unknown=True, **kwargs)
7+
def get_image_header(out_dir, skip_unknown=True, **kwargs):
8+
hdr = evolve_header(constant_hdr, skip_unknown=skip_unknown, **kwargs)
99
return generate_dicom(out_dir, num_vols, hdr, collated_data, varying_hdr)
1010

1111

0 commit comments

Comments
 (0)