Я пытаюсь разработать программу, которая измеряет ширину пика на половине высоты. Данные взяты из CSV-файла с 6000 точками данных. Я работаю в биотехнологической компании, поэтому не могу дать много информации о данных.
Это действительно один пик, который я пытаюсь проанализировать. Пиковое изображение ниже
Пик
Я попробовал метод сплайна, используя UnivaraiteSpline. Проблема, с которой я столкнулся, заключалась в том, что расстояние на половине высоты казалось неправильным. Высота пика была в точке 3762, а расстояние предположительно составляло 126, но сюжет, казалось, был еще дальше.
Мой общий метод состоял в том, чтобы исправить базовую линию, затем я нормализовал данные, разделив все точки на максимальную интенсивность.
import pandas as pd
import numpy as np
from scipy.signal import peak_widths
data = pd.read_csv(r'file.csv')
df = pd.DataFrame(data)
y = df.iloc[2: , 3]
x = df.index[2: ]
#Baseline Correction
baseCorr = float(df.iloc[3001, 3])
y_corr = y.astype(np.float64) - baseCorr
#Normalize
y_norm = y_corr / np.max(y_corr)
xmax = x[np.argmax(y_norm)]
#Full width half max
fwhm = peak_widths(y_norm, peaks, rel_height = 0.5)
TypeError: Невозможно безопасно привести peaks
к dtype ('intp')