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变异确认的核心价值在于这几点:

  1. 对抗测序噪声的最终防线——测序错误、PCR重复、比对错误,自动化流程很难完美过滤
  2. 发现隐蔽结构变异——有的SV检测算法灵敏度不够,IGV的split reads模式能暴露出来
  3. 判断变异类型特征——同源重组、链偏好、碱基质量变异模式,只有肉眼能看到
  4. 跨样本验证——家系分析中,同一个位点在不同样本中的表现,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变异确认标准流程 ① 筛选待确认变异位点 ② 加载BAM + BCF文件到IGV ③ 观察reads特征:链偏好、比对质量、深度 ④ 检查等位基因频率 + 偏倚指标 ⑤ 输出确认/排除结论 常见输入文件: • BAM (比对的测序reads) • BCF/VCF (候选变异) • BAI/CSI (BAM索引) 核心检查项: • 比对质量 (MAPQ >= 20) • 链偏好 (Fisher test) • 支持读数 (AD >= 3)

从图中可以看出,标准流程是一个五步走的过程。后面几章我会逐一展开每个步骤的具体操作和判读技巧。不过这里先说一条铁律:流程不走回头路。每步都要记录你的判断依据,否则排查时根本不知道当时的结论怎么来的。

实践建议:我一般在接项目时会建一个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会卡。