我正在尝试设计一个程序来测量半高处的峰宽。数据来自具有6000个数据点的csv文件。我在一家生物技术公司工作,所以我无法真正提供有关数据的太多信息。
我要分析的确实是一个高峰。峰值图像在下面
我尝试使用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')