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-DEEP | 1,135 | 首批大规模mbQTL |
| TwinsUK | 3,666双胞胎 | 微生物遗传度 |
| MiBioGen | 18,340 | 最大mbQTL meta-analysis |
| Dutch Microbiome Project | 8,208 | 综合环境-遗传互作 |
相关工具¶
- GCTA-GREML: SNP-based遗传度估计
- BOLT-LMM: 大规模混合线性模型GWAS
- TwoSampleMR: R包,双样本孟德尔随机化
- Maaslin2: 微生物组多变量关联分析
- LDSC: 连锁不平衡评分回归(遗传相关性)