Skip to content

Commit

Permalink
Test and lint fixes
Browse files Browse the repository at this point in the history
  • Loading branch information
CPBridge committed Oct 19, 2024
1 parent ded30b1 commit 93d5d36
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 18 deletions.
37 changes: 28 additions & 9 deletions src/highdicom/sr/templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -2393,7 +2393,11 @@ def __init__(
method: Optional[Union[CodedConcept, Code]] = None,
properties: Optional[MeasurementProperties] = None,
referenced_images: Optional[Sequence[SourceImageForMeasurement]] = None,
referenced_coordinates: Optional[Sequence[Union[CoordinatesForMeasurement, CoordinatesForMeasurement3D]]] = None,
referenced_coordinates: Optional[
Sequence[
Union[CoordinatesForMeasurement, CoordinatesForMeasurement3D]
]
] = None,
referenced_real_world_value_map: Optional[RealWorldValueMap] = None
):
"""
Expand Down Expand Up @@ -2515,7 +2519,10 @@ def __init__(
content.append(image)
if referenced_coordinates is not None:
for scoord in referenced_coordinates:
if not isinstance(scoord, (CoordinatesForMeasurement, Scoord3DContentItem)):
if not isinstance(
scoord,
(CoordinatesForMeasurement, Scoord3DContentItem)
):
raise TypeError(
'Arguments "referenced_coordinates" must have type '
'CoordinatesForMeasurement or Scoord3DContentItem.'
Expand Down Expand Up @@ -2641,21 +2648,33 @@ def referenced_images(self) -> List[SourceImageForMeasurement]:
return [SourceImageForMeasurement.from_dataset(m) for m in matches]

@property
def referenced_coordinates(self) -> List[Union[CoordinatesForMeasurement, CoordinatesForMeasurement3D]]:
def referenced_coordinates(self) -> List[
Union[CoordinatesForMeasurement, CoordinatesForMeasurement3D]
]:
"""List[Union[highdicom.sr.CoordinatesForMeasurement, highdicom.sr.CoordinatesForMeasurement3D]]:
referenced coordinates"""
referenced coordinates""" # noqa: E501
if not hasattr(self[0], 'ContentSequence'):
return []
scoord_matches = find_content_items(
self[0],
value_type=ValueTypeValues.SCOORD
)
coord = [CoordinatesForMeasurement.from_dataset(m) for m in scoord_matches]
coord: List[
Union[CoordinatesForMeasurement, CoordinatesForMeasurement3D]
] = [
CoordinatesForMeasurement.from_dataset(m)
for m in scoord_matches
]
scoord3d_matches = find_content_items(
self[0],
value_type=ValueTypeValues.SCOORD3D
)
coord.extend([CoordinatesForMeasurement3D.from_dataset(m) for m in scoord3d_matches])
coord.extend(
[
CoordinatesForMeasurement3D.from_dataset(m)
for m in scoord3d_matches
]
)
return coord

@property
Expand Down Expand Up @@ -3327,8 +3346,8 @@ def __init__(
for measurement in measurements:
if measurement.referenced_coordinates:
raise ValueError(
'Referenced coordinates in measurements are not allowed in '
f'{self.__class__.__name__}.'
'Referenced coordinates in measurements are not '
f'allowed in {self.__class__.__name__}.'
)


Expand All @@ -3348,7 +3367,7 @@ class PlanarROIMeasurementsAndQualitativeEvaluations(
def __init__(
self,
tracking_identifier: TrackingIdentifier,
referenced_region: Union[ImageRegion, ImageRegion3D, None],
referenced_region: Union[ImageRegion, ImageRegion3D, None] = None,
referenced_segment: Optional[ReferencedSegmentationFrame] = None,
referenced_real_world_value_map: Optional[RealWorldValueMap] = None,
time_point_context: Optional[TimePointContext] = None,
Expand Down
33 changes: 24 additions & 9 deletions tests/test_sr.py
Original file line number Diff line number Diff line change
Expand Up @@ -2165,7 +2165,10 @@ def test_construction(self):

assert len(item.ContentSequence) == 1
assert item.ContentSequence[0] == self.source_image
assert item.ContentSequence[0].relationship_type == RelationshipTypeValues.SELECTED_FROM
assert (
item.ContentSequence[0].relationship_type ==
RelationshipTypeValues.SELECTED_FROM
)


class TestReferencedSegment(unittest.TestCase):
Expand Down Expand Up @@ -2855,8 +2858,14 @@ def test_referenced_coordinates(self):
assert len(measurement.referenced_coordinates) == 2
assert scoord in measurement.referenced_coordinates
assert scoord_3d in measurement.referenced_coordinates
assert isinstance(measurement.referenced_coordinates[0], CoordinatesForMeasurement)
assert isinstance(measurement.referenced_coordinates[1], CoordinatesForMeasurement3D)
assert isinstance(
measurement.referenced_coordinates[0],
CoordinatesForMeasurement
)
assert isinstance(
measurement.referenced_coordinates[1],
CoordinatesForMeasurement3D
)


class TestQualitativeEvaluation(unittest.TestCase):
Expand Down Expand Up @@ -3124,13 +3133,19 @@ def test_constructed_with_measurements_coordinates(self):
name=codes.SCT.Diameter,
value=5,
unit=codes.UCUM.Millimeter,
referenced_coordinates=[CoordinatesForMeasurement(
graphic_type=GraphicTypeValues.POLYLINE,
graphic_data=np.array([[1, 1], [2, 2]]),
source_image=self._image_for_region
)]
referenced_coordinates=[
CoordinatesForMeasurement(
graphic_type=GraphicTypeValues.POLYLINE,
graphic_data=np.array([[1, 1], [2, 2]]),
source_image=self._image_for_region
)
]
)
msg = (
'Referenced coordinates in measurements are not '
'allowed in PlanarROIMeasurementsAndQualitativeEvaluations.'
)
with pytest.raises(ValueError) as exc:
with pytest.raises(ValueError, match=msg):
PlanarROIMeasurementsAndQualitativeEvaluations(
tracking_identifier=self._tracking_identifier,
referenced_region=self._region,
Expand Down

0 comments on commit 93d5d36

Please sign in to comment.