0
$\begingroup$

Given a list of substance (which can be expressed in any form: general terms or chemical taxonomy) I need to find the specific MeSH term.

I understood that I can use those web services: https://id.nlm.nih.gov/mesh/swagger/ui More specifically, the webservice https://id.nlm.nih.gov/mesh/lookup/term does a sort of "lookup" and, if found, it returns label, mesh term and URI. However, this web service works only if the input string is part of the mesh term.

Eg: input = arsenit output = {'substance': 'Arsenite', 'MeSH': 'arsenite', 'URI': 'http://id.nlm.nih.gov/mesh/T093970'}

Essentially, the web service it works by comparing strings (arsenit is substring of arsenite).

Often the substance I use as input is expressed in a way that the string comparison will fail. Is there any service/library that can overcome this limit?

eg: input = Benz[a]anthracene expected output = Polycyclic Aromatic Hydrocarbons

$\endgroup$

1 Answer 1

1
$\begingroup$

Your question encompasses a number of different scenarios:

  1. Your search term is not the primary label for the MeSH concept, but is an accepted alias or synonym (which may or may not be recorded in MeSH)
  2. Given an input term, find a broader category of terms (e.g Benz[a]anthracene is narrower than PAC, which is your example)
  3. The input term is a substring or superstring of the actual term or alias
  4. The input term has typos and you want to search using string distance

There are a number of online APIs that can help with this, but they may differ in how well they handle each of the above scenarios, as well as other factors such as update frequency.

Most ontology portals such as OLS or Bioportal provide search endpoints that help with 1. These should all make use of official aliases. They may differ in how they deal with 3 or 4, but relevancy ranking is typically used with exact matches returned first.

An example is the bioportal API here: http://data.bioontology.org/documentation#nav_search

Note you will want to parameterize your search to restrict it to MeSH, but expanding the number of ontologies can be a good strategy to increase recall.

Bioportal and other ontology APIs also provide hierarchy endpoints to get parent concepts like PAC.

Another service is the NCATS Biomedical Translator Name Resolution service. This makes use of multiple different ontologies and chemical databases to increase recall, but can give back results mapped to your favored system, eg MeSh

The service is here: https://name-resolution-sri.renci.org/docs

Your example: https://name-resolution-sri.renci.org/lookup?string=Benz%5Ba%5Danthracene&autocomplete=true&offset=0&limit=10&only_prefixes=MESH

This returns the correct MeSH term even though it is a lexical variant of the input

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.