Source code for bridge.builders.edam.edam_composer
"""
High-level coroutine that chains EDAMTermByNameIngestor and EDAMTermTransformer
to produce an EDAMTerm model from an EDAM term name.
"""
import logging
from bridge.core import EDAMTerm
from bridge.services import EDAMTermByNameIngestor
from .edam_transformer import EDAMTransformer
logger = logging.getLogger(__name__)
[docs]
async def compose_edam_term_metadata(
term_name: str,
) -> EDAMTerm:
"""
Fetch and transform EDAM term data into an EDAMTerm model.
Parameters
----------
term_name : str
The name of the EDAM term to fetch and transform.
Returns
-------
EDAMTerm
An EDAMTerm model representing the metadata of the specified EDAM term.
Raises
------
Exception
If there is an error during ingestion or transformation.
"""
logger.info(f"Composing EDAM term metadata model for term name '{term_name}'")
try:
edam_ingestor = EDAMTermByNameIngestor(name=term_name)
edam_transformer = EDAMTransformer(edam_ingestor)
edam_term_metadata = await edam_transformer.transform()
logger.info(f"Composed EDAM term metadata model for term name '{term_name}' successfully")
return edam_term_metadata
except Exception as e:
logger.exception(f"Error composing EDAM term metadata model for term name '{term_name}': {e}")
raise