hifast.bld 基线扣除

hifast.bld 模块用于拟合和扣除基线(baselined)。

这个过程是将除信号外的其他成分作为基线进行拟合和扣除。通常基线比信号更“平滑”,因此可以使用 PLS、多项式等方法来拟合基线。 在拟合基线时,需要排除信号区域,这里采用迭代调整每个数据点的权重来使得信号区域的权重为0或者很小。噪音会影响基线拟合的效果,因此需要通过预处理来降低噪音。

因此,这一步的流程为 预处理-->迭代拟合出基线后扣减-->后处理(可选,取决于预处理)。输出文件名会包含 -bld 或者 -bld_p

处理流程

预处理

备注

预处理后的谱线只用于拟合基线,然后再用原始谱线减去基线,因此不会影响原始谱线。

预处理包括沿时间轴和沿频率方向两种操作。

  • 沿时间轴对每个 channel (frequency sample)操作(开启后可能需加后处理)
    包括合并谱线 --njoin 和平滑 --s_method_t 两种方法,通常只使用其中一种。 --njoin 减少了要拟合的基线数量,能节省拟合基线的时间。
    适用于基线在合并或者平滑的这个时间范围内比较稳定的情况。通常可以再进行后处理,用低阶多项式再次去基线来修正整体幅度的变化。
    • --njoin: 多少条谱线合并处理来拟合基线。

    • --s_method_t: 沿时间轴平滑的方法;可选 median, gaussian, boxcar; 需配合 --s_sigma_t 参数。

    • --s_sigma_t: 平滑尺度,单位为谱线数。

  • 沿频率轴对每条谱线(通常开启)
    通常只需要以下的一种。
    • --s_method_freq: 每条谱线沿频率轴平滑以提高信噪比,可选 gaussian, boxcar; 配合 --s_sigma_freq

    • --s_sigma_freq: 平滑尺度,单位为采样点数量。一般W带可设为3, F和N带可设为48。

    • --average_every_freq: 沿频率轴每多少个采样点进行平均从而降低频率采样提高信噪比。

迭代拟合基线

  • --method: 拟合方法
    arPLS, srPLS,
    PLS-asym1, PLS-asym2, PLS-asym3, PLS-sym1,
    poly-asym1, poly-asym2, poly-asym3, poly-sym1
    以上方法名字中包含 - 的前半段代表拟合的函数,后半段代表迭代过程中权重调整方法。( PLS-asym1 即为 arPLS)。
    前半段有 PLS 或者 poly (多项式),其中多项式拟合,适用于基线比较简单的情况,例如减去参考点(off-source)谱线后 残余基线和连续谱的扣除。
    后半段有 asym1, asym2, asym3 的都假设信号位于基线一侧,三种都有可能造成信号两侧基线过高的情况, 可配合 --exclude_add 缓解。 sym1 并不假设信号位于某一侧,但也因为少了这个先验信息,基线拟合效果可能不如 asym
  • --lam: PLS 方法时的参数。调整平滑度,越大越接近低阶多项式(poly)拟合。

  • --deg: PLS 时取2即可; poly 时为多项式阶数,例如 --deg 1 为线性拟合。

  • --niter:迭代次数,用于排除“信号”区域来寻找基线。默认即可。

  • --exclude_add: 缓解信号两侧基线可能过高的情况。 none, auto1auto2

  • --nproc: 后接一个数,使用多少个进程来并行。

  • --frange: 只用这个频率范围内谱线。后接两个数,空格隔开,下限在前。 范围越大,拟合用时越长,并且不是线性增长。

后处理

只有在预处理时开启了 --njoin 或者 --s_method_t 才需要。后处理用低阶多项式再次去基线,也可以把输出文件再次输入 hifast.bld 模块来替代。

  • --post_method: none, poly-asym1, poly-asym2, poly-asym3, poly-sym1。默认是 none

  • --post_s_method_freq:

  • --post_s_sigma_freq:

  • --post_average_every_freq:

  • --post_deg: 多项式阶数,不宜过大。

  • --post_ratio:

  • --post_niter:

  • --post_exclude_add:

JupyterLab中交互调参

  • -i: 执行交互模式

  • --length: 每次用多少条谱线来测试,默认20

  • --figsize: 输出图片大小,为matplotlib中的参数。

同时--nproc--frange在这一模式中也支持.

参数

使用命令 python -m hifast.bld -h | more 查看更多参数说明。