Source code for matchms.filtering.peak_processing.require_minimum_number_of_high_peaks
import logging
from matchms.typing import SpectrumType
from .select_by_relative_intensity import select_by_relative_intensity
logger = logging.getLogger("matchms")
[docs]def require_minimum_number_of_high_peaks(spectrum_in: SpectrumType, no_peaks: int = 5,
intensity_percent: float = 2.0) -> SpectrumType:
"""Returns None if the number of peaks with relative intensity
above or equal to intensity_percent is less than no_peaks.
Parameters
----------
spectrum_in:
Input spectrum.
no_peaks:
Minimum number of peaks allowed to have relative intensity
above intensity_percent. Less peaks will return none.
Default is 5.
intensity_percent:
Minimum relative intensity (as a percentage between 0-100) for
peaks that are searched. Default is 2
"""
if spectrum_in is None:
return None
spectrum = spectrum_in.clone()
assert no_peaks >= 1, "no_peaks must be a positive nonzero integer."
assert 0 <= intensity_percent <= 100, "intensity_percent must be a scalar between 0-100."
intensities_above_p = select_by_relative_intensity(spectrum, intensity_from=intensity_percent/100, intensity_to=1.0)
if len(intensities_above_p.peaks) < no_peaks:
logger.info("Spectrum with %s (<%s) peaks was set to None.",
str(len(intensities_above_p.peaks)), str(no_peaks))
return None
return spectrum