update_literal_mappings

update_literal_mappings(literal_mappings: list[LiteralMapping], mappings: list[Mapping]) list[LiteralMapping][source]

Use a priority mapping to re-write terms with priority groundings.

Parameters:
  • literal_mappings – A list of literal mappings

  • mappings – A list of SeMRA mapping objects, constituting a priority mapping. This means that each mapping has a unique subject.

Returns:

A new list of literal mappings that have been remapped

from itertools import chain

from pyobo import get_literal_mappings
from ssslm.ner import make_grounder

from semra import Configuration, Input
from semra.api import update_literal_mappings

prefixes = ["doid", "mondo", "efo"]

# 1. Get terms
literal_mappings = chain.from_iterable(get_literal_mappings(p) for p in prefixes)

# 2. Get mappings
configuration = Configuration.from_prefixes(name="Diseases", prefixes=prefixes)
mappings = configuration.get_mappings()

# 3. Update terms and use them (i.e., to construct a grounder)
new_literal_mappings = update_literal_mappings(literal_mappings, mappings)
grounder = make_grounder(new_literal_mappings)