Source code for ppsc.v202._gene_descriptor

import typing

import phenopackets as pp202
from google.protobuf.message import Message

from .._api import MessageMixin


[docs] class GeneDescriptor(MessageMixin): def __init__( self, value_id: str, symbol: str, description: typing.Optional[str] = None, alternate_ids: typing.Optional[typing.Iterable[str]] = None, xrefs: typing.Optional[typing.Iterable[str]] = None, alternate_symbols: typing.Optional[typing.Iterable[str]] = None, ): self._value_id = value_id self._symbol = symbol self._description = description self._alternate_ids = [] if alternate_ids is None else list(alternate_ids) self._xrefs = [] if xrefs is None else list(xrefs) self._alternate_symbols = [] if alternate_symbols is None else list(alternate_symbols) @property def value_id(self) -> str: return self._value_id @value_id.setter def value_id(self, value: str): self._value_id = value @property def symbol(self) -> str: return self._symbol @symbol.setter def symbol(self, value: str): self._symbol = value @property def description(self) -> str: return self._description @description.setter def description(self, value: str): self._description = value @description.deleter def description(self): self._description = None @property def alternate_ids(self) -> typing.MutableSequence[str]: return self._alternate_ids @property def xrefs(self) -> typing.MutableSequence[str]: return self._xrefs @property def alternate_symbols(self) -> typing.MutableSequence[str]: return self._alternate_symbols
[docs] @staticmethod def field_names() -> typing.Iterable[str]: return 'value_id', 'symbol', 'description', 'alternate_ids', 'xrefs', 'alternate_symbols',
[docs] @classmethod def required_fields(cls) -> typing.Sequence[str]: return 'value_id', 'symbol',
[docs] @classmethod def from_dict(cls, values: typing.Mapping[str, typing.Any]): if cls._all_required_fields_are_present(values): return GeneDescriptor( value_id=values['value_id'], symbol=values['symbol'], description=values.get('description', None), alternate_ids=values.get('alternate_ids', None), xrefs=values.get('xrefs', None), alternate_symbols=values.get('alternate_symbols', None), ) else: cls._complain_about_missing_field(values)
[docs] def to_message(self) -> Message: gene_descriptor = pp202.GeneDescriptor(value_id=self._value_id, symbol=self._symbol) if self._description is not None: gene_descriptor.description = self._description gene_descriptor.alternate_ids.extend(self._alternate_ids) gene_descriptor.xrefs.extend(self._xrefs) gene_descriptor.alternate_symbols.extend(self._alternate_symbols) return gene_descriptor
[docs] @classmethod def message_type(cls) -> typing.Type[Message]: return pp202.GeneDescriptor
[docs] @classmethod def from_message(cls, msg: Message): if isinstance(msg, cls.message_type()): return GeneDescriptor( value_id=msg.value_id, symbol=msg.symbol, description=None if msg.description == '' else msg.description, alternate_ids=msg.alternate_ids, xrefs=msg.xrefs, alternate_symbols=msg.alternate_symbols, ) else: cls.complain_about_incompatible_msg_type(msg)
def __eq__(self, other): return isinstance(other, GeneDescriptor) \ and self._value_id == other._value_id \ and self._symbol == other._symbol \ and self._description == other._description \ and self._alternate_ids == other._alternate_ids \ and self._xrefs == other._xrefs \ and self._alternate_symbols == other._alternate_symbols def __repr__(self): return f'GeneDescriptor(' \ f'value_id={self._value_id}, ' \ f'symbol={self._symbol}, ' \ f'description={self._description}, ' \ f'alternate_ids={self._alternate_ids}, ' \ f'xrefs={self._xrefs}, ' \ f'alternate_symbols={self._alternate_symbols})'