跳转至

162_微生物组与宿主遗传互作

一句话概述

微生物组与宿主遗传互作研究(mbQTL)通过关联分析宿主基因组变异(SNP)与肠道微生物组成/功能的关系,结合双生子设计和孟德尔随机化(MR)方法,揭示宿主遗传因素如何塑造微生物群落及其因果方向。


核心知识点总览

知识点说明
mbQTL微生物组数量性状位点——影响微生物丰度的宿主SNP
双生子研究利用同卵/异卵双胞胎估计微生物组的遗传度
孟德尔随机化(MR)利用基因变异作为工具变量推断因果关系
遗传度(Heritability)微生物组组成中可归因于宿主遗传的比例
GWAS关联全基因组范围内检测SNP-微生物关联
多重检验校正Bonferroni/FDR校正大量SNP×taxa测试
宿主免疫基因HLA/FUT2/LCT等已知影响微生物组的基因
组成性数据处理CLR转换处理微生物丰度的组成性约束

各步骤详解

第一步:宿主遗传-微生物组互作的研究框架

白话解释: 每个人的肠道微生物组成不完全相同——部分由饮食环境决定,部分由基因决定。比如,乳糖酶基因(LCT)的变异决定了你能否消化乳糖,这直接影响了肠道中分解乳糖的细菌的丰度。mbQTL研究就是系统性地找出所有这样的"基因-微生物"关联。

三种研究设计: | 设计 | 优势 | 局限 | |------|------|------| | 双生子研究 | 直接估计遗传度 | 样本获取困难、样本量受限 | | mbQTL/GWAS | 大规模、可发现具体基因座 | 需要大样本(>1000) | | 孟德尔随机化 | 推断因果方向 | 依赖GWAS结果、假设可能被违反 |


第二步:双生子研究估计遗传度

代码示例:

library(OpenMx)

# === ACE模型: 估计微生物丰度的遗传度 ===
# 数据: 同卵(MZ)和异卵(DZ)双胞胎的微生物丰度

# 准备数据
twin_data <- data.frame(
  MZ_twin1 = rnorm(100),   # MZ双胞胎1的某菌属CLR丰度
  MZ_twin2 = rnorm(100),   # MZ双胞胎2的某菌属CLR丰度
  DZ_twin1 = rnorm(100),   # DZ双胞胎1
  DZ_twin2 = rnorm(100)    # DZ双胞胎2
)

# 计算组内相关系数(ICC)
mz_cor <- cor(twin_data$MZ_twin1, twin_data$MZ_twin2)
dz_cor <- cor(twin_data$DZ_twin1, twin_data$DZ_twin2)

# Falconer公式估计遗传度
h2_falconer <- 2 * (mz_cor - dz_cor)
c2 <- 2 * dz_cor - mz_cor  # 共享环境
e2 <- 1 - h2_falconer - c2  # 非共享环境

cat(sprintf("遗传度 h2: %.3f\n共享环境 c2: %.3f\n非共享环境 e2: %.3f\n",
            h2_falconer, c2, e2))

# === 批量计算所有菌属的遗传度 ===
# 对每个菌属(genus)运行ACE模型
genera_list <- colnames(microbiome_clr)
heritability_results <- data.frame(
  Genus = genera_list,
  h2 = numeric(length(genera_list)),
  h2_CI_lower = numeric(length(genera_list)),
  h2_CI_upper = numeric(length(genera_list)),
  p_value = numeric(length(genera_list))
)

# 使用更精确的SEM模型 (OpenMx)
for (i in seq_along(genera_list)) {
  # ... OpenMx ACE模型拟合 ...
  # 省略详细代码, 参考OpenMx twin modeling vignette
}

# 已知高遗传度菌属:
# Christensenellaceae: h2 ~ 0.40
# Bifidobacterium: h2 ~ 0.30
# Methanobrevibacter: h2 ~ 0.35


第三步:mbQTL关联分析

代码示例:

# === 数据准备 ===
# 1. 宿主基因型数据 (PLINK格式: .bed/.bim/.fam)
# 标准GWAS QC
plink --bfile genotypes \
  --mind 0.05 \
  --geno 0.05 \
  --maf 0.05 \
  --hwe 1e-6 \
  --make-bed \
  --out genotypes_qc

# 2. 微生物组表型数据 (CLR转换后的丰度)
# 每个菌属作为一个"表型"

# === 使用PLINK或R进行mbQTL ===
library(MatrixEQTL)
# MatrixEQTL适合大规模QTL分析

# 加载数据
snps <- SlicedData$new()
snps$LoadFile("genotypes_matrix.txt")  # SNP矩阵 (SNP × 样本)

microbiome <- SlicedData$new()
microbiome$LoadFile("microbiome_clr.txt")  # 微生物CLR丰度 (taxa × 样本)

covariates <- SlicedData$new()
covariates$LoadFile("covariates.txt")  # 协变量: 年龄、性别、BMI、PCA前10个主成分

# 运行mbQTL
me <- Matrix_eQTL_main(
  snps = snps,
  gene = microbiome,  # 这里"gene"就是微生物丰度
  cvrt = covariates,
  output_file_name = "mbqtl_results.txt",
  pvOutputThreshold = 1e-5,  # 存储的P值阈值
  useModel = modelLINEAR,
  errorCovariance = numeric(),
  verbose = TRUE,
  pvalue.hist = "qqplot"
)

# 结果
cat(sprintf("检测到 %d 个显著mbQTL (FDR<0.05)\n", 
            sum(me$all$eqtls$FDR < 0.05)))

# === 多重检验校正 ===
# SNP数 × taxa数 的多重检验负担很重
# 建议: 先对每个taxon做GWAS, 各自Bonferroni校正(5e-8)
# 或使用FDR < 0.05跨所有测试

# === 已知的mbQTL举例 ===
# LCT (chr2): 影响Bifidobacterium丰度 (乳糖酶持久性)
# FUT2 (chr19): 影响Ruminococcus torques (分泌型状态)
# ABO (chr9): 影响肠道菌群组成 (血型)
# HLA region (chr6): 广泛影响免疫相关菌属

第四步:孟德尔随机化(MR)分析因果性

代码示例:

library(TwoSampleMR)

# === 微生物组 → 疾病 的因果推断 ===
# 工具变量: mbQTL中发现的显著SNP

# 1. 暴露数据(微生物): 使用mbQTL结果作为工具变量
exposure_dat <- data.frame(
  SNP = c("rs4988235", "rs601338", "rs505922"),  # mbQTL SNPs
  beta = c(0.15, 0.12, 0.08),  # 对微生物丰度的效应
  se = c(0.03, 0.02, 0.02),
  pval = c(1e-7, 1e-8, 1e-5),
  effect_allele = c("T", "A", "G"),
  other_allele = c("C", "G", "A")
)
exposure_dat$exposure <- "Bifidobacterium"
exposure_dat$id.exposure <- "bifidobacterium"

# 格式化
exposure_formatted <- format_data(exposure_dat, type = "exposure")

# 2. 结局数据(疾病): 从GWAS summary statistics获取
outcome_dat <- extract_outcome_data(
  snps = exposure_formatted$SNP,
  outcomes = "ieu-a-1100"  # 如T2D的GWAS ID (MR-Base)
)

# 3. 协调数据
dat <- harmonise_data(exposure_formatted, outcome_dat)

# 4. MR分析
mr_results <- mr(dat, method_list = c(
  "mr_ivw",             # 逆方差加权
  "mr_egger_regression", # MR-Egger (检测pleiotropy)
  "mr_weighted_median"   # 加权中位数
))

print(mr_results)

# 5. 敏感性分析
mr_pleiotropy_test(dat)  # 多效性检验
mr_heterogeneity(dat)    # 异质性检验
mr_scatter_plot(mr_results, dat)  # 散点图

# === 反向MR: 疾病 → 微生物组 ===
# 使用疾病GWAS的SNP作为工具变量
# 检验是否是疾病导致微生物改变(而非反方向)


第五步:多组学整合分析

代码示例:

# === 宿主基因表达与微生物组的关联 ===
library(Maaslin2)

# Maaslin2: 多变量关联分析
# 在关联分析中同时纳入宿主基因型、表达量和微生物丰度

# 分析宿主基因表达与微生物丰度的关联
fit_expression <- Maaslin2(
  input_data = microbiome_clr_df,     # 微生物CLR丰度
  input_metadata = host_metadata,      # 含基因表达和临床变量
  output = "maaslin2_output/",
  fixed_effects = c("host_gene_expr", "age", "sex", "BMI"),
  random_effects = c("batch"),
  normalization = "NONE",  # 已做CLR
  transform = "NONE",
  analysis_method = "LM"
)

# === 中介效应分析 ===
# 测试: 宿主SNP → 宿主基因表达 → 微生物丰度
library(mediation)

# 模型1: SNP → 基因表达(中介变量)
mediator_model <- lm(gene_expression ~ SNP + age + sex, data = combined_data)

# 模型2: SNP + 基因表达 → 微生物丰度(结局)
outcome_model <- lm(microbe_abundance ~ SNP + gene_expression + age + sex, 
                     data = combined_data)

# 中介效应
med_result <- mediate(mediator_model, outcome_model,
                       treat = "SNP", mediator = "gene_expression",
                       boot = TRUE, sims = 1000)
summary(med_result)
# ACME: 平均因果中介效应
# ADE: 平均直接效应
# Total Effect: 总效应


实战命令

# === mbQTL分析完整流程 ===
# 1. 基因型QC
plink --bfile raw_genotypes --mind 0.05 --geno 0.05 --maf 0.05 \
  --hwe 1e-6 --make-bed --out qc_genotypes
plink --bfile qc_genotypes --indep-pairwise 50 5 0.2 --out pruned
plink --bfile qc_genotypes --pca 10 --out pca

# 2. 微生物组数据准备 (QIIME2 → CLR)
qiime diversity core-metrics --i-table table.qza --p-sampling-depth 10000 --output-dir diversity/

# 3. 关联分析
Rscript run_mbqtl.R --geno qc_genotypes --micro microbiome_clr.csv \
  --covariates covariates.csv --output mbqtl_results/

# 4. 孟德尔随机化
Rscript run_mr.R --exposure mbqtl_instruments.csv \
  --outcome disease_gwas.csv --output mr_results/

面试常问点

Q1:什么是mbQTL?与eQTL有什么类比?

A: mbQTL(microbiome Quantitative Trait Loci)是影响肠道微生物丰度/功能的宿主基因组变异位点。与eQTL类比:eQTL是SNP影响基因表达,mbQTL是SNP影响微生物丰度。方法类似——将SNP基因型作为自变量,微生物丰度(CLR转换后)作为因变量,做大规模关联分析。关键差异是微生物表型是组成性数据,需要特殊处理。

Q2:微生物组遗传度的估计方法有哪些?

A: (1) 双生子ACE模型:比较同卵(MZ)和异卵(DZ)双胞胎的微生物组相似度。MZ相似度 > DZ → 有遗传成分。h2 = 2(rMZ - rDZ)。(2) SNP-based遗传度(GREML):用无关个体的全基因组SNP估计窄义遗传度(GCTA-GREML)。(3) 家系研究:利用亲属关系矩阵。研究表明大多数微生物属的遗传度在5-35%之间,说明环境因素(饮食)仍是主导。

Q3:mbQTL研究面临的统计学挑战?

A: (1) 多重检验负担极重:100万SNP × 200个菌属 = 2亿次检验,传统Bonferroni过于保守;(2) 组成性数据:微生物相对丰度是受约束的,需要CLR/ILR转换;(3) 效应量小:单个SNP通常只解释<1%的丰度变异;(4) 混杂因素多:饮食、药物、地理位置都影响微生物组,需要在模型中充分校正;(5) 样本量要求大:有效的mbQTL至少需要>1000人。

Q4:已知的宿主基因-微生物关联有哪些?

A: 经典示例:(1) LCT(乳糖酶基因)rs4988235:影响Bifidobacterium丰度——乳糖酶持久型个体有更少的双歧杆菌(因为乳糖已被宿主消化);(2) FUT2(分泌型基因)rs601338:非分泌型个体的Bifidobacterium减少(缺少HMO底物);(3) ABO(血型):影响Dorea和Ruminococcus等;(4) HLA区域:广泛影响免疫相关菌群。这些关联已在多个大队列中复现。

Q5:孟德尔随机化在微生物组研究中的应用和限制?

A: 应用:用mbQTL SNP作为工具变量(IV),推断微生物→疾病或疾病→微生物的因果方向。优势是利用基因变异的随机分配性克服混杂偏倚。限制:(1) 工具变量强度弱(单个mbQTL效应小)导致弱IV偏倚;(2) 水平多效性——SNP可能通过其他路径影响结局;(3) mbQTL尚不充分——许多微生物缺少合格的工具变量;(4) 需要假设遗传效应是线性的。


易错点

1. 微生物表型未做组成性数据处理

错误: 直接用相对丰度做线性回归。 正确做法: 使用CLR/ILR转换将组成性数据映射到欧氏空间后再做关联分析。

2. 群体分层未校正

错误: 不同祖源的个体混合分析。 正确做法: 在关联模型中纳入基因组PCA前10-20个主成分作为协变量,或使用混合线性模型(MLM)。

3. 批次效应与遗传效应混淆

错误: 不同采样批次的样本恰好有不同的遗传背景。 正确做法: 在模型中纳入批次变量,或使用ComBat等方法校正微生物组批次效应。确保批次设计与遗传背景不完全混淆。

4. MR中使用弱工具变量

错误: 使用F-statistic < 10的SNP作为工具变量。 正确做法: 确保工具变量足够强(F > 10)。如果单个SNP太弱,可以构建多SNP遗传风险评分(GRS)作为工具变量。

5. 忽视时间和饮食的影响

错误: 一次采样就做mbQTL分析。 正确做法: 微生物组有时间波动性。建议多时间点采样取平均/中位数作为稳定表型,或在分析中考虑时间变异。饮食信息作为协变量纳入。


补充知识

大型mbQTL队列研究

研究样本量主要发现
LifeLines-DEEP1,135首批大规模mbQTL
TwinsUK3,666双胞胎微生物遗传度
MiBioGen18,340最大mbQTL meta-analysis
Dutch Microbiome Project8,208综合环境-遗传互作

相关工具

  • GCTA-GREML: SNP-based遗传度估计
  • BOLT-LMM: 大规模混合线性模型GWAS
  • TwoSampleMR: R包,双样本孟德尔随机化
  • Maaslin2: 微生物组多变量关联分析
  • LDSC: 连锁不平衡评分回归(遗传相关性)