Source code for matchms.filtering.metadata_processing.require_precursor_mz
import logging
from typing import Union
from matchms.typing import SpectrumType
logger = logging.getLogger("matchms")
[docs]def require_precursor_mz(spectrum_in: SpectrumType,
minimum_accepted_mz: float = 10.0
) -> Union[SpectrumType, None]:
"""Returns None if there is no precursor_mz or if <= minimum_accepted_mz
Parameters
----------
spectrum_in:
Input spectrum.
minimum_accepted_mz:
Set to minimum acceptable value for precursor m/z. Default is set to 10.0.
"""
if spectrum_in is None:
return None
spectrum = spectrum_in.clone()
precursor_mz = spectrum.get("precursor_mz", None)
if precursor_mz is None:
pepmass = spectrum.get("pepmass", None)
assert pepmass is None or not isinstance(pepmass[0], (float, int)), \
"Found 'pepmass' but no 'precursor_mz'. " \
"Consider applying 'add_precursor_mz' filter first."
return None
assert isinstance(precursor_mz, (float, int)), \
("Expected 'precursor_mz' to be a scalar number.",
"Consider applying 'add_precursor_mz' filter first.")
if precursor_mz <= minimum_accepted_mz:
logger.info("Spectrum without precursor_mz was set to None.")
return None
return spectrum