import pandas as pd
from aoptk.chemical import Chemical
from aoptk.normalization.normalize_chemical import NormalizeChemical
[docs]
class PubChemSynonyms(NormalizeChemical):
"""Class for normalizing chemical names using PubChem synonyms."""
def __init__(self, synonyms: pd.DataFrame):
[docs]
self._synonyms = synonyms
[docs]
def normalize_chemical(self, chemical: Chemical) -> Chemical:
"""Normalize a chemical name using PubChem synonyms."""
for _, row in self._synonyms.iterrows():
heading = row.loc["heading"]
if heading == chemical.name or chemical.name in row.loc["synonyms"]:
chemical.heading = heading
chemical.synonyms.clear()
chemical.synonyms.update(row.loc["synonyms"])
return chemical
return chemical