代谢组与微生物组整合分析¶
一句话说明¶
代谢组与微生物组整合分析就是"把肠道细菌名单和它们的代谢产物对应起来"——微生物组告诉你有哪些菌,代谢组告诉你它们产生了什么物质,两者结合才能真正理解菌群如何影响宿主健康。
核心知识点¶
要点1:为什么要整合?¶
- 单组学局限:16S/宏基因组只告诉你"有什么菌",但不知道它们在做什么
- 代谢物是功能终端:微生物产生的代谢物(如短链脂肪酸、胆汁酸、色氨酸代谢物)是直接作用于宿主的分子
- 因果推断:整合分析可以发现"哪种菌产生哪种代谢物"的关联,为机制研究提供线索
- 典型应用:2型糖尿病肠道菌群-代谢物轴、IBD肠道炎症、肥胖与能量代谢
要点2:整合分析方法¶
- 相关性分析(Correlation):
- Spearman相关:最简单,计算菌属丰度和代谢物浓度的相关系数
- SparCC/CCREPE:专为组成型数据设计的相关性方法
- 多元统计整合:
- PLS回归:用微生物数据预测代谢物变化
- DIABLO(mixOmics):多组学判别分析,同时分析微生物+代谢物+临床指标
- CCA(典型相关分析):找两组数据之间最大相关的线性组合
- 网络分析:
- 构建微生物-代谢物共现网络
- 用WGCNA识别协变化模块
要点3:关键微生物代谢物¶
| 代谢物类别 | 代表物质 | 产生菌属 | 生物学功能 |
|---|---|---|---|
| 短链脂肪酸SCFA | 丁酸、丙酸、醋酸 | Faecalibacterium, Roseburia | 肠屏障维护、抗炎 |
| 胆汁酸 | DCA、LCA | Clostridium, Bacteroides | 脂肪消化、糖代谢调控 |
| 色氨酸代谢物 | 吲哚、IAA | Lactobacillus, E. coli | 免疫调节、肠屏障 |
| 支链氨基酸BCAA | 亮氨酸、异亮氨酸 | Prevotella, Bacteroides | 胰岛素抵抗相关 |
| TMAO前体 | TMA→TMAO | 多种厌氧菌 | 心血管疾病风险 |
要点4:实验设计要点¶
- 配对采样:同一受试者同时采集粪便(微生物组)和血清/粪便上清(代谢组)
- 样本量:整合分析需要更大样本量(n≥30每组),因为变量多
- 批次效应:两种组学的批次效应要分别处理
- 数据预处理:微生物数据做CLR变换,代谢数据做log变换+归一化
实战代码¶
# === 微生物组-代谢组整合分析 ===
import pandas as pd
import numpy as np
from scipy.stats import spearmanr
import seaborn as sns
import matplotlib.pyplot as plt
# 1. 读取数据
# 微生物属水平相对丰度(CLR变换后)
microbiome = pd.read_csv("genus_clr.csv", index_col=0) # 行=样本,列=菌属
# 代谢物浓度(log变换后)
metabolome = pd.read_csv("metabolites_log.csv", index_col=0) # 行=样本,列=代谢物
# 确保样本顺序一致
common_samples = microbiome.index.intersection(metabolome.index)
microbiome = microbiome.loc[common_samples]
metabolome = metabolome.loc[common_samples]
# 2. 计算Spearman相关矩阵
n_microbes = microbiome.shape[1]
n_metabolites = metabolome.shape[1]
corr_matrix = np.zeros((n_microbes, n_metabolites)) # 相关系数矩阵
pval_matrix = np.zeros((n_microbes, n_metabolites)) # p值矩阵
for i, mic in enumerate(microbiome.columns):
for j, met in enumerate(metabolome.columns):
rho, pval = spearmanr(microbiome[mic], metabolome[met])
corr_matrix[i, j] = rho
pval_matrix[i, j] = pval
# 3. FDR校正
from statsmodels.stats.multitest import multipletests
pvals_flat = pval_matrix.flatten()
_, padj_flat, _, _ = multipletests(pvals_flat, method="fdr_bh")
padj_matrix = padj_flat.reshape(pval_matrix.shape)
# 4. 筛选显著相关(|rho|>0.4, FDR<0.05)
significant = (np.abs(corr_matrix) > 0.4) & (padj_matrix < 0.05)
n_sig = significant.sum()
print(f"显著相关对数: {n_sig}")
# 5. 绘制相关性热图(只显示显著的)
corr_df = pd.DataFrame(corr_matrix,
index=microbiome.columns,
columns=metabolome.columns)
# 只保留至少有一个显著相关的行和列
sig_rows = significant.any(axis=1)
sig_cols = significant.any(axis=0)
corr_sig = corr_df.loc[sig_rows, sig_cols]
plt.figure(figsize=(14, 10))
sns.heatmap(corr_sig, cmap="RdBu_r", center=0, vmin=-0.8, vmax=0.8,
xticklabels=True, yticklabels=True)
plt.title("Microbiome-Metabolome Spearman Correlation")
plt.tight_layout()
plt.savefig("microbe_metabolite_heatmap.png", dpi=150)
# === 使用mixOmics的DIABLO做多组学整合 ===
library(mixOmics)
# 1. 准备数据列表
X <- list(
microbiome = as.matrix(microbiome_data), # 微生物丰度矩阵
metabolome = as.matrix(metabolome_data) # 代谢物浓度矩阵
)
Y <- factor(group_labels) # 分组标签(如Disease/Control)
# 2. 参数调优
design <- matrix(0.1, ncol=2, nrow=2) # 设置组学间关联权重
diag(design) <- 0
# 3. 运行DIABLO
result <- block.splsda(X, Y, ncomp=2, design=design)
# 4. 可视化
plotDiablo(result, ncomp=1) # 组学间相关得分图
circosPlot(result, cutoff=0.7) # 环形图展示跨组学关联
面试常问点¶
Q1: 你的T2D项目中有没有做代谢组和微生物组的整合分析?¶
参考答案:我的项目主要是宏基因组层面的分析,但整合分析是非常有价值的方向。比如已有研究发现T2D患者肠道中产短链脂肪酸的菌(如Faecalibacterium、Roseburia)减少,同时粪便中丁酸浓度降低,血液中支链氨基酸升高(与胰岛素抵抗相关)。如果做整合分析,可以用Spearman相关或DIABLO方法把菌属丰度和代谢物浓度关联起来,找到"菌-代谢物"配对关系。
Q2: 相关性不等于因果,怎么进一步验证?¶
参考答案:对,相关性分析只是第一步。验证因果关系需要:一是孟德尔随机化(用遗传变异作为工具变量);二是体外实验(用特定菌株培养,检测上清液中的代谢物);三是动物实验(给无菌小鼠定植特定菌,检测代谢物变化);四是时间序列分析(如果纵向数据显示菌变化在前、代谢物变化在后,支持因果方向)。
速查卡片¶
| 问题 | 一句话答案 |
|---|---|
| 为什么要整合微生物和代谢组? | 微生物告诉你"有谁",代谢组告诉你"在做什么" |
| 最简单的整合方法? | Spearman相关分析 |
| DIABLO是什么? | mixOmics中的多组学判别分析方法 |
| SCFA主要由哪些菌产生? | Faecalibacterium、Roseburia等厌氧菌 |
| 整合分析的样本量要求? | 每组至少30个,比单组学要更多 |
| 组成型数据用什么相关方法? | SparCC或CCREPE,而非普通Pearson |