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
,auto1
或auto2
--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
查看更多参数说明。