Source code for pyradise.data.organ
from typing import Optional, Union
from .annotator import Annotator
__all__ = ["Organ", "OrganAnnotatorCombination"]
[docs]class Organ:
"""A class for identifying an organ.
Notes:
The :class:`Organ` is used to identify the organ segmented on a :class:`~pyradise.data.image.SegmentationImage`.
If multiple organs are segmented on a single :class:`~pyradise.data.image.SegmentationImage`, the
:class:`Organ` may be assigned an artificial name describing the set of organs.
Args:
name (str): The name of the :class:`Organ`.
index (Optional[int]): The index of the :class:`Organ` (default: None).
"""
def __init__(self, name: str, index: Optional[int] = None) -> None:
super().__init__()
self.name: str = name
self.index: Optional[int] = index
[docs] def get_name(self) -> str:
"""Get the name of the :class:`Organ`.
Returns:
str: The name of the :class:`Organ`.
"""
return self.name
[docs] def set_name(self, name: str) -> None:
"""Set the name of the :class:`Organ`.
Args:
name (str): The name of the :class:`Organ`.
"""
self.name = name
def __str__(self) -> str:
return self.name
def __eq__(self, other: object) -> bool:
if not isinstance(other, Organ):
return False
return self.name == other.name
def __hash__(self):
return hash(str(self))
[docs]class OrganAnnotatorCombination:
"""A class combining an :class:`Organ` with a :class:`~pyradise.data.annotator.Annotator`.
Args:
organ (Union[Organ, str]): The :class:`Organ` or its name.
annotator (Union[Annotator, str]): The :class:`~pyradise.data.annotator.Annotator` or its name.
"""
def __init__(self, organ: Union[Organ, str], annotator: Union[Annotator, str]) -> None:
super().__init__()
if isinstance(organ, str):
organ = Organ(organ)
if isinstance(annotator, str):
annotator = Annotator(annotator)
self.organ: Organ = organ
self.annotator: Annotator = annotator
def __str__(self) -> str:
return self.name
def __eq__(self, other):
return self.name == other.name
def __hash__(self):
return hash(str(self))
@property
def name(self) -> str:
"""Get the name of the :class:`OrganAnnotatorCombination`.
Returns:
str: The combined name.
"""
return self.organ.name + "_" + self.annotator.name