07 GWAS 入门
全基因组关联分析(GWAS)找的是"哪些基因组位点和某个表型(疾病、身高、药物响应)有统计学关联"。
基本流程
基因型数据(PLINK 格式)+ 表型文件
→ QC(MAF、HWE、缺失率、亲缘关系)
→ 关联检验(线性/逻辑回归,校正 PC)
→ Manhattan plot + QQ plot
→ 显著位点注释
PLINK 2 做关联
# 二分类表型(case/control)
plink2 --bfile cohort \
--pheno phenotype.txt \
--covar covariates.txt \
--glm \
--out gwas_results
# 输出 gwas_results.PHENO1.glm.logistic.hybrid
Manhattan plot
library(qqman)
results <- read.table("gwas_results.PHENO1.glm.logistic.hybrid",
header = TRUE)
manhattan(results, chr = "CHROM", bp = "POS", p = "P", snp = "ID",
suggestiveline = -log10(1e-5), genomewideline = -log10(5e-8))
QQ plot
QQ plot 检查 p 值的整体膨胀(genomic inflation factor λ)。λ > 1.1 说明有群体分层或其他混杂没控制好。
qq(results$P)
常见坑
- 群体分层:不同祖源的人混在一起会产生假关联。用 PCA 的前几个 PC 做协变量
- 多重检验:全基因组显著性阈值是 5×10⁻⁸(Bonferroni 校正 ~1M 独立检验)
- LD 结构:一个显著信号可能对应一整个 LD block 里的几十个 SNP,真正的因果变异需要 fine-mapping
补充几条常见误判:
坑:样本量不足直接跑 GWAS
GWAS 需要大样本量(至少几千,理想几万)才能稳定检测到 OR ~1.1 的弱效应。< 1000 样本跑 GWAS 几乎不可能找到 5e-8 显著位点,先评估 power 再决定要不要做。
坑:不做 HWE 过滤
显著偏离 Hardy-Weinberg 平衡的位点通常是基因型分型错误。case/control 设计中只在 control 样本里检查 HWE(case 因为关联本身可能偏离 HWE)。
坑:QQ plot 严重 inflation 直接发表
λ > 1.05 通常说明群体分层没控制好。多加几个 PC 做协变量,重新跑直到 λ 回归 1.0 附近。
坑:找到一个显著 SNP 就当成 causal variant
一个显著信号可能对应一个 LD block 里的几十个相关 SNP,**真正的 causal 变异需要 fine-mapping(FINEMAP / SUSIE)**或功能验证(eQTL、CRISPR)。
坑:忽略 imputation 质量
INFO score < 0.3 的 imputed 变异不可信。imputation 后必须 --info 0.3 过滤,不然假阳性堆积。
下一步
接着深入:
- 08 临床变异解读与报告 — 找到的显著位点如何翻译成临床意义
横向延伸:
- 06 群体遗传:PCA / 祖源 / LD — GWAS 的群体结构 QC 是 06 章的延伸
- GWAS Catalog — 你找到的显著位点是不是已经被报道过
参考资源
静态文件
离线资料下载
手册 HTML / PDF 已在后台预生成,点击后直接下载网站静态资源。