Source code for bridge.builders.edam.edam_transformer

"""
Transformer converting raw EDAM term data into an EDAMTerm model.
"""

import logging

from bridge.builders.protocols import Transformer
from bridge.core import EDAMTerm
from bridge.services import EDAMTermByNameIngestor

logger = logging.getLogger(__name__)


[docs] class EDAMTransformer(Transformer): """ Transform raw EDAM term data into an EDAMTerm model. Parameters ---------- ingestor : EDAMTermByNameIngestor An instance of EDAMTermByNameIngestor to fetch raw EDAM term data. Attributes ---------- ingestor : EDAMTermByNameIngestor The ingestor instance used to fetch raw EDAM term data. """ def __init__(self, ingestor: EDAMTermByNameIngestor): self.ingestor = ingestor
[docs] async def transform(self) -> EDAMTerm: """ Transform raw EDAM term data into an EDAMTerm model. Returns ------- EDAMTerm The transformed EDAMTerm model. """ logger.info(f"Transforming data for EDAM term name '{self.ingestor.name}'") raw_data = await self.ingestor.fetch() logger.debug(f"Raw data keys: {list(raw_data.keys())}") result = EDAMTerm(**raw_data) logger.info(f"Transformed data for EDAM term name '{self.ingestor.name}' successfully") return result