性能对比#
本页是 BaizeGen 与对应标准工具在相同输入数据上的实测墙钟时间。BaizeGen 的全部数字都在同一台机器上测得(机器 A:1 × RTX 5090 32 GB,AMD Threadripper 3960X),-t 48,每项运行一次,输入数据事先拷到本地 NVMe 硬盘(拷贝不计时)。标准工具的数字是此前在其他机器上实测的,见下方测试环境。
除特别注明外,双方的输出完全一致:BAM 逐条记录相同,VCF / gVCF 除记录命令行的表头行外逐行相同。图中每组单独一个刻度,条形旁标出耗时和相对标准工具的倍数。
关于对照方式
- 标准工具按通常的方式运行:bwa 用多线程;GATK 各工具以单个进程运行。GATK HaplotypeCaller 的 VCF 模式在整个运行中共用一个随机数生成器(下采样和 QD 抖动),拆成多个进程并行会改变输出,因此不能拆分。
- 标准工具与 BaizeGen 不在同一台机器上,耗时又受硬件、数据和存储影响很大,以下数据仅供参考。
测试环境#
| 代号 | CPU | GPU | 运行内容 |
|---|---|---|---|
| A | AMD Threadripper 3960X(24 核 48 线程) | 1 × RTX 5090(32 GB) | BaizeGen 的全部测试 |
| B | AMD Ryzen 9 9950X(16 核 32 线程) | 不使用 | bwa |
| C | 2 × Intel Xeon Gold 6226R(共 32 核 64 线程) | 不使用 | GATK HaplotypeCaller(人类)、GATK 3 IndelRealigner |
| D | AMD Threadripper 3960X(24 核 48 线程) | 不使用 | 动植物样本的标准流程、Bismark |
| E | AMD Ryzen 9 9950X(16 核 32 线程) | 不使用 | GATK Mutect2、Picard / GATK 质控 |
人类全基因组#
NA12878,30× WGS(6.7 亿条 reads,100 Gbp),参考基因组 hg38。
动植物全流程#
13 个物种的样本(猪、山羊、棉花、油菜、鸡、四倍体鲫鱼、六倍体鲫鱼、梨、水稻、鸭、玉米、大豆、小麦),每个样本 0.4–4.8 亿条 reads。
- 标准流程:bwa 0.7.17 + samtools sort + Picard MarkDuplicates + GATK 4.6.2 HaplotypeCaller(分别输出 gVCF 和 VCF)。
- BaizeGen:
fastq2bam --engine bwa-gpu+haplotyper --device gpu(分别加--emit-mode gvcf和不加)。
13 个样本的 gVCF 和 VCF 都与 GATK 相同(除记录命令行的表头行外逐行相同)。合计耗时:FASTQ → gVCF 267 倍(各样本 115–413 倍),FASTQ → VCF 254 倍(各样本 75–387 倍)。
标准流程在机器 D 上运行(与机器 A 同型号 CPU):bwa 使用 40 线程,GATK 各步骤在限制为 4 个 CPU 的容器中运行;HaplotypeCaller 的 VCF 模式是多个样本同时运行的,每个样本 4 个 CPU。
各样本的耗时(时:分:秒):
| 样本 | 倍性 | reads(百万) | FASTQ → gVCF 标准流程 | BaizeGen | 倍数 | FASTQ → VCF 标准流程 | BaizeGen | 倍数 |
|---|---|---|---|---|---|---|---|---|
| 猪 | 2 | 408 | 44:46:36 | 7:42 | 349 倍 | 38:50:45 | 7:28 | 312 倍 |
| 山羊 | 2 | 476 | 29:45:28 | 6:39 | 268 倍 | 24:38:28 | 5:59 | 247 倍 |
| 棉花 | 2 | 96 | 10:00:17 | 2:20 | 258 倍 | 8:52:08 | 2:01 | 265 倍 |
| 油菜 | 2 | 40 | 4:09:23 | 1:58 | 127 倍 | 3:28:22 | 1:53 | 111 倍 |
| 鸡 | 2 | 58 | 7:31:45 | 1:29 | 305 倍 | 6:41:10 | 1:13 | 331 倍 |
| 四倍体鲫鱼 | 4 | 200 | 44:22:41 | 6:27 | 413 倍 | 39:45:50 | 6:10 | 387 倍 |
| 六倍体鲫鱼 | 6 | 309 | 58:54:11 | 10:41 | 331 倍 | 53:32:05 | 9:34 | 336 倍 |
| 梨 | 2 | 67 | 14:39:53 | 3:23 | 261 倍 | 13:57:53 | 3:24 | 247 倍 |
| 水稻 | 2 | 80 | 1:26:56 | 0:45 | 115 倍 | 53:47 | 0:43 | 75 倍 |
| 鸭 | 2 | 74 | 9:41:06 | 1:49 | 319 倍 | 8:00:51 | 1:34 | 308 倍 |
| 玉米 | 2 | 150 | 20:36:05 | 6:41 | 185 倍 | 19:11:29 | 6:31 | 177 倍 |
| 大豆 | 2 | 96 | 7:49:49 | 2:23 | 197 倍 | 6:59:02 | 2:18 | 182 倍 |
| 小麦 | 2 | 366 | 30:20:28 | 11:31 | 158 倍 | 24:28:07 | 10:08 | 145 倍 |
| 合计 | 284:04:38 | 1:03:48 | 267 倍 | 249:19:57 | 58:55 | 254 倍 |
下图以小麦为例(IWGSC RefSeq v2.1,CRR072388,2×150 bp,54.8 Gbp,约 3.8×)分步骤对比:
标准流程在机器 D 上运行,GATK 各步骤在限制为 4 个 CPU 的容器中运行(bwa 使用 40 线程);BaizeGen 在机器 A 上运行(同型号 CPU)。
多样本合并与联合分型#
100 个猪样本的全基因组 gVCF(共 339 GB),用 combinegvcfs --device gpu --genotype-out 一次写出合并后的 gVCF(解压后 4.8 TB)和群体 VCF:
| 步骤 | 输入 | BaizeGen 耗时 | 峰值内存 |
|---|---|---|---|
| 合并 gVCF + 联合分型 | 100 个猪样本全基因组 gVCF,339 GB | 11 分 40 秒 | 25.8 GB |
GATK 没有在这个规模上运行,这一组没有标准工具的对照数字。
其他工具#
FASTQ 压缩#
fqzip(下一个发布包起提供)与 gzip、zstd、Spring 在同一个人类 NovaSeq 全基因组样本上的对比见 FASTQ 无损压缩;这一组的所有程序都在机器 A 上运行。默认级别(参考模式)的文件是 Spring 的 84 %,压缩耗时为 Spring 的 49 %,解压为 41 %。
数据表#
BaizeGen 的数字都在机器 A 上测得;标准工具一栏括号内是运行它的机器。
| 步骤 | 数据 | 标准工具 | BaizeGen CPU 版 | BaizeGen GPU 版 |
|---|---|---|---|---|
| 比对(BaizeGen 含排序、标记重复) | NA12878 30× | bwa 0.7.19:1:49:39(B) | — | 4:41 |
| HaplotypeCaller VCF | NA12878 30× | GATK 4.6.2:12:58:25(C) | — | 1:21 |
| FASTQ → gVCF | 13 个动植物样本 | 284:04:38(D) | — | 1:03:48 |
| FASTQ → VCF | 13 个动植物样本 | 249:19:57(D) | — | 58:55 |
| 比对 + 排序 + 标记重复 | 小麦 3.8× | 4:46:53(D) | — | 7:39 |
| HaplotypeCaller gVCF | 小麦 3.8× | 25:33:35(D) | — | 3:52 |
| HaplotypeCaller VCF | 小麦 3.8× | 19:41:14(D) | — | 2:29 |
| 合并 gVCF + 联合分型 | 100 个猪样本,全基因组 | 未运行 | — | 11:40 |
| Mutect2 | SEQC2 肿瘤–正常,22 号染色体 | GATK 4.6.2:6:05(E) | 0:32.4 | 0:13.4 |
| IndelRealigner | NA12878 30× | GATK 3.8-1:8:41:13,不含 RTC(C) | 7:10 | — |
| 质控指标 | 200 万对 reads | 1:00:55(E) | 0:08.9 | — |
| 甲基化比对 + 去重 + 提取 | 人类 WGBS 3 亿对 | Bismark:9:07:35(D) | — | 30:17 |
时间格式为 时:分:秒 或 分:秒。