[ PROMPT_NODE_27162 ]
metabolomics
[ SKILL_DOCUMENTATION ]
# 代谢组学工作流
## 概述
PyOpenMS 为非靶向代谢组学分析提供了专业工具,包括针对小分子优化的特征检测、加合物分组、化合物鉴定以及与代谢组学数据库的集成。
## 非靶向代谢组学流程
### 完整工作流
python
import pyopenms as ms
def metabolomics_pipeline(input_files, output_dir):
"""
完整的非靶向代谢组学工作流。
参数:
input_files: mzML 文件路径列表(每个样本一个)
output_dir: 输出文件目录
"""
# 第 1 步: 峰拾取与特征检测
feature_maps = []
for mzml_file in input_files:
print(f"正在处理 {mzml_file}...")
# 加载数据
exp = ms.MSExperiment()
ms.MzMLFile().load(mzml_file, exp)
# 如果需要,进行峰拾取
if not exp.getSpectrum(0).isSorted():
picker = ms.PeakPickerHiRes()
exp_picked = ms.MSExperiment()
picker.pickExperiment(exp, exp_picked)
exp = exp_picked
# 特征检测
ff = ms.FeatureFinder()
params = ff.getParameters("centroided")
# 代谢组学特定参数
params.setValue("mass_trace:mz_tolerance", 5.0) # ppm,代谢物容差更小
params.setValue("mass_trace:min_spectra", 5)
params.setValue("isotopic_pattern:charge_low", 1)
params.setValue("isotopic_pattern:charge_high", 2) # 大多为单电荷
features = ms.FeatureMap()
ff.run("centroided", exp, features, params, ms.FeatureMap())
features.setPrimaryMSRunPath([mzml_file.encode()])
feature_maps.append(features)
print(f" 检测到 {features.size()} 个特征")
# 第 2 步: 加合物检测与分组
print("正在检测加合物...")
adduct_grouped_maps = []
adduct_detector = ms.MetaboliteAdductDecharger()
params = adduct_detector.getParameters()
params.setValue("potential_adducts", "[M+H]+,[M+Na]+,[M+K]+,[M+NH4]+,[M-H]-,[M+Cl]-")
params.setValue("charge_min", 1)
params.setValue("charge_max", 1)
adduct_detector.setParameters(params)
for fm in feature_maps:
fm_out = ms.FeatureMap()
adduct_detector.compute(fm, fm_out, ms.ConsensusMap())
adduct_grouped_maps.append(fm_out)
# 第 3 步: RT 对齐
print("正在对齐保留时间...")
aligner = ms.MapAlignmentAlgorithmPoseClustering()
params = aligne