Skip to content

Commit

Permalink
Merge pull request #11 from Australian-Imaging-Service/fix-dicom-write
Browse files Browse the repository at this point in the history
Fix evolution of DICOM header PET raw data
  • Loading branch information
tclose authored Sep 26, 2024
2 parents 55f0a79 + 4b98367 commit d9218a4
Show file tree
Hide file tree
Showing 6 changed files with 94 additions and 389 deletions.
10 changes: 7 additions & 3 deletions medimages4tests/dummy/dicom/base.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from pathlib import Path
import shutil
import sys
import typing as ty
from copy import copy, deepcopy
import pydicom.dataset
Expand Down Expand Up @@ -81,7 +80,7 @@ def generate_dicom(
ds = pydicom.dataset.Dataset.from_json(vol_json)
ds.is_implicit_VR = True
ds.is_little_endian = True
if sys.version_info < (3, 10) or pydicom.__version__.split(".")[0] < "3":
if pydicom.__version__.split(".")[0] < "3":
save_kwargs = {"write_like_original": False}
else:
save_kwargs = {"enforce_file_format": True}
Expand Down Expand Up @@ -110,6 +109,7 @@ def evolve_header(
keyword arguments containing values to update in the header
"""
hdr = deepcopy(dicom_header)
[getattr(hdr, a) for a in dir(hdr)] # Ensure data dict keys are loaded
if first_name or last_name:
if not first_name or not last_name:
try:
Expand All @@ -131,7 +131,11 @@ def evolve_header(
continue
raise ValueError(f"Did not find tag corresponding to keyword {key}")
hex_tag = format(tag_decimal, "08x").upper()
elem = hdr[hex_tag]["Value"]
tag = hdr[hex_tag]
try:
elem = tag["Value"]
except KeyError:
continue
assert isinstance(elem, list) and len(elem) == 1
nested_elem = elem[0]
if isinstance(nested_elem, dict) and list(nested_elem.keys()) == ["Alphabetic"]:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
)


def get_image_header(out_dir, **kwargs):
hdr = evolve_header(constant_hdr, skip_unknown=True, **kwargs)
def get_image_header(out_dir, skip_unknown=True, **kwargs):
hdr = evolve_header(constant_hdr, skip_unknown=skip_unknown, **kwargs)
return generate_dicom(out_dir, num_vols, hdr, collated_data, {})


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
)


def get_image_header(out_dir, **kwargs):
hdr = evolve_header(constant_hdr, skip_unknown=True, **kwargs)
def get_image_header(out_dir, skip_unknown=True, **kwargs):
hdr = evolve_header(constant_hdr, skip_unknown=skip_unknown, **kwargs)
return generate_dicom(out_dir, num_vols, hdr, collated_data, {})


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
)


def get_image_header(out_dir, **kwargs):
hdr = evolve_header(constant_hdr, skip_unknown=True, **kwargs)
def get_image_header(out_dir, skip_unknown=True, **kwargs):
hdr = evolve_header(constant_hdr, skip_unknown=skip_unknown, **kwargs)
return generate_dicom(out_dir, num_vols, hdr, collated_data, varying_hdr)


Expand Down
Loading

0 comments on commit d9218a4

Please sign in to comment.