Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to work with pydicom 2.4+, 3.X, Python 3.10+ #384

Merged
merged 8 commits into from
Jan 10, 2025
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix style and import issues
darcymason committed Jan 2, 2025
commit b18a9328a6a9e927939034f6d752c1edf147e33e
35 changes: 18 additions & 17 deletions dicompylercore/dicomparser.py
Original file line number Diff line number Diff line change
@@ -30,7 +30,7 @@
logger = logging.getLogger('dicompylercore.dicomparser')


def _fix_meta_info(ds: Dataset) -> None:
def _fix_meta_info(dataset: Dataset) -> None:
"""Ensure the file meta info exists and has the correct values
for transfer syntax and media storage UIDs.
@@ -44,24 +44,25 @@ def _fix_meta_info(ds: Dataset) -> None:
Parameters
----------
ds: pydicom Dataset
dataset: pydicom Dataset
"""
ds.ensure_file_meta()

if ds.is_little_endian and ds.is_implicit_VR:
ds.file_meta.TransferSyntaxUID = ImplicitVRLittleEndian
elif not ds.is_little_endian and not ds.is_implicit_VR:
ds.file_meta.TransferSyntaxUID = ExplicitVRBigEndian
elif not ds.is_little_endian and ds.is_implicit_VR:
raise NotImplementedError("Implicit VR Big Endian is not a "
"supported Transfer Syntax.")

if 'SOPClassUID' in ds:
ds.file_meta.MediaStorageSOPClassUID = ds.SOPClassUID
if 'SOPInstanceUID' in ds:
ds.file_meta.MediaStorageSOPInstanceUID = ds.SOPInstanceUID

dataset.ensure_file_meta()

if dataset.is_little_endian and dataset.is_implicit_VR:
dataset.file_meta.TransferSyntaxUID = ImplicitVRLittleEndian
elif not dataset.is_little_endian and not dataset.is_implicit_VR:
dataset.file_meta.TransferSyntaxUID = ExplicitVRBigEndian
elif not dataset.is_little_endian and dataset.is_implicit_VR:
raise NotImplementedError(
"Implicit VR Big Endian is not a supported Transfer Syntax."
)

if 'SOPClassUID' in dataset:
dataset.file_meta.MediaStorageSOPClassUID = dataset.SOPClassUID
if 'SOPInstanceUID' in dataset:
dataset.file_meta.MediaStorageSOPInstanceUID = dataset.SOPInstanceUID


class DicomParser:
"""Class to parse DICOM / DICOM RT files."""
3 changes: 2 additions & 1 deletion dicompylercore/dvh.py
Original file line number Diff line number Diff line change
@@ -113,7 +113,8 @@
f'[{self.bins.min()}:{self.bins.max()}] {self.dose_units}, '
f'volume: {self.volume} {self.volume_units}, name: {self.name}, '
f'rx_dose: {0 if not self.rx_dose else self.rx_dose} '
f'{self.dose_units}{", *Notes: " + self.notes if self.notes else ""})'
f'{self.dose_units}"

Check notice on line 116 in dicompylercore/dvh.py

Codacy Production / Codacy Static Code Analysis

dicompylercore/dvh.py#L116

unterminated string literal (detected at line 116) (F999)
f'{", *Notes: " + self.notes if self.notes else ""}'

Check failure

Code scanning / CodeQL

Syntax error Error

Syntax Error (in Python 3).
)
def __eq__(self, other):
"""Comparison method between two DVH objects.
4 changes: 2 additions & 2 deletions tests/test_dicomparser.py
Original file line number Diff line number Diff line change
@@ -7,12 +7,12 @@

import unittest
import os
from dicompylercore import dicomparser
from dicompylercore.config import pil_available, shapely_available
from pydicom.multival import MultiValue as mv
from pydicom.valuerep import DSfloat
from numpy import array, arange
from numpy.testing import assert_array_equal, assert_array_almost_equal
from dicompylercore import dicomparser
from dicompylercore.config import pil_available, shapely_available

basedata_dir = "tests/testdata"
example_data = os.path.join(basedata_dir, "example_data")
4 changes: 1 addition & 3 deletions tests/test_dose.py
Original file line number Diff line number Diff line change
@@ -8,10 +8,7 @@

import unittest
import os
from dicompylercore import dicomparser, dose

from pydicom.dataset import Dataset
from pydicom.sequence import Sequence
from pydicom import dcmread as read_dicom
from numpy import arange, zeros
from numpy.testing import (
@@ -21,6 +18,7 @@
)
import warnings
from dicompylercore.config import mpl_available, scipy_available
from dicompylercore import dicomparser, dose

basedata_dir = "tests/testdata"
example_data = os.path.join(basedata_dir, "example_data")
8 changes: 4 additions & 4 deletions tests/test_dvhcalc.py
Original file line number Diff line number Diff line change
@@ -6,15 +6,15 @@

import unittest
import os
from dicompylercore import dicomparser, dvhcalc
from dicompylercore.config import skimage_available
from dicompylercore.dvh import DVH
from dicompylercore.dvhcalc import get_dvh
from pydicom.dataset import Dataset
from pydicom.sequence import Sequence
from numpy import arange
from numpy.testing import assert_allclose
from .util import fake_rtdose, fake_ss
from dicompylercore import dicomparser, dvhcalc
from dicompylercore.config import skimage_available
from dicompylercore.dvh import DVH
from dicompylercore.dvhcalc import get_dvh


basedata_dir = "tests/testdata"