[ PROMPT_NODE_27164 ]
signal_processing
[ SKILL_DOCUMENTATION ]
# 信号处理
## 概述
PyOpenMS 提供了用于处理原始质谱数据的算法,包括平滑、滤波、峰值检测、中心化、归一化和去卷积。
## 算法模式
大多数信号处理算法遵循标准模式:
python
import pyopenms as ms
# 1. 创建算法实例
algo = ms.AlgorithmName()
# 2. 获取并修改参数
params = algo.getParameters()
params.setValue("parameter_name", value)
algo.setParameters(params)
# 3. 应用于数据
algo.filterExperiment(exp) # 或 filterSpectrum(spec)
## 平滑处理
### 高斯滤波 (Gaussian Filter)
应用高斯平滑以降低噪声:
python
# 创建高斯滤波器
gaussian = ms.GaussFilter()
# 配置参数
params = gaussian.getParameters()
params.setValue("gaussian_width", 0.2) # m/z 或 RT 单位的宽度
params.setValue("ppm_tolerance", 10.0) # 用于 m/z 维度
params.setValue("use_ppm_tolerance", "true")
gaussian.setParameters(params)
# 应用于实验数据
gaussian.filterExperiment(exp)
# 或应用于单个质谱图
spec = exp.getSpectrum(0)
gaussian.filterSpectrum(spec)
### Savitzky-Golay 滤波
保留峰形的平滑多项式算法:
python
# 创建 Savitzky-Golay 滤波器
sg_filter = ms.SavitzkyGolayFilter()
# 配置参数
params = sg_filter.getParameters()
params.setValue("frame_length", 11) # 窗口大小(必须为奇数)
params.setValue("polynomial_order", 4) # 多项式阶数
sg_filter.setParameters(params)
# 应用平滑
sg_filter.filterExperiment(exp)
## 峰值检测与中心化
### 高分辨率峰值检测 (Peak Picker High Resolution)
检测高分辨率数据中的峰值:
python
# 创建峰值检测器
peak_picker = ms.PeakPickerHiRes()
# 配置参数
params = peak_picker.getParameters()
params.setValue("signal_to_noise", 3.0) # 信噪比阈值
params.setValue("spacing_difference", 1.5) # 最小峰间距
peak_picker.setParameters(params)
# 检测峰值
exp_picked = ms.MSExperiment()
peak_picker.pickExperiment(exp, exp_picked)
### 基于小波变换的峰值检测 (Peak Picker for CWT)
基于连续小波变换 (CWT) 的峰值检测:
python
# 创建 CWT 峰值检测器
cwt_picker = ms.PeakPickerCWT()
# 配置参数
params = cwt_picker.getParameters()
params.setValue("signal_to_noise", 1.0)
params.setValue("peak_width", 0.15) # 预期峰宽
cwt_picker.setParameters(params)
# 检测峰值
cwt_picker.pickExperiment(exp, exp_picked)
## 归一化
### 归一化器 (Normalizer)
归一化峰强度 wi