GWAS与eQTL共定位分析实战:从显著位点到候选基因筛选

发布时间:2026/10/5 14:53:48
GWAS与eQTL共定位分析实战:从显著位点到候选基因筛选
GWAS结果交到我手上时第一反应往往不是兴奋而是头疼。曼哈顿图上那几个高耸的峰确实漂亮可过了显著性阈值之后问题才真正开始大量位点落在基因间区周边注释不出来功能统计结果和疾病机制之间有明显的断层。做了几年疾病遗传学分析之后我越来越倾向于一个做法——把GWAS结果和eQTL数据放到一起交叉验证让统计信号回归到表达调控的维度上重新审视。这套流程如今已经是我做后续基因筛选的标配也是我把一堆“可疑关联”转变成“值得做实验验证靶点”的关键环节。这篇文章会把我自己常用的分析路径、每一步的原理、参数选择以及踩过的坑完整写一遍。内容面向正在做疾病遗传学课题的学生、刚进入生信分析方向的研究人员以及手头握着显著位点却不知道怎么往下挖的同行。我尽量不堆术语但涉及的关键概念不会回避因为理解它们才能做出正确判断。1. 先搞清楚GWAS信号为什么不能直接当作答案1.1 连锁不平衡决定了你看到的不一定是真凶理解GWAS和eQTL为什么要结合先要弄清楚一个现实——GWAS筛出来的“显著位点”不等于“致病变异”。这里面的核心障碍在于连锁不平衡Linkage DisequilibriumLD。人群中每个位点的等位基因并不是独立组合的相邻变异倾向于以单倍型模块的形式整体遗传下来。GWAS检测到的统计关联信号完全可能落在某个真正的功能变异的“邻居”上因为距离近、重组率低这个邻居与真正的因果变异长期绑定于是也表现出显著的疾病关联。这就是为什么很多显著SNP位于基因间区看起来不痛不痒注释工具全都哑火。这种情况下的GWAS结果是一张嫌疑地图指向一个区域而不是一个基因。区域里可能横跨三个基因也可能连着一个远端增强子谁在这段区域里真正扮演了角色统计数字本身不会告诉你。正因如此后续筛选必须要引入其他维度的功能证据。1.2 统计关联不携带机制方向复杂疾病还有一个让新手头疼的特性多基因微效。大多数位点的效应量都非常小单个SNP对疾病的贡献可能只有万分之几的增长风险。这种弱效应叠加起来GWAS的统计显著性虽然可以轻松越过阈值但对功能机制的指向性很差。一个位于增强子区域的SNP与2型糖尿病显著关联它到底是通过上调某个远端基因的表达来起效还是影响了一个组织特异性转录因子的结合GWAS数据本身回答不了这个问题。eQTL则提供了另一种视角如果我们能证明这个SNP在相关组织中显著改变某个基因的表达量那么就能建立起“变异→表达改变→疾病风险”的推理链条。这就是两个方法天然互补的根源。2. GWAS与eQTL结合的三种主流策略2.1 直接注释法最直观但最粗糙的初筛最省事的第一步是把GWAS显著位点直接注释到基因上然后查这些基因里有没有eQTL证据。操作层面就是用ANNOVAR或者SnpEff把显著性SNP映射到RefSeq或GENCODE注释的基因组特征上看看哪些位点落在启动子、增强子、外显子或者UTR区域。这种做法的局限性在于太依赖位点与基因的位置重合而实际上人类基因组中大量调控信号是通过远距离染色质相互作用实现的。一个增强子可能调控几十万碱基之外的基因直接注释法会系统性地漏掉这类调控关系。所以我通常只把它当作初筛它会给你一批候选但绝不构成“筛选完成”的依据。2.2 共定位分析检验两个关联信号是否共享因果变异共定位Colocalization是我个人最常用、也最信赖的方法。它的核心问题是某个区域里GWAS疾病关联信号和eQTL表达关联信号它们的驱动变异是否为同一个或同一组因果变异这个判断不能只看“都很显著”因为两个信号可能只是碰巧在相邻区域出现。共定位分析会用贝叶斯框架计算多个假设的后验概率比如“区域里没有关联信号”、“GWAS有信号但eQTL没有”、“eQTL有信号但GWAS没有”、“两个信号共享同一个因果变异”等。常用的实现工具是coloc包最新版本支持多SNP的精细映射输入对复杂情况的判别力比以前好很多。一旦共定位分析支持“共享因果变异”的假设这就成了一个强有力的线索这个SNP通过调控特定基因表达水平进而参与了疾病风险。这不是证明因果但已经是非常可信的优先级排序依据。2.3 基于组织特异性的eQTL分层筛选不同的eQTL数据集组织来源不同结论可能完全不一样。血液eQTL检测到的调控关系在肝脏组织里可能根本不成立。做疾病相关基因筛选的时候组织特异性不是一个加分项而是一个必需项。比如研究阿尔茨海默病我会优先使用脑组织不同亚区的eQTL数据研究非酒精性脂肪肝肝脏组织的eQTL是首选研究类风湿关节炎考虑的是外周血单个核细胞PBMC或者滑膜组织的数据。GTEx数据库为几十个组织提供了eQTL结果是目前覆盖面最广的公开资源。如果你研究的疾病有对应的组织来源eQTL数据优先用它别怕麻烦。用错组织类别会让后面的所有结论都建立在错误的调控关系上这是我这几年看到最常见的错误。3. 实操流程全记录从拿到GWAS数据到输出候选基因3.1 数据准备与质量控制完整流程的第一步永远是数据清洗。GWAS的原始结果通常以SumStatssummary statistics格式提供里面包括SNP标识、效应大小、效应等位基因、等位基因频率、标准误、P值等字段。先把数据导入R或者Python环境检查基因型是否已经统一到同一参考基因组版本检查效应等位基因是否与参考面板如1000 Genomes或HRC方向一致。不一致的位点剔除或翻转补链这是整个流程里最琐碎却最关键的环节因为后续所有的LD计算、共定位分析都依赖等位基因方向的一致性。方向错了后面全是白算。另一个高频问题是重复SNP。同一个rs号可能出现多次建议保留P值最小的记录删除其余。同时要注意疾病数据集的样本量是否充足是否能计算出稳定的LD矩阵。如果原始GWAS没有提供LD信息通常参考匹配人群的参考面板来补比如欧洲人群用1000 Genomes EUR样本东亚人群用EAS样本。人群不匹配LD结构会是错的共定位结果也就无从谈起。3.2 区域LD计算与候选区间界定拿到清洗后GWAS数据下一步是圈定每个信号区间。常用做法是取每个显著位点上下游一定范围比如±500kb然后在参考面板中计算该区域内所有SNP与显著SNP的r²把高LDr²0.6或0.8的位点一并纳入候选区间。这么做的原因很直接真正的因果变异未必是峰顶那个SNP可能是在LD区块内与峰顶紧密连锁的另一个位点。如果把范围圈窄了可能漏掉真正的功能变异圈太宽了后面每个区域做共定位时又混入太多无关SNP影响计算效率和结果可信度。这一步我习惯借助PLINK的--ld功能或LDBlockShow这类可视化工具输出区域LD热图。做之前务必确认参考面板的人群和你GWAS样本的人群尽量一致否则r²估计就有偏。LD区块圈完之后通常可以得到几十到几百个基因座取决于疾病复杂度和样本量。3.3 eQTL数据获取与格式整理eQTL数据源的选择取决于你研究的疾病类型。大多数情况下GTEx足够用下载相应组织的全部eQTL结果通常一个组织就有几百MB到几个GB的数据量。拿到数据之后要做几件常规但必不可少的事保留Variant ID、Gene Symbol或Ensembl Gene ID、效应等位基因、效应值通常是normalized effect size、标准误和P值。注意GTEx的效应等位基因方向定义与你的GWAS summary statistics可能不一致合并前按rs号加上等位基因信息做校正确保两套数据的效应等位基因指向同一个等位基因。另一个容易被忽略的资源是eQTLGen联盟它提供了大规模外周血eQTL数据样本量远超GTEx的血液组。对于没有组织特异性eQTL资源的研究场景eQTLGen是个很好的替代。不过要注意大样本eQTL的P值极低阈值筛选要重新设定不能照搬GTEx的推荐阈值。3.4 coloc共定位分析实战进入核心环节。我常用的工具是R包coloc其最新版本支持susie回归的精细映射结果输入相比传统方法更稳健特别适合多信号共享区域的场景。运行的基本流程是提取某个GWAS候选区间内所有SNP的效应值、方差、等位基因频率同时提取相同区间内eQTL数据中目标基因的对应统计量然后调用coloc.abf()或coloc.susie()进行贝叶斯共定位计算。输出结果里你会看到五个后验概率PP.H0到PP.H4其中PP.H4代表两个信号共享同一因果变异的概率这是我最关注的指标。实操中我对PP.H4大于0.75的基因给予较高优先级0.5到0.75之间的列为候选低于0.5的基本放弃。阈值不是绝对的但可以帮助你把有限的下游验证精力放在最有可能成功的地方。别过度解读那些处于0.3~0.5灰色地带的信号除非你有很强的生物学直觉支撑否则它们通常是噪音。3.5 输出候选基因清单与功能注释共定位结果往往会在多个组织、多个基因之间产生组合。我习惯把结果统一整理成一张候选基因表字段包括基因名、所在染色体区间、共定位PP.H4值、对应组织和eQTL效应方向。接下来再做一轮功能注释通常使用FUMA或WebGestalt检查这些基因富集在哪些通路中是否已知与目标疾病相关的生物学过程存在重叠。这一步不能省略。GWAS和eQTL结合的终极目的不是产出一份流水账而是挑出那些在生物学上站得住脚的基因给你后续的细胞实验、动物模型甚至人群验证指明方向。如果一个基因既有共定位证据又富集在与疾病高度相关的通路上那它的优先级会远高于只有统计共定位但功能完全未知的基因。4. 工具选型与参数细节4.1 主流通用工具对比项目流程中会用到很多工具这里把每个环节最常用、我实际用顺手的方案列出来环节推荐工具用途注意事项GWAS数据质控PLINK 1.9/2.0、R按单位点处理效应链方向、重复标记注意参考基因组版本统一函数注释ANNOVAR、SnpEffSNP映射到基因区域比较占用时间建议用dbSNP版本注释LD计算PLINK、LDBlockShow、LDlink生成区域LD矩阵和热图必须有匹配人群样本的参考面板共定位分析coloc、snapATAC、moloc贝叶斯共定位coloc.susie更适用于多信号情况富集分析FUMA、WebGestalt、clusterProfiler候选基因功能注释注意背景基因集的匹配4.2 贝叶斯先验参数设定coloc方法的先验参数设置经常被忽略但影响极大。默认的p11e-4某SNP与GWAS关联的先验概率、p21e-4与eQTL关联的先验概率、p121e-5与两者都关联的先验概率是开发者基于千万级位点的典型情况给出的默认值。如果你的研究区域只有几百个SNP且你对某个基因有非常强的先验证据可以适当调整p12但需要明确记录并说明理由。我个人的习惯是保持默认先验先把初筛做出来再在灵敏度分析里检查不同p12值下PP.H4的稳定性。如果一个基因的PP.H4在p12跨数量级变化时剧烈波动说明这个信号本身不稳健哪怕绝对值很高也要谨慎对待。4.3 组织选择的决定逻辑组织特异性在前文已经强调过。实际操作中同一基因在不同组织的eQTL结果经常互相矛盾血液中某个SNP可能显著增加基因A的表达但在肝脏组织却完全没有效应。这时候怎么选我采用两条硬标准一是优先选择与疾病病理机制直接相关的组织比如神经退行性疾病选脑区代谢性疾病选肝脏或脂肪二是当没有直接相关组织数据时选与病理过程最接近的替代组织比如用PBMC替代免疫相关组织的真实炎症状态。在论文方法部分要如实写明你的组织选择逻辑和局限性审稿人通常很在意这一点。5. 实操中常见的问题与排查思路5.1 效应等位基因方向不一致所有人在合并GWAS和eQTL数据时几乎都会踩一次这个坑。两套数据来自不同平台、不同整理流程效应等位基因的定义可能完全相反。如果A数据里某个SNP的risk allele是C而eQTL数据里effect allele是T未校正就合并后面的共定位结果全部错误。排查方法很简单每次合并后专门写一段校验代码看合并数据中effect allele的频率是否与参考面板的等位基因频率分布一致筛出那些明显不匹配的位点。我见过有人在共定位结果完成之后才发现等位基因方向错了最后一切都要重算非常浪费时间。建议在流程刚开始就建立一个统一的等位基因标准化模块所有数据在进入分析前都走一遍。5.2 共定位结果PP.H4极低却信号显著这个情况不少见某个区域GWAS和eQTL信号各自都非常显著可共定位算出来PP.H4不到0.1。刚开始我会困惑后来想明白了——两个信号确实显著但它们驱动关联的因果变异根本不同只是碰巧都落在了同一个高LD区域。换句话说显著不代表“同一个位点”。出现这种情况时不必强行解释也不要尝试通过调整区间大小来“凑”出高PP.H4那只是数据按摩没有任何科学意义。正确的做法是如实报告该区域内GWAS信号与eQTL调控关系可能由不同遗传变异驱动然后调整区间或换一个基因继续看。5.3 区域范围选择不当导致信号混淆候选区间范围选得过大会把相邻但独立的关联信号混在一起分析共定位结果会被稀释选得过小可能丢失真正的因果位点。我的经验是先看LD热图确定信号的LD block边界再决定区间范围而不是机械地统一用±500kb。如果GWAS数据来自最新的大规模样本信号区域通常会有多个独立的association peak。这种情况建议用条件分析或GCTA-coJo做条件关联检验把区域内的次级信号一个个拆出来再分别做共定位。单纯把所有信号混在一起“合并火并”出来的结果会让因果变异识别失真注定不会好看。5.4 eQTL数据的多重检验问题eQTL数据集本身经过大规模的统计检验我们在做多个基因、多个区域的共定位时会有多重假设检验的问题。共定位分析本身不直接输出校正后的P值所以我会在候选基因层面做额外的FDR控制比如对多个基因的PP.H4换算成q值然后统一设定一个阈值。有一种做法是只报告“探索性发现”不贸然下结论。如果候选基因数量太多更是要冷静。GWAS与eQTL结合的价值在于筛选优先级而不是批量产出“致病基因”。最终能在下游实验里被验证出来的往往是少数经得起层层筛选的信号。5.5 计算资源与效率瓶颈共定位分析在几兆级别的位点数下运算还好但如果每个区域包含数万个SNP并且用了susie精细映射计算量会成倍上升。实际项目中我通常会在一个60核的服务器上并行跑所有区域的共定位每个区域一个任务运行时间从几十分钟到几个小时不等。对于没有服务器资源的朋友建议对每个区域先做一次基于最显著SNP的快速共定位把明显不行的先淘汰然后再对剩下的少量区域做精细映射级别的计算效率会高很多。6. 结果解读与下游验证思路6.1 共定位阳性结果的生物学解释当一个基因在目标组织中与GWAS信号共定位成功最直接的解读是这个区域的遗传变异可能通过调控该基因的表达水平来影响疾病风险。效应方向要结合eQTL数据中的beta方向和GWAS中risk allele的方向来判断如果risk allele同时导致基因表达上调那提示该基因高表达可能增加疾病风险如果risk allele导致表达下调提示低表达可能是危险因素。这些结论都需要小心措辞不是定论但是很有价值的假说。伊藤这类思路给了我不少可以拿去设计实验的线索比如在细胞模型中敲低或过表达目标基因观察对疾病相关表型的影响再用CRISPR手段在患者来源的细胞中定点编辑相关的eQTL位点直接验证因果关系。6.2 多组织多基因结果的优先级排序多组织分析会产生大量组合不能一股脑全当成“发现”。我习惯整理一个表格列出所有“位点—基因—组织”三元组按PP.H4降序排列再手动检查那些高PP.H4的组合是否有合理的生物学解释。一个常被忽略的做法是检查目标基因在相关组织中的基础表达水平。如果一个基因在目标组织里几乎不表达那它在eQTL中检测到强烈调控效应的可信度就值得怀疑。结合GTEx的RPKM/TPM数据快速过滤可以筛掉不少“假性”共定位信号。6.3 从候选到实验验证的衔接整个生信流程只能给你一份优先级列表真正的验证还是要走湿实验。我在实际操作中的体会是越早和做细胞实验的同事沟通越好因为生信筛选的许多假设细节比如哪个细胞系更合适、哪个诱导条件能模拟体内状态需要实验端的反馈才能调整。还有一种很有用的验证思路是孟德尔随机化用eQTL效应作为工具变量检验基因表达水平与疾病风险之间的因果关联。虽然不能完全替代实验验证但可以作为优先级排序的补充证据尤其是那些很难在体外模拟的大组织样本。最后说几句实际操作体会把GWAS和eQTL结合起来筛选疾病相关基因本质上是在做“证据交叉”。统计学信号告诉你“这里可能会有事”eQTL告诉你“基因表达在这条通路里可能真的被改变了”两者重叠的部分才值得我们投入后续实验资源。这几年走下来我最大的感受是这个分析流程的价值不在于帮你找出“正确答案”而在于帮你在海量的弱信号中果断砍掉大部分不值得做的候选把时间和经费留给最有希望的少数。数据准备阶段花的时间一点不冤。等位基因方向校验、LD参考面板的选择、组织特异性的确认这些琐碎步骤决定了后面共定位结果的可靠性。它们不产生令人兴奋的数字但没有它们的严谨执行后面所有激动人心的结果都不可信。如果你是刚开始尝试这个组合分析建议不要一上来就追求跑通“整条流水线”。先选一个你熟悉的疾病手头有一批已发表的GWAS数据然后在GTEx里挑一个相关性最强的组织用coloc跑一两个区域找感觉。等吃透了单个区域的细节再扩展到全局扫描。慢即是快尤其是这类牵涉多个数据源、多个文件格式、多种统计假设的任务尽早建立自己的标准化流程每个分析都用同一套代码同一套校验规则比急着产出结果重要得多。