跳转至

代谢组与微生物组整合分析


一句话说明

代谢组与微生物组整合分析就是"把肠道细菌名单和它们的代谢产物对应起来"——微生物组告诉你有哪些菌,代谢组告诉你它们产生了什么物质,两者结合才能真正理解菌群如何影响宿主健康。


核心知识点

要点1:为什么要整合?

  • 单组学局限:16S/宏基因组只告诉你"有什么菌",但不知道它们在做什么
  • 代谢物是功能终端:微生物产生的代谢物(如短链脂肪酸、胆汁酸、色氨酸代谢物)是直接作用于宿主的分子
  • 因果推断:整合分析可以发现"哪种菌产生哪种代谢物"的关联,为机制研究提供线索
  • 典型应用:2型糖尿病肠道菌群-代谢物轴、IBD肠道炎症、肥胖与能量代谢

要点2:整合分析方法

  • 相关性分析(Correlation)
  • Spearman相关:最简单,计算菌属丰度和代谢物浓度的相关系数
  • SparCC/CCREPE:专为组成型数据设计的相关性方法
  • 多元统计整合
  • PLS回归:用微生物数据预测代谢物变化
  • DIABLO(mixOmics):多组学判别分析,同时分析微生物+代谢物+临床指标
  • CCA(典型相关分析):找两组数据之间最大相关的线性组合
  • 网络分析
  • 构建微生物-代谢物共现网络
  • 用WGCNA识别协变化模块

要点3:关键微生物代谢物

代谢物类别代表物质产生菌属生物学功能
短链脂肪酸SCFA丁酸、丙酸、醋酸Faecalibacterium, Roseburia肠屏障维护、抗炎
胆汁酸DCA、LCAClostridium, Bacteroides脂肪消化、糖代谢调控
色氨酸代谢物吲哚、IAALactobacillus, 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