Source code for hpotk.annotations._simple

import typing
import warnings

from hpotk.model import TermId, CURIE_OR_TERM_ID
from ._api import ANNOTATED_ITEM
from ._base import AnnotationReference
from ._base import HpoDisease, HpoDiseaseAnnotation, HpoDiseases


[docs] class SimpleHpoDiseaseAnnotation(HpoDiseaseAnnotation): def __init__(self, identifier: TermId, numerator: int, denominator: int, references: typing.Sequence[AnnotationReference], modifiers: typing.Sequence[TermId]): self._id = identifier self.check_numerator_and_denominator(numerator, denominator) self._numerator = numerator self._denominator = denominator self._refs = references self._modifiers = modifiers @property def identifier(self) -> TermId: return self._id @property def numerator(self) -> int: return self._numerator @property def denominator(self) -> int: return self._denominator @property def references(self) -> typing.Sequence[AnnotationReference]: return self._refs @property def modifiers(self) -> typing.Sequence[TermId]: return self._modifiers def __repr__(self): return f"SimpleHpoDiseaseAnnotation(" \ f"identifier={self.identifier}, " \ f"numerator={self.numerator}, " \ f"denominator={self.denominator}, " \ f"references={self.references}, " \ f"modifiers={self.modifiers})"
[docs] class SimpleHpoDisease(HpoDisease): def __init__(self, identifier: TermId, name: str, annotations: typing.Collection[HpoDiseaseAnnotation], modes_of_inheritance: typing.Collection[TermId]): self._id = identifier self._name = name self._annotations = annotations self._modes_of_inheritance = modes_of_inheritance @property def identifier(self) -> TermId: return self._id @property def name(self) -> str: return self._name @property def annotations(self) -> typing.Collection[HpoDiseaseAnnotation]: return self._annotations @property def modes_of_inheritance(self) -> typing.Collection[TermId]: return self._modes_of_inheritance
[docs] class SimpleHpoDiseases(HpoDiseases): def __init__(self, diseases: typing.Iterable[HpoDisease], version: str = None): self._diseases = {d.identifier: d for d in diseases} self._version = version @property def items(self) -> typing.Collection[ANNOTATED_ITEM]: return self._diseases.values() @property def diseases(self) -> typing.Collection[HpoDisease]: # REMOVE(v1.0.0) warnings.warn('The `diseases` property has been deprecated and will be removed in `v1.0.0`. ' 'Use `items()` instead', category=DeprecationWarning, stacklevel=2) return self._diseases.values() @property def disease_ids(self): # REMOVE(v1.0.0) warnings.warn(f'`disease_ids` property has been deprecated and will be removed in v1.0.0. ' f'Iterate over `item_ids()` instead.', DeprecationWarning, stacklevel=2) return list(self.item_ids()) def __getitem__(self, item: CURIE_OR_TERM_ID) -> typing.Optional[HpoDisease]: if isinstance(item, TermId): pass elif isinstance(item, str): item = TermId.from_curie(item) else: raise ValueError(f'Expected a `str` or `TermId` but got {type(item)}') try: return self._diseases[item] except KeyError: return None def __iter__(self) -> typing.Iterator[HpoDiseaseAnnotation]: return iter(self.items) def __len__(self) -> int: return len(self._diseases) @property def version(self) -> typing.Optional[str]: return self._version