首页 > 解决方案 > 如何形成基线,从原始图中减去基线并在 160 个数据帧中重复基线减法?

问题描述

尽管其他线程已经讨论过找到基线并从他们的数据中减去它,但这些线程只在一个图表上完成了它并使用了某种拟合。我的应用程序类似,但不同,它们的代码不适用于我。本质上,我想获取原始数据,形成基线,从基线中减去原始数据,取每个数据帧的最大值并绘制最大值。现在对我来说最大的问题是能够形成一个可以在每个数据帧中循环的基线(有 160 个数据帧)。

因此,我尝试了使用更复杂的拟合或算法的其他方法,但它们都没有奏效,或者很难实现到我更简单的图表中。到目前为止,我能够找到并绘制所有 160 个最大值。我需要帮助的只是减去背景,以便最大值彼此更加一致。

filestoprocess = []
peak 1 = []

for filename in filestoprocess:
    dfspectra = pd.read_csv(filename, skiprows = 13, delimiter =                                 '\t', header = None, names = ['Wavelength (nm)','Absorbance'])
    ymax1 = np.max(dfspectra['Absorbance'][162:218])
    peak1.append(ymax1)

time = range(0,160)   
x = np.array(time)
ax.plot(x, peak1)

这是我到目前为止的代码。它只是将最大值放入数组并绘制数组。我不知道如何开始制作另一个基线,从每个数据帧中减去它,然后绘制那些最大值。

由于某种原因,我无法上传我的情节。但它只是一个吸收光谱,具有变平的高斯形状。我不知道基线减法是否需要某种高斯拟合。但我希望基线只是我拥有的光谱的更稳定和平坦的版本,这将有助于标准化最大值。

编辑*:

这是我在另一个尝试过的线程中看到的代码,但不确定我是否正确使用它。我不知道它是否适用于我的应用程序

def baseline_als(y, lam, p, niter=10):
  L = len(y)
  D = sparse.csc_matrix(np.diff(np.eye(L), 2))
  w = np.ones(L)
  for i in xrange(niter):
    W = sparse.spdiags(w, 0, L, L)
    Z = W + lam * D.dot(D.transpose())
    z = spsolve(Z, w*y)
    w = p * (y > z) + (1-p) * (y < z)
  return z

标签: pythonpandasloopsmatplotlibbaseline

解决方案


推荐阅读