Source code for ranch.models.peaks

from typing import Union, overload

from scipy.ndimage import maximum_filter1d

from .. import structures as struct
from ..core import header as hdr

__all__ = ["peaks_detection"]


@overload
def peaks_detection(
    input: "struct.Cube",
    delta_peaks: int = 1,
    peaks_min: Union[float, "struct.Struct"] = -float("inf"),
) -> "struct.Cube":
    ...


@overload
def peaks_detection(
    input: "struct.Profile",
    delta_peaks: int = 1,
    peaks_min: Union[float, "struct.Struct"] = -float("inf"),
) -> "struct.Profile":
    ...


[docs] def peaks_detection( input: Union["struct.Cube", "struct.Profile"], delta_peaks: int = 1, peaks_min: Union[float, "struct.Struct"] = -float("inf"), ) -> "struct.Struct": """axis must be 'spectral', 'spatial' or 'all'""" peaks = type(input).from_numpy( maximum_filter1d(input.data, 2 * delta_peaks + 1, axis=0), input.header ) peaks = (peaks == input) & (input > peaks_min) return peaks