Skip to content

Commit

Permalink
Add multiframe tests
Browse files Browse the repository at this point in the history
  • Loading branch information
CPBridge committed Feb 1, 2024
1 parent d0aac71 commit 32703b0
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
27 changes: 27 additions & 0 deletions tests/test_multiframe.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
"""Tests for the highdicom._multiframe module."""
from pydicom import dcmread
from pydicom.data import get_testdata_file, get_testdata_files

from highdicom._multiframe import MultiFrameDBManager


def test_slice_spacing():
ct_multiframe = dcmread(
get_testdata_file('eCT_Supplemental.dcm')
)
db = MultiFrameDBManager(ct_multiframe)

assert db.get_slice_spacing() == 10.0

def test_slice_spacing_irregular():
ct_multiframe = dcmread(
get_testdata_file('eCT_Supplemental.dcm')
)

# Mock some iregular spacings
ct_multiframe.PerFrameFunctionalGroupsSequence[0].\
PlanePositionSequence[0].ImagePositionPatient = [1.0, 0.0, 0.0]

db = MultiFrameDBManager(ct_multiframe)

assert db.get_slice_spacing() is None
25 changes: 25 additions & 0 deletions tests/test_spatial.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,14 @@
import numpy as np
from pydicom import dcmread
from pydicom.data import get_testdata_file, get_testdata_files
import pytest

from highdicom.spatial import (
ImageToReferenceTransformer,
PixelToReferenceTransformer,
ReferenceToImageTransformer,
ReferenceToPixelTransformer,
get_series_slice_spacing,
)


Expand Down Expand Up @@ -451,3 +454,25 @@ def test_map_reference_to_image_coordinate(params, inputs, expected_outputs):
transform = ReferenceToImageTransformer(**params)
outputs = transform(inputs)
np.testing.assert_array_almost_equal(outputs, expected_outputs)


def test_get_series_slice_spacing_irregular():
# A series of single frame CT images
ct_series = [
dcmread(f)
for f in get_testdata_files('dicomdirtests/77654033/CT2/*')
]
spacing = get_series_slice_spacing(ct_series)
assert spacing is None


def test_get_series_slice_spacing_regular():
# Use a subset of this test series that does have regular spacing
ct_files = [
get_testdata_file('dicomdirtests/77654033/CT2/17196'),
get_testdata_file('dicomdirtests/77654033/CT2/17136'),
get_testdata_file('dicomdirtests/77654033/CT2/17166'),
]
ct_series = [dcmread(f) for f in ct_files]
spacing = get_series_slice_spacing(ct_series)
assert spacing == 1.25

0 comments on commit 32703b0

Please sign in to comment.