Aggregator Adapter

Documentation

class oaklib.implementations.aggregator.aggregator_implementation.AggregatorImplementation(resource: ~oaklib.resource.OntologyResource | None = None, strict: bool = False, _multilingual: bool | None = None, autosave: bool = <factory>, exclude_owl_top_and_bottom: bool = <factory>, ontology_metamodel_mapper: ~oaklib.mappers.ontology_metadata_mapper.OntologyMetadataMapper | None = None, _converter: ~curies.api.Converter | None = None, auto_relax_axioms: bool | None = None, cache_lookups: bool = False, property_cache: ~oaklib.utilities.keyval_cache.KeyValCache = <factory>, _edge_index: ~oaklib.indexes.edge_index.EdgeIndex | None = None, _entailed_edge_index: ~oaklib.indexes.edge_index.EdgeIndex | None = None, implementations: ~typing.List[~oaklib.interfaces.basic_ontology_interface.BasicOntologyInterface] | None = None)[source]

An OAK adapter that wraps multiple implementations and integrates results together.

This allows for multiple implementations to be wrapped, with calls to the aggregator farming out queries to multiple implementations, and weaving the results together.

>>> from oaklib import get_adapter
>>> from oaklib.implementations import AggregatorImplementation
>>> from oaklib.datamodels.search import SearchConfiguration, SearchTermSyntax
>>> hp = get_adapter("sqlite:obo:hp")
>>> mp = get_adapter("sqlite:obo:mp")
>>> cfg = SearchConfiguration(syntax=SearchTermSyntax.REGULAR_EXPRESSION)
>>> agg = AggregatorImplementation(implementations=[hp, mp])
>>> for entity in sorted(agg.basic_search("parathyroid", config=cfg)):
...     print(entity, agg.label(entity))

...
HP:0000860 Parathyroid hypoplasia
...
MP:0000680 absent parathyroid glands
...

Command Line Usage

Use the --add (-a) option before the main command to add additional implementations.

E.g

runoak -i db/mp.db -a db/hp.db COMMAND [COMMAND OPTIONS]