1. 课程介绍与IGV概述
各位同学好,我是老张。做生物信息学这行十多年了,今天咱们聊聊变异确认这个环节。坦白讲,很多人在跑完WGS/WES流程之后,看着VCF文件里成百上千的变异位点,心里发虚——这到底是真的还是假阳性?
我刚开始做变异分析时,吃过不少亏。有一次一个关键项目,就因为没仔细验证一个SNV,后面实验验证全白做了。从那以后,我养成一个习惯:任何重要变异,必须上IGV亲眼看一遍reads。这次课,就把我这几年的经验跟大家好好说说。
IGV是什么
IGV全称Integrative Genomics Viewer,说白了就是一个基因组数据可视化工具。它能让你直观地看到原始测序reads在参考基因组上的比对情况。
你想想看,VCF文件给你的只是“这儿有个变异”的结论,而IGV展示的是“这个变异长什么样”——它的支持reads数目、比对质量、链偏好、附近有没有其他结构变异,一目了然。
我们看下IGV的核心用途:
- 查看BAM/SAM比对reads——原始信号可视化
- 验证VCF中的变异位点——消除假阳性
- 观察CNV/结构变异断点——比对异常模式识别
- 结合多个数据源——同时查看RNA-seq、ChIP-seq等track
个人经验:我用过至少七八款基因组浏览器,IGV是我唯一一直保留的。原因很简单——它启动快,加载大文件不崩溃。有的浏览器加载一个30G的BAM文件就卡死了,IGV配合索引文件,几秒钟就能定位到目标区域。
为什么用IGV做变异确认
这里我说一个核心观点:自动化变异检测工具(GATK、DeepVariant、Strelka2)已经非常成熟,但它们不是上帝。每个变异位点的打分(QUAL、GQ、AD等)只是统计学上的置信度,并不能保证这个变异真的存在。
我在项目中遇到过不少次这种情况:一个位点Q score超过500,深度50x,所有工具都标记为PASS。但当我用IGV一看——我的天,所谓的“变异”其实是同源区域比对错误,reads的MAPQ都在0-10之间,明显是跨染色体比对上去的杂音。
所以,IGV变异确认的核心价值在于这几点:
- 对抗测序噪声的最终防线——测序错误、PCR重复、比对错误,自动化流程很难完美过滤
- 发现隐蔽结构变异——有的SV检测算法灵敏度不够,IGV的split reads模式能暴露出来
- 判断变异类型特征——同源重组、链偏好、碱基质量变异模式,只有肉眼能看到
- 跨样本验证——家系分析中,同一个位点在不同样本中的表现,IGV可以并行比对
关键认知:自动化流程告诉你“可能有变异”,IGV帮你回答“这个变异靠不靠谱”。我建议把IGV确认作为变异位点进入下游分析前的最后一道质检关卡。
IGV vs 其他基因组浏览器
市面上的基因组浏览器不少,我简单做个对比。这张表是我自己的使用体验总结,不一定全面,但应该能帮大家做选择:
| 浏览器 | 运行方式 | 大文件处理 | 变异浏览体验 | 适合场景 |
|---|---|---|---|---|
| IGV | 桌面应用 + Web | 优秀,支持索引和region加载 | 非常好,交互流畅,支持多种模式 | 个人项目、深入探察、变异确认 |
| UCSC Browser | Web为主 | 一般,小文件或公共数据还行 | 一般,偏向整体基因组浏览 | 公共数据查询、人类基因组注释浏览 |
| IGB (Affymetrix) | 桌面应用 | 中等 | 一般,偏向芯片数据 | 芯片数据/表达量可视化 |
| JBrowse | Web | 优秀,支持索引和range-based | 良好,但不如IGV灵活 | Web平台、多人协作、大型基因组浏览 |
| Samtools tview | 命令行 | 优秀(纯文本模式) | 较差,纯字符界面 | 服务器环境、快速查看、脚本集成 |
说实话,做变异确认这件事,IGV的优势是碾压性的。尤其是你要对比同一区域多个样本的reads分布时,IGV的分屏显示和多track管理,其他工具很难比肩。
需要留意的陷阱:UCSC Browser和JBrowse虽然也有BAM浏览功能,但它们强项是参考基因组注释和公共数据调取。千万别拿它们做大批量变异确认——一是交互不够快,二是加载自定义数据麻烦。我曾经在JBrowse上加载过几个全基因组BAM文件,等它渲染出来,我已经去喝完一杯咖啡了。而IGV加载同样的文件,按region跳转基本是秒开。
IGV变异确认的整体流程
说到这里,我尝试画一张流程图。它展示了IGV确认变异的标准工作流——从拿到VCF文件开始,到最终出可信变异列表结束。这张图后面的课里会反复用到:
从图中可以看出,标准流程是一个五步走的过程。后面几章我会逐一展开每个步骤的具体操作和判读技巧。不过这里先说一条铁律:流程不走回头路。每步都要记录你的判断依据,否则排查时根本不知道当时的结论怎么来的。
实践建议:我一般在接项目时会建一个IGV确认日志的模板,每确认一个位点都贴上截图和文字判断。这个习惯救了我好几次——有次审稿人质疑某个变异,我直接翻出当年的IGV截图和备注,半小时就完成了证据整理。
另外,很多新手问我能不能直接用IGV的Auto-load功能自动加载BCF。我的回答是:可以,但建议你手动确认一下。自动加载有时会因为索引版本不匹配加载错文件。我自己习惯先把BCF转成BCF.gz、生成对应索引,再手动拖入IGV窗口。几秒钟的事,但能避免很多乌龙。
启动IGV的参考命令:
# 检查Java版本(IGV依赖Java 11+)
java -version
# 启动IGV命令行(推荐不低于2.16版本)
java -Xmx8g -jar igv.jar
# 加载外部数据时需准备索引
# 以BAM为例:
samtools index sample.bam
# 以BCF为例:
bcftools index sample.bcf
嗯,这里要注意,内存要足够。我处理全基因组数据时,一般给IGV分8G内存(-Xmx8g),低了加载大BAM会卡。