参考基因组选择与索引构建

做变异检测,第一步往往不是跑软件,而是挑基因组。你可能觉得“用hg38不就完了?”嗯,没那么简单。我亲手栽过这个坑——用错版本,结果一整个批次都重跑,浪费了三天。今天咱们就来聊聊参考基因组怎么选、索引怎么建,把这块地基打牢。

参考版本:hg19 vs hg38 vs T2T

目前主流的人类参考基因组有三个版本:

版本 发布年份 大小 特点
hg19 (GRCh37) 2009 ~3.1 Gb 大量经典数据库(dbSNP 150以前)基于此构建
hg38 (GRCh38) 2013 ~3.2 Gb 修正了hg19的组装错误,包含新参考序列(如ALT contigs)
T2T-CHM13 2022 ~3.05 Gb 完整无gap的端粒到端粒组装,补全了所有着丝粒区域

我自己的习惯是:

  • 做常规WGS/WES分析,优先hg38。为什么?因为hg19在着丝粒、端粒和某些复杂区段存在系统性拼接错误,hg38修复了这些问题;
  • 如果项目需要跟已有的大量hg19数据做联合分析(比如千人基因组计划、ClinVar早期版本),那就只能选hg19,但要做好坐标转换的心理准备;
  • T2T目前还比较新,很多工具对它的支持不够成熟。我建议只在做结构变异、着丝粒区域变异或者新参考评估时使用。
版本混用是灾难 我曾经接手过一个项目,测序数据是hg19的bam,但后续分析却用了hg38参考质控。结果30%的变异位点坐标对不上,最后不得不全部重新比对。记住:上游比对了哪个版本,下游就必须用同一个版本。

索引构建:bwa index + samtools faidx

选好参考后,索引构建有两个必做步骤。

1. bwa index — 比对用的FM-index

BWA(Burrows-Wheeler Aligner)需要为参考基因组构建FM-index,才能做快速比对。命令很简单:

bwa index -a bwtsw hg38.fa

参数说明:

  • -a bwtsw:对于大型基因组(比如人类),必须用bwtsw算法,否则index会出错;对细菌等小基因组用is算法更快。
  • 输出文件:hg38.fa.amb, .ann, .bwt, .pac, .sa 共5个文件,缺一不可。

时间参考:一台16核服务器,hg38大约需要3-4小时。我建议你把这一步放在每天晚上,第二天醒来就建好了。

2. samtools faidx — FASTA索引

很多工具(比如samtools, bcftools, GATK)需要快速随机读取参考序列的某一段,这就需要samtools faidx生成的.fai和.gzi文件:

samtools faidx hg38.fa

输出:hg38.fa.fai(文本格式的行索引)和hg38.fa.gzi(二进制压缩索引)。

注意:如果你同时使用了bwa index和samtools faidx,两个索引完全独立。不要只建其中一个——我在项目中见过有人只跑了bwa index,结果GATK报错说找不到.fai,折腾半天。

索引构建的常见错误

  • 参考文件路径含空格或中文:bwa index会失败,而且报错信息很隐晦。
  • 内存不足:bwa index对hg38大约需要15-20GB RAM。如果机器不够,可以加-t多线程,但内存还是会吃紧。
  • 硬链接导致索引损坏:如果你在共享文件系统上做了硬链接,bwa index可能写入时产生文件锁冲突。
我的小习惯 每次下载新的参考基因组后,我都会先运行samtools faidx和bwa index,然后写一个简单的脚本验证索引完整性:比如用samtools提取chr1:1000-2000,看返回的序列是否合理。花两分钟,能省后面的大麻烦。

SVG:参考选择与索引构建流程

参考基因组选择与索引构建流程 选择参考版本 研究用途 / 多库混用 临床 / 常规WGS/WES 下载参考FASTA bwa index samtools faidx ✓ 索引就绪 两者缺一不可 bwa index用于比对 samtools faidx用于随机读取

索引文件的存放与复用

索引文件创建后可以反复使用,不需要每次分析都重建。我习惯把参考和索引放在一个专用目录:

/ref/
├── hg38.fa
├── hg38.fa.fai
├── hg38.fa.gzi
├── hg38.fa.amb
├── hg38.fa.ann
├── hg38.fa.bwt
├── hg38.fa.pac
├── hg38.fa.sa
├── hg38.dict   (可选,由GATK的CreateSequenceDictionary产生)
└── hg38.fa.alt (如果包含ALT contigs)

注意两点:

  • 不要把原始FASTA放在网络挂载的NAS上然后直接建索引,网络延迟会导致bwa index不稳定;
  • 如果你需要切换参考版本(比如hg19→hg38),不要试图复用索引,必须重新建。
一句话总结: 选对版本,建好双索引,验证一次,以后随便用。这就是让你的变异检测管道站住脚的第一步。