Source code for matchms.filtering.metadata_processing.repair_parent_mass_match_smiles_wrapper
import logging
from typing import Optional
from matchms.filtering.metadata_processing.repair_adduct_based_on_smiles import \
repair_adduct_based_on_smiles
from matchms.typing import SpectrumType
from .repair_parent_mass_is_mol_wt import repair_parent_mass_is_mol_wt
from .repair_precursor_is_parent_mass import repair_precursor_is_parent_mass
from .repair_smiles_of_salts import repair_smiles_of_salts
from .require_parent_mass_match_smiles import \
_check_smiles_and_parent_mass_match
logger = logging.getLogger("matchms")
[docs]def repair_parent_mass_match_smiles_wrapper(spectrum_in: SpectrumType,
mass_tolerance: float = 0.2) -> Optional[SpectrumType]:
"""Wrapper function for repairing a mismatch between parent mass and smiles mass"""
if spectrum_in is None:
return None
spectrum = spectrum_in.clone()
filters_to_apply = [repair_smiles_of_salts,
repair_precursor_is_parent_mass,
repair_parent_mass_is_mol_wt,
repair_adduct_based_on_smiles,
]
for filter_function in filters_to_apply:
if _check_smiles_and_parent_mass_match(smiles=spectrum.get("smiles"),
parent_mass=spectrum.get("parent_mass"),
mass_tolerance=mass_tolerance):
return spectrum
spectrum = filter_function(spectrum_in=spectrum,
mass_tolerance=mass_tolerance)
return spectrum