一、原理
病毒扩增子测序(ARTIC 网络方案是典型代表)通过多重 PCR 产生数百个重叠扩增子覆盖全基因组。原始 reads 里残留的引物序列、末端低质量碱基,以及引物结合区的突变,都会让下游变异检测和共有序列生成失真。iVar 就是解决这个问题的命令行工具包。它专门为病毒扩增子测序数据设计,把引物修剪、质量过滤、共有序列生成、变异检出和跨重复样本过滤串成一条标准化管线。
iVar 的核心逻辑基于 BAM 比对文件的后处理:利用 BED 格式的引物坐标文件,在比对好的 reads 上做软裁剪(soft clip),而不是在原始 fastq 层面粗暴截断。这样做的优势是即使 read 起始位置不完全与引物边界对齐,也能准确去除引物序列。和 cutadapt 这种基于序列匹配的修剪方式比,iVar 的坐标驱动修剪在处理扩增子数据时更鲁棒——尤其当引物序列存在错配导致 read 末端不完全匹配预期引物序列时。在病毒溯源中,iVar 处于「湿实验产出 → 测序 → 比对 → iVar → 下游系统发育分析」这个链条的中间环节。产生的共有序列直接喂给 Pangolin 分型、Nextclade 突变谱分析或 MAFFT 多序列比对,继而进入 BEAST 分子钟定年等溯源分析。在 SARS-CoV-2 全球基因组监测中的应用是最为典型的案例。
二、步骤
Step 1 — 序列比对
reads 先比对到参考基因组。Illumina 数据用 BWA-MEM,Nanopore 数据用 minimap2。比对结果经 samtools sort 排序,输出 sorted BAM。
bwa mem -t 8 reference.fa sample_R1.fq sample_R2.fq | samtools sort -o sample.sorted.bam -Step 2 — iVar trim 引物修剪
用 ivar trim 对已比对的 BAM 做引物软裁剪加滑窗质量修剪。需要一个 BED 文件指定每条引物的基因组坐标(6 列:染色体、起始、终止、引物名、pool、方向)。滑窗宽度默认 4 bp,窗口内平均质量低于阈值就截断。修剪后保留长度 ≥ 指定最小值的 read。-e 保留未匹配到引物的 reads,对宏基因组混检场景有用。
ivar trim -i sample.sorted.bam -b primers.bed -p sample.trimmed -q 20 -s 4 -m 30 -eStep 3 — iVar variants 变异检出
将 samtools mpileup 输出管道给 ivar variants,检出 SNV 和 indel。-t 设最低等位基因频率(默认 0.03,即 3%),-q 设纳入计数的最低碱基质量。提供 GFF 注释文件时 iVar 自动翻译密码子变化为氨基酸突变。
samtools mpileup -aa -A -d 0 -B -Q 0 --reference reference.fa sample.trimmed.bam | ivar variants -p sample -q 20 -t 0.03 -r reference.fa -g reference.gffStep 4 — iVar consensus 共有序列生成
同样由 mpileup 管道输入,按频率阈值决定每个位置的共有碱基。-t 0.5 表示频率 ≥50% 的碱基被调用,否则输出简并碱基(IUPAC 码)。-m 10 是调用共有序列的最低深度,低于此深度输出 N。这是整个流程的最终交付产物——一条 FASTA 共有序列,可直接提交 GISAID 或进入下游系统发育分析。
samtools mpileup -aa -A -d 0 -Q 0 sample.trimmed.bam | ivar consensus -p sample.consensus -q 20 -t 0.5 -m 10 -n NStep 5 — iVar filtervariants 跨重复过滤(可选)
有多重复测序时,用 ivar filtervariants 取交集,排除仅出现在单个重复中的假阳性变异。-t 1 要求所有重复都必须检出该变异;降低阈值可放宽过滤条件。输出的过滤后 TSV 仅保留在两个以上重复中一致检出的 iSNV,这是 Grubaugh 等 2019 年验证过的消除测序假阳性的关键策略。
ivar filtervariants -p sample.filtered -t 1 sample_rep1.tsv sample_rep2.tsv sample_rep3.tsv三、参数选择建议
| 参数 | 推荐值 | 说明 |
|---|---|---|
| trim -q(质量阈值) | 20–25 | Illumina 用 20,Nanopore 用 15 |
| trim -s(滑窗宽度) | 4 | 默认值,灵敏度和特异性平衡较好 |
| trim -m(最小 read 长度) | 30–50 | 低于此值直接丢弃 |
| variants -t(最低等位频率) | 0.03(3%) | 亚克隆变异检出建议 0.03;共有序列变异建议 0.1–0.5 |
| consensus -t(共有频率阈值) | 0.5 | 0.5=严格多数;0=直接取最频碱基 |
| consensus -m(最低覆盖深度) | 10 | 低于此深度位置标 N |
| mpileup -d(最大深度) | 0(不限) | 扩增子深度极高,务必设高或不限 |
四、FAQ
iVar 和 cutadapt / Trimmomatic 怎么选?
cutadapt 按引物序列匹配修剪,适合单扩增子或少量引物场景。iVar 用 BED 坐标驱动软裁剪,read 起始有偏移时也能正确修剪,更适合数百条重叠扩增子的病毒全基因组方案。Trimmomatic 做质量修剪可以,但引物去除只能用固定长度硬截(HEADCROP),会损失有效序列。病毒扩增子项目直接选 iVar。
为什么 iVar 变异检出必须走 mpileup 管道而不能直接读 VCF?
iVar 的设计哲学是精简依赖。它寄生在 samtools mpileup 的输出上——mpileup 负责 pileup 计算(深度、碱基频率),iVar 只做阈值过滤和格式整理。这样避免了重新发明轮子,也保证了和 samtools 生态的兼容性。直接给 BAM 就够了,不需要中间 VCF 环节。
consensus -t 设 0 和设 0.5 有什么区别?
-t 0 在每个位置直接取出现频率最高的碱基,结果最「干净」但会掩盖混合感染信号。-t 0.5 是严格多数——如果没有任何碱基超过 50%,该位置输出简并碱基(IUPAC 码),等于在共有序列里保留了混合碱基信息。溯源分析中一般用 -t 0.5 或更严格的 -t 0.9,避免低频率测序错误污染。
参考文献
- Grubaugh ND, Gangavarapu K, Quick J, et al. An amplicon-based sequencing framework for accurately measuring intrahost virus diversity using PrimalSeq and iVar. Genome Biology. 2019;20(1):8. DOI: 10.1186/s13059-018-1618-7
- Quick J, Grubaugh ND, Pullan ST, et al. Multiplex PCR method for MinION and Illumina sequencing of Zika and other virus genomes directly from clinical samples. Nature Protocols. 2017;12(6):1261-1276. DOI: 10.1038/nprot.2017.066
