У меня есть таблица с местоположениями пиков и их соответствующими именами. Мне нужно знать, существует ли пик в заданном месте или нет, и рассчитать площадь под кривой.
peak_location = [12, 100 , 900 ,1000, 2000] #just dummy locations in my case I have about 100
sample = DATA[12]["intensity"]
sample1 = pre.normalize_2(pre.diff(pre.normalize_2(sample)))
peak_idx, properties = find_peaks(sample1, height=None, threshold=None, distance=None,
prominence=2, width=1, wlen=None, rel_height=.5,
plateau_size=None)
properties["prominences"], properties["widths"]
plt.plot(sample1)
plt.plot(peak_idx, sample1[peak_idx], 'x', color='yellow')
plt.vlines(x=peak_idx, ymin=sample1[peak_idx] - properties["prominences"],
ymax = sample1[peak_idx], color = "C1")
plt.hlines(y=properties["width_heights"], xmin=properties["left_ips"],
xmax=properties["right_ips"], color = "C1")
plt.vlines(peak_location, ymin=(min(sample1)-10), ymax=(max(sample1)+10), colors="r")
plt.show()
Примером формы сигнала после дифференцирования красные линии показывают местоположение пика: