Como encontrar o FWHM em um conjunto de dados com vários picos?

Estou usando um script Python que encontra os índices dos picos (ou vales no meu caso) ao longo de um perfil 1D, em um intervalo específico de valores. Meu objetivo é medir o FWHM para cada vale de interesse.Este é um exemplo de perfil 1D

Este é o script:

def detect_peaks (x, mnph=None, mxph=None, mpd=1, threshold=0, edge='rising',
             kpsh=False, valley=False, show=False, ax=None):
#from __future__ import division, print_function
import numpy as np
x = np.atleast_1d(x).astype('float64')
if x.size < 3:
    return np.array([], dtype=int)
if valley:
    x = -x
# find indices of all peaks
dx = x[1:] - x[:-1]
# handle NaN's
indnan = np.where(np.isnan(x))[0]
if indnan.size:
    x[indnan] = np.inf
    dx[np.where(np.isnan(dx))[0]] = np.inf
ine, ire, ife = np.array([[], [], []], dtype=int)
if not edge:
    ine = np.where((np.hstack((dx, 0)) < 0) & (np.hstack((0, dx)) > 0))[0]
else:
    if edge.lower() in ['rising', 'both']:
        ire = np.where((np.hstack((dx, 0)) <= 0) & (np.hstack((0, dx)) > 0))[0]
    if edge.lower() in ['falling', 'both']:
        ife = np.where((np.hstack((dx, 0)) < 0) & (np.hstack((0, dx)) >= 0))[0]
ind = np.unique(np.hstack((ine, ire, ife)))
# handle NaN's
if ind.size and indnan.size:
    # NaN's and values close to NaN's cannot be peaks
    ind = ind[np.in1d(ind, np.unique(np.hstack((indnan, indnan-1, indnan+1))), invert=True)]
# first and last values of x cannot be peaks
if ind.size and ind[0] == 0:
    ind = ind[1:]
if ind.size and ind[-1] == x.size-1:
    ind = ind[:-1]
"""ABOUT mnph and mxph => It works just on valleys, for peaks: REMOVE the minus ("-") below in the code"""
# remove valleys < minimum peak height
if ind.size and mnph is not None:
    ind = ind[-x[ind] >= mnph]
# remove valleys > maximum peak height
if ind.size and mxph is not None:
    ind = ind[-x[ind] <= mxph]
return ind

Como posso executar esta operação?

questionAnswers(1)

yourAnswerToTheQuestion