Source code for hpotk.constants.hpo.frequency

import typing

from hpotk.model import Identified, TermId, CURIE_OR_TERM_ID


[docs] class HpoFrequency(Identified): def __init__( self, identifier: TermId, lower_bound: float, upper_bound: float, ): self._id = identifier self._lower = lower_bound self._upper = upper_bound @property def identifier(self) -> TermId: return self._id @property def lower_bound(self) -> float: return self._lower @property def upper_bound(self) -> float: return self._upper @property def frequency(self) -> float: return (self._lower + self._upper) / 2 def __eq__(self, other): return ( isinstance(other, HpoFrequency) and self._id == other._id and self._lower == other._lower and self._upper == other._upper ) def __str__(self): return ( f"HpoFrequency(identifier={self.identifier.value}, " f"lower_bound={self.lower_bound}, " f"upper_bound={self.upper_bound})" ) def __repr__(self): return str(self)
# Children of Frequency `HP:0040279`. FREQUENCY: TermId = TermId.from_curie("HP:0040279") EXCLUDED: TermId = TermId.from_curie("HP:0040285") VERY_RARE: TermId = TermId.from_curie("HP:0040284") OCCASIONAL: TermId = TermId.from_curie("HP:0040283") FREQUENT: TermId = TermId.from_curie("HP:0040282") VERY_FREQUENT: TermId = TermId.from_curie("HP:0040281") OBLIGATE: TermId = TermId.from_curie("HP:0040280") _frequencies = ( HpoFrequency(EXCLUDED, 0.0, 0.0), HpoFrequency(VERY_RARE, 0.01, 0.04), HpoFrequency(OCCASIONAL, 0.05, 0.29), HpoFrequency(FREQUENT, 0.3, 0.79), HpoFrequency(VERY_FREQUENT, 0.8, 0.99), HpoFrequency(OBLIGATE, 1.0, 1.0), ) HPO_FREQUENCIES = {fq.identifier: fq for fq in _frequencies}
[docs] def parse_hpo_frequency(value: CURIE_OR_TERM_ID) -> typing.Optional[HpoFrequency]: """ Get :class:`HpoFrequency` for given HPO frequency term ID or `None` if the term ID does not represent a frequency term. :param value: a `str` or :class:`TermId` corresponding to HPO frequency term ID. :return: :class:`HpoFrequency` or `None`. """ if isinstance(value, TermId): key = value elif isinstance(value, str): key = TermId.from_curie(value) else: return None try: return HPO_FREQUENCIES[key] except KeyError: return None