1 SeqArc: 高效 FASTQ 数据压缩工具简介
1. 简单认识 SeqArc
简单来说,您可以把 SeqArc 看作一款专为 FASTQ 测序数据量身定制的高效压缩打包工具(就像我们平时用来打包文件的 WinRAR 或 ZIP,但它针对基因测序数据做了深度的专项优化,性能要强大得多)。
它主要用来处理哪些数据?
-
二代短读长测序数据:支持主流的短读长平台(如Illumina、MGISEQ)产出的短读长 FASTQ 文件。
-
三代长读长测序数据:针对 Cyclone、PacBio、ONT 等长读长数据优化了压缩策略。
-
支持未压缩的
.fq/.fastq文本格式,以及已经经过 gzip 压缩的.fq.gz/.fastq.gz格式。
它能为大家带来什么便利?它能将原本动辄上百 GB 的庞大测序数据文件大幅 “瘦身”,不仅能为您节省海量的存储空间,还能大幅降低数据传输的带宽与时间成本,同时保证数据的完全无损,解压后与原始文件完全一致。
1.1 核心特色:三种灵活的压缩模式
SeqArc 提供了三种灵活的压缩模式,您可以根据自己的场景自由选择:
-
无参考模式:速度快、即插即用。不需要任何参考基因组文件,拿到数据就能直接压缩,适合快速处理、临时存储的场景。
-
单参考模式:极致高压缩比。如果您知道样本的物种,可以提供对应的参考基因组,SeqArc 会利用参考信息进一步挖掘数据冗余,实现更高的压缩率,适合大规模数据的长期归档。
-
多参考 / 物种识别模式:智能匹配,适合复杂场景。当您有大量混杂物种的测序数据,或者不确定样本的具体物种时,只需要提供提前建好的多参考索引库,SeqArc 会自动识别样本物种,匹配合适的参考基因组进行高压缩比压缩。
2. SeqArc 核心优势与 Benchmark 案例
为了让大家更直观地了解 SeqArc 的优势及资源消耗情况,我们分别针对不同的压缩模式进行了实测案例。
首先,在这里对集群测试环境进行说明。
系统:Ubuntu 22.04.5 LTS (Jammy Jellyfish)
CPU:2个物理处理器,Intel(R) Xeon(R) Gold 6442Y @ 2.60GHz,共96线程
内存:376 GB
存储:lustre共享存储(非SSD)
测试数据:
一共77组FASTQ数据(对于SE测序,1组数据即1个文件;对于PE测序,1组数据即1对文件)。
其中,40组数据来自AVS批次,即AVS-G(中国数字音视频编解码技术标准工作组AVS成立的、我国自主的基因压缩专题组)参考数据集,gz文件大小共1353GB;19组数据来自MGI(华大智造)的补充数据,gz文件大小共1270GB;17组数据来自长读长开发需求,gz文件大小共1047GB。
测试工具:
包含pigz, pbzip2, fqzcomp5, spring, SeqArc-无参, SeqArc-有参, genozip-无参, genozip-有参。
其中,pigz和pbzip2都是压缩率最高的参数。
其中,pigz, pbzip2, fqzcomp5因为只能接受压缩输入和解压输出均为文本文件(.fq),因此这三个工具的参数(尤其是压缩解压速度)无法和其他工具直接比较。spring、SeqArc、genozip的压缩输入、解压输出均为.gz文件。
全部工具的压缩解压线程数均为32。
测试结果:
| 成功数据数 | FASTQ文件大小(GB/gzip) | FASTQ文件大小(GB/文本) | 添加批次 | 测试工具 | comp_size(GB) | 压缩比(较gz) | comp_RealTime(s) | comp_CPUTime(s) | comp_CPUUsage | comp_MaxRAM(GB) | 压缩速度 (以gz为分子) MB/s |
decomp_RealTime(s) | decomp_CPUTime(s) | decomp_CPUUsage | decomp_MaxRAM(GB) | 解压速度 (以gz为分子) MB/s |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 40/40 | 1353 | 5740 | AVS | pigz | 1279 | 1.06 | 31630 | 1010564 | 3206% | 0 | 43.8 | 17234 | 22725 | 160% | 0 | 80.4 |
| 40/40 | 1353 | 5740 | AVS | pbzip2 | 1065 | 1.27 | 11257 | 348128 | 3183% | 0 | 123.1 | 5024 | 145877 | 3100% | 0 | 275.8 |
| 40/40 | 1353 | 5740 | AVS | fqzcomp5 | 804 | 1.68 | 12124 | 182839 | 1225% | 51 | 114.3 | 10493 | 155074 | 1230% | 26 | 132.1 |
| 40/40 | 1353 | 5740 | AVS | spring | 621 | 2.18 | 89181 | 1205580 | 1135% | 101 | 15.5 | 20728 | 264695 | 1261% | 24 | 66.8 |
| 40/40 | 1353 | 5740 | AVS | SeqArc-无参 | 882 | 1.53 | 22551 | 169854 | 689% | 11 | 61.4 | 5586 | 170422 | 2723% | 11 | 248.1 |
| 40/40 | 1353 | 5740 | AVS | SeqArc-有参 | 677 | 2.00 | 24858 | 313152 | 879% | 49 | 55.7 | 5181 | 145579 | 2542% | 17 | 267.5 |
| 38/40 | 1309 | 5603 | AVS | genozip-无参 | 780 | 1.68 | 15277 | 399704 | 2553% | 5 | 87.8 | 8327 | 190236 | 2149% | 4 | 161.0 |
| 35/40 | 1122 | 4987 | AVS | genozip-有参 | 564 | 1.99 | 18831 | 434085 | 2305% | 8.3 | 61.0 | 6526 | 146858 | 2202% | 5 | 176.1 |
| 19/19 | 1270 | 3479 | MGI | pigz | 1176 | 1.08 | 38121 | 1215568 | 3203% | 0 | 34 | 15003 | 18524 | 151% | 0 | 87 |
| 19/19 | 1270 | 3479 | MGI | pbzip2 | 1041 | 1.22 | 8241 | 255271 | 3213% | 0 | 158 | 4351 | 137043 | 3224% | 0 | 299 |
| 19/19 | 1270 | 3479 | MGI | fqzcomp5 | 807 | 1.57 | 8199 | 153715 | 1667% | 57 | 159 | 7063 | 141701 | 1802% | 24 | 184 |
| 19/19 | 1270 | 3479 | MGI | spring | 584 | 2.17 | 68723 | 902070 | 1220% | 50 | 19 | 13774 | 193141 | 1390% | 18 | 94 |
| 19/19 | 1270 | 3479 | MGI | SeqArc-无参 | 835 | 1.52 | 14021 | 124575 | 1295% | 11 | 93 | 4419 | 130302 | 2922% | 21 | 294 |
| 19/19 | 1270 | 3479 | MGI | SeqArc-有参 | 616 | 2.06 | 15035 | 184821 | 1438% | 25 | 86 | 3705 | 102825 | 2727% | 25 | 351 |
| 18/19 | 1269 | 3476 | MGI | genozip-无参 | 859 | 1.48 | 15858 | 204967 | 1196% | 7 | 82 | 5584 | 135517 | 2193% | 4 | 233 |
| 17/19 | 1267 | 3467 | MGI | genozip-有参 | 635 | 1.99 | 19991 | 330603 | 1651% | 11 | 65 | 6665 | 163297 | 2234% | 4 | 195 |
| 17/17 | 1047 | 3028 | 长读长 | pigz | 1026 | 1.02 | 26555 | 797857 | 3143% | 0 | 40 | 12324 | 15081 | 147% | 0 | 87 |
| 17/17 | 1047 | 3028 | 长读长 | pbzip2 | 917 | 1.14 | 6748 | 208478 | 3203% | 0 | 159 | 3503 | 106368 | 3169% | 0 | 306 |
| 17/17 | 1047 | 3028 | 长读长 | fqzcomp5 | 800 | 1.31 | 5875 | 99132 | 1791% | 45 | 182 | 5516 | 97730 | 1845% | 24 | 194 |
| 17/17 | 1047 | 3028 | 长读长 | spring | 811 | 1.29 | 44641 | 357068 | 1069% | 151 | 24 | 17302 | 263912 | 1814% | 155 | 62 |
| 17/17 | 1047 | 3028 | 长读长 | SeqArc-无参 | 801 | 1.31 | 14211 | 115559 | 804% | 11 | 75 | 4048 | 122403 | 3078% | 11 | 265 |
| 17/17 | 1047 | 3028 | 长读长 | SeqArc-有参 | 641 | 1.63 | 27078 | 861566 | 3114% | 43 | 40 | 4113 | 125845 | 3047% | 17 | 261 |
| 17/17 | 1047 | 3028 | 长读长 | genozip-无参 | 811 | 1.29 | 13234 | 159677 | 1150% | 4 | 81 | 4800 | 117293 | 2603% | 4 | 223 |
| 17/17 | 1047 | 3028 | 长读长 | genozip-有参 | 809 | 1.29 | 13201 | 165871 | 1234% | 5 | 81 | 4730 | 119080 | 2665% | 4 | 227 |
2.1 场景一:无参考模式 (No-Reference) 性能表现
无参考模式是即插即用的通用压缩模式,不需要任何参考基因组即可完成压缩,适合快速处理、临时存储的场景。
2.1.1 优势分析
基于大规模真实数据的测试结果,SeqArc 无参考模式在压缩比、处理速度与硬件开销之间实现了极佳的平衡:
1. 优秀的压缩效率:相比于传统的 gzip 压缩,SeqArc 无参考模式能够实现 1.3~1.53 倍的压缩比提升。这意味着,在已经经过 gzip 压缩的基础上,SeqArc 还能进一步将文件体积缩减 23%~35%,有效降低存储与传输成本,压缩效果远超通用压缩工具 pigz、pbzip2。
2. 极致的解压速度:SeqArc 无参考模式拥有行业领先的解压吞吐性能:
* 短读长数据的解压速度可达 **248~294 MB/s**
* 长读长数据的解压速度可达 **265 MB/s**
这个速度远超同类专用压缩工具,比如 Spring 的解压速度仅为 62~94 MB/s,Genozip 的解压速度仅为 161~223 MB/s,能够让您在需要使用数据时,秒级完成解压,几乎不占用等待时间。
3. 极低的硬件门槛:SeqArc 无参考模式的内存峰值仅为 11 GB,远低于同类工具:Spring 无参考模式的内存峰值高达 50~151 GB,fqzcomp 也需要 45~57 GB 的内存。这意味着,即使是普通的办公服务器,也能轻松运行 SeqArc,不需要高端的硬件配置。
2.2 场景二:单参考模式 (Single-Reference) 性能表现
单参考模式利用参考基因组的信息,进一步挖掘测序数据的冗余,实现更高的压缩比,适合大规模数据的长期归档场景。本次测试使用人类标准参考基因组 GRCh38 作为参考,对比了各工具的有参压缩性能。
2.2.1 优势分析
在单参考模式下,SeqArc 展现出了极致的压缩效率,同时依然保持了极高的处理速度:
1. 极致的存储压缩能力:相比于 gzip,SeqArc 单参考模式能够实现 1.63~2.06 倍的压缩比提升:
* 对于短读长数据,压缩比可达 2.0 倍以上,1353GB 的 gz 格式数据,压缩后仅需 677GB,直接将体积缩减一半。
* 对于长读长数据,压缩比也可达 1.63 倍,远超 Genozip 有参模式仅 1.29 倍的压缩比。
这对于动辄 PB 级存储的大型测序队列项目来说,能够节省海量的存储成本。
2. 兼顾压缩率与处理速度:即使在开启参考基因组辅助压缩的情况下,SeqArc 依然保持了极高的处理速度:
* 短读长数据的解压速度可达 **267~351 MB/s**
* 长读长数据的解压速度可达 **261 MB/s**
不会因为追求高压缩比而牺牲处理效率,完全能够满足大规模生产环境的吞吐需求。
3. 合理的资源开销:单参考模式下,SeqArc 的内存峰值仅为 17~49 GB,远低于 Spring 工具 151GB 的内存峰值,常规的服务器配置就能够轻松支撑,不需要额外的硬件升级。
2.3 场景三:多参考模式 (Multi-Reference) 性能表现
本次基准测试主要聚焦于通用的无参与单参压缩场景,测试数据集以人类测序数据为主,暂未覆盖多参考模式的测试场景。
多参考模式作为面向复杂混样测序、未知物种测序的高级功能,我们正在搭建对应的多物种测试数据集,完善标准化的基准测试用例,以充分验证该模式在复杂场景下的性能表现。后续我们会在版本更新中补充该模式的详细性能报告,敬请期待。
3. 工具部署配置建议
基于以上测试,为了确保 SeqArc 能够发挥最佳的压缩与解压性能,我们推荐以下部署配置:
3.1 系统限制设置
重要提示:在使用多参考模式,或者处理大量参考基因组索引时,Linux 系统默认的文件句柄限制可能会不足,导致程序报错。
请在运行前执行以下命令调整系统限制:
#仅对当前会话临时生效,若需要长期生效,需添加至环境变量
ulimit -n 65535
#如果需要设置硬限制,需要root权限
ulimit -Hn 65535
3.2 硬件资源推荐表
| 资源类型 | 推荐配置(生产环境) | 备注说明 |
|---|---|---|
| CPU | 4 Core 及以上 | 依赖多线程并发,核心数越多压缩 / 解压 / 建索引速度越快。 |
| 内存 (RAM) - 无参考 / 单参考压缩 | 16 GB | 常规压缩解压任务的内存需求,可满足大部分场景。 |
| 内存 (RAM) - 参考索引构建 | 40 GB | 构建人类基因组(GRCh38)索引时,峰值内存约 35GB,更大的参考基因组需要成比例增加内存。 |
| 磁盘 I/O | SSD 优先 | 高吞吐的磁盘能够更好地发挥 SeqArc 的速度优势,尤其是处理大规模数据时。 |
| 磁盘空间 - 单参考索引 | 21 GB | 以 GRCh38 为例,二代短读长索引占 14GB,三代长读长索引占 6.1GB,合计约 20.1GB。 |
| 磁盘空间 - 多参考分类数据 | 485 MB | NCBI taxonomy 数据包的占用空间,用于支持物种识别功能。 |
4. 上手指南 (实操场景)
SeqArc 是一款轻量级的命令行工具。您只需要在终端输入简单的指令,它就会默默为您完成繁重的工作。
4.1 准备:建立 “参考字典”(索引构建)
如果您要使用单参考或多参考模式,首先需要为参考基因组构建索引,这就像为压缩工具准备一本 “字典”,让它能够更好地识别和压缩数据。
4.1.1 单参考建库
如果您只需要处理单一物种的数据,只需要为对应的参考基因组构建索引即可:
dcs SeqArc index -r /path/to/ref.fa -o /path/to/output_index_dir
4.1.2 多参考建库
如果您需要处理混杂物种的数据,或者使用物种识别功能,您需要构建多参考的分类索引库:
1. 首先创建一个存放所有参考文件的目录:
mkdir fasidx && cd fasidx
2. 下载并解压 NCBI taxonomy 数据包,用于物种分类:
wget http://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
tar xzf taxdump.tar.gz
3. 将您需要的所有物种的参考基因组 FASTA 文件放入该目录,并解压(如果是压缩包的话):
gunzip ./*fa.gz
4. 先构建物种分类数据库:
dcs SeqArc index -K .
5. 最后,为每个物种的参考基因组分别构建索引:
# 对每个参考基因组执行一次,例如人类参考基因组 hg38.fa
dcs SeqArc index -r hg38.fa
# 对小鼠参考基因组 mm10.fa
dcs SeqArc index -r mm10.fa
# ... 其他物种以此类推
4.2 场景一:把庞大的测序数据 “打包” 变小(压缩)
当您想把庞大的 FASTQ 文件压缩以节省空间时,请根据您的场景选择对应的命令:
4.2.1 无参考模式压缩(即开即用)
如果您没有参考基因组,或者想要快速处理数据,可以使用无参考模式:
dcs SeqArc compress -i /path/to/input.fq.gz -o /path/to/output.arc -t 32
4.2.2 单参考模式压缩(高压缩比)
如果您知道样本的物种,并且已经建好对应的参考索引,可以使用单参考模式获得更高的压缩比:
dcs SeqArc compress -r /path/to/ref_index -i /path/to/input.fq.gz -o /path/to/output.arc -t 32
4.2.3 多参考模式压缩(智能物种匹配)
如果您不确定样本的物种,或者有大量混样数据,可以使用多参考模式,让程序自动匹配合适的参考:
dcs SeqArc compress -K /path/to/multi_ref_dir -i /path/to/input.fq.gz -o /path/to/output.arc -t 32
温馨参数释义:
-
-i:您要压缩的原始 FASTQ 文件路径(Input),支持.fq/.fastq/.fq.gz/.fastq.gz格式。 -
-o:压缩后生成的新文件(.arc格式)的保存路径(Output)。 -
-t:设置运转的线程数(默认是 8,数字越大通常处理越快,推荐根据 CPU 核心数调整)。 -
-r:单参考模式下,指定您提前建好的参考索引目录。 -
-K:多参考模式下,指定您提前建好的多参考分类索引目录。
4.3 场景二:把数据 “恢复” 原样(解压)
如果您想解压数据,恢复成原始的 FASTQ 文件,请使用对应的命令:
4.3.1 无参考模式解压
dcs SeqArc decompress -i /path/to/input.arc -o /path/to/output.fq.gz -t 32
4.3.2 单参考模式解压
dcs SeqArc decompress -r /path/to/ref_index -i /path/to/input.arc -o /path/to/output.fq.gz -t 32
4.3.3 多参考模式解压
dcs SeqArc decompress -K /path/to/multi_ref_dir -i /path/to/input.arc -o /path/to/output.fq.gz -t 32
温馨参数释义:
-
-i:您要解压的.arc压缩文件路径(Input)。 -
-o:解压后生成的 FASTQ 文件的保存路径(Output),默认会输出 gzip 压缩的 FASTQ 文件,您也可以通过参数调整为纯文本格式。 -
-t:设置运转的线程数,加快解压速度。 -
-r/-K:如果压缩时使用了参考模式,解压时必须提供对应的参考索引目录,以保证数据的正确恢复。
5. 进阶功能与避坑指南
5.1 数据安全与校验
SeqArc 提供了完善的数据校验功能,确保您的压缩数据不会出错:
1. 文件完整性检查:您可以使用 check 命令来检查一个 .arc 文件是否完整无损:
dcs SeqArc check -i /path/to/input.arc
如果压缩时使用了参考模式,同样需要提供对应的参考索引目录。
2. 压缩后自动校验:在压缩时,您可以添加 --ccheck 参数,程序会在压缩完成后立即自动解压校验,确保压缩出来的文件是完全正确的,虽然会稍微增加一点处理时间,但是能保证数据的绝对安全。
3. 解压后自动校验:在解压时,您可以添加 --dcheck 参数,程序会在解压完成后确认文件写出完整。
4. MD5 校验值:您可以在压缩时添加 --calcmd5 参数,程序会自动计算原始文件的 MD5 校验值并保存在压缩文件中,解压时可以通过 --show 参数查看,方便您进行数据完整性的验证。但是,因为程序本身有分块校验,而启用这一参数需要对全文件统一再算一次校验码,是一种冗余,因此我们默认并不开启。
5. 压缩统计信息:您可以使用 stat 命令查看压缩文件的统计信息,了解压缩过程中的详细数据:
dcs SeqArc stat -i /path/to/input.arc
5.2 高级技巧与避坑提示
1. 流式处理支持:SeqArc 支持管道输入输出,您可以添加 --pipein 参数从管道中读取输入,实现流式处理,无缝对接您的分析流程,不需要存储中间文件。
注意:使用管道输入时,推荐手动指定
--inputname参数,用来标识原始文件名,避免解压后文件名不明确。
2. 多线程瓶颈提示:多线程可以显著提升处理速度,但是如果您的系统资源(CPU、内存、磁盘 I/O)受限,过多的线程反而会引起资源竞争,导致性能瓶颈。推荐根据您的硬件配置合理设置线程数,一般来说,线程数不要超过 CPU 的物理核心数。
3. 压缩级别调优:您可以通过 --slevel 参数调整序列压缩级别(范围 8-15,默认 10)。越高的级别会带来越高的压缩比,但是会增加处理时间和内存消耗。如果您追求极致的压缩率,可以适当调高这个值;如果您追求速度,使用默认值即可。
4. 强制覆盖参数慎用:-f/--force 参数会强制覆盖已存在的输出文件,请务必谨慎使用,避免误覆盖您的重要原始数据。
5. 参考文件一致性:如果您在压缩时使用了 -r 或 -K 参考模式,那么在解压和检查的时候,必须提供完全相同的参考索引文件,否则无法正确恢复数据。
2 SeqArc详细参数
1.1 输入要求与输出
1. 待压缩文件要求
FASTQ 文件,支持未压缩文本格式(.fq或.fastq)及gz压缩格式(.fq.gz或.fastq.gz)。
2. 参考文件要求
如果使用单参考模式或多参考模式,需要提供参考基因组 FASTA 文件。
若使用多参考模式,索引目录中应有多个 FASTA 文件。
需要下载并解压 NCBI taxonomy 数据包 taxdump.tar.gz (http://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz)至该目录(占485MB空间),以支持参考基因组匹配。
3. 压缩输出文件格式
压缩后:.arc 文件。
解压后:FASTQ或FASTQ.gz 文件(gz可指定压缩级别)。
1.2 索引构建
1. 用法(Usage)
dcs SeqArc index [options] -r /path/to/ref.fa
dcs SeqArc index [options] -K /path/to/ref_dir/
2. 功能说明
建立参考基因组的索引,以支撑“单参考压缩”与“多参考压缩”。
如果指定 -K(多个参考 FASTA 所在目录),将构建分类数据库,使压缩阶段能自动选择最合适的参考,解压阶段也能自动选择压缩时使用的参考。
用「dcstools SeqArc index -r REF -o OUTDIR 」命令会生成两个用于压缩的索引,分别是二代短读长的索引和三代长读长的索引。以人类基因组为例,GRCh38.fa为3.1GB,建索引耗时约半小时,输出二代短读长索引GRCh38.fa.mini_28_10,占14GB,输出三代长读长索引GRCh38.fa.similar_26_23,占6.1GB,++过程中峰值内存约35GB,对于比人类基因组更大的FASTA,消耗内存会成比例增加++。
3. 参数说明
| 参数 | 说明 | 默认值 / 要点 |
|---|---|---|
-r, --ref <file> |
指定一个参考 FASTA 文件 | 必要用于单参考模式 |
-K, --clsdb <dir> |
指定包含多个参考 FASTA 的目录 | 用于物种识别模式 |
-H, --hitlimit <int> |
在参考匹配时最大的匹配数 | 默认 2 |
-t, --thread <int> |
使用线程数 | 默认 8 |
-o, --output <dir> |
索引输出目录 | 若未指定则使用当前目录或默认子目录 |
-h, --help |
显示帮助信息 | — |
1.3 压缩
1. 用法(Usage)
dcs SeqArc compress [options] -i reads.fq -o reads.arc
dcs SeqArc compress [options] -r /path/to/ref.fa -i reads.fq -o reads.arc
dcs SeqArc compress [options] -K /path/to/ref_dir/ -i reads.fq -o reads.arc
2. 功能说明
将 FASTQ 文件压缩为 .arc 格式。
三种压缩模式可选:无参考、单参考、多参考。
值得注意的是,尽管多参考模式使用了多个FASTA,但只会从多个建库的FASTA中尝试找到与当前FASTQ最接近的一个(或者因皆不匹配,不使用任何一个,选择无参考模式),在压缩和解压过程中依然只有一个FASTA文件作为参考。
3. 参数说明
| 参数 | 说明 | 默认值 / 建议 |
|---|---|---|
-i, --input <file> |
输入 FASTQ 文件 | 必填 |
-o, --output <file> |
输出文件,会增加判定,保证输出文件后缀为 .fq.arc或.fastq.arc |
必填 |
-r, --ref <file> |
单参考 FASTA | 可选 |
-K, --clsdb <dir> |
多参考目录,用于物种识别 | 可选 |
-H, --hitlimit <int> |
参考匹配数上限 | 默认 2 |
-J, --clsmin <float> |
最小读 hit 比例 | 默认 0.6 |
-L, --clsnum <int> |
用于分类判断的读数样本数目 | 默认 10000 |
-t, --thread <int> |
线程数 | 默认 8 |
-f, --force |
覆盖已有输出文件 | — |
--pipein |
从管道中读取输入 | 适合流式处理 |
--inputname <str> |
指定原始FASTQ 名称,仅当使用 --pipein 时有用,该名称于解压且不指定输出文件名时被使用 |
— |
--blocksz <size> |
块大小,以 MB 为单位 | 默认 50 |
--ccheck |
压缩后立即解压校验内容,慢但安全 | — |
--calcmd5 |
计算输入 FASTQ 的 MD5 校验和 | 用于后续校验 |
--slevel <int> |
序列压缩级别(8–15) | 默认 10 |
--verify <int> |
校验模式:0(无),1(整个块),2(整个块 + 名称、序列、质量分别校验) | 默认 1 |
-h, --help |
显示帮助信息 | — |
1.4 解压
- 用法(Usage)
dcs SeqArc decompress [options] -i reads.arc -o reads.fq
dcs SeqArc decompress [options] -r /path/to/ref.fa -i reads.arc -o reads.fq
dcs SeqArc decompress [options] -K /path/to/ref_dir/ -i reads.arc -o reads.fq
- 功能说明
将 .arc 文件解压为 FASTQ 文件。
如果压缩时用了参考或物种识别库,则解压时也应提供相应参考或参考库,以保证正确恢复序列。
- 参数说明
| 参数 | 说明 | 默认值 / 建议 |
|---|---|---|
-i, --input <file> |
输入 .arc 文件 |
必填 |
-o, --output <file> |
输出 FASTQ 文件路径(若不指定则输出到标准输出) | — |
-r, --ref <path> |
单参考 FASTA 文件或目录 | 如果压缩时使用了 -r 模式 |
-K, --clsdb <dir> |
多参考目录,用于物种识别 | 如果压缩时使用了 -K 模式 |
-t, --thread <int> |
线程数 | 默认 8 |
-f, --force |
覆盖已有输出文件 | — |
--type <int> |
输出类型:0 = gz 压缩 FASTQ;1 = 纯 fastq 文本 | 默认 0 |
--gzlevel <int> |
gzip 压缩级别 | 默认 4 |
--dcheck |
写入后再次读入并校验 | 较慢但更可靠 |
--show |
若压缩时使用了 --calcmd5,显示原始 FASTQ 的 MD5 值 |
— |
-h, --help |
显示帮助信息 | — |
1.5 检查
1. 用法(Usage)
dcs SeqArc check [options] -i reads.arc
dcs SeqArc check [options] -r /path/to/ref.fa -i reads.arc
dcs SeqArc check [options] -K /path/to/ref_dir/ -i reads.arc
2. 功能说明
检查 .arc 文件是否完全无损。
如果压缩时用了参考或物种识别库,则检查时也应提供相应参考或参考库。
3. 参数说明
| 参数 | 说明 | 默认值 / 建议 |
|---|---|---|
-i, --input <file> |
输入 .arc 文件 |
必填 |
-r, --ref <path> |
单参考 FASTA 文件或目录 | 如果压缩时使用了 -r 模式 |
-K, --clsdb <dir> |
多参考目录,用于物种识别 | 如果压缩时使用了 -K 模式 |
-t, --thread <int> |
线程数 | 默认 8 |
-f, --force |
覆盖已有输出文件 | — |
-h, --help |
显示帮助信息 | — |
1.6 输出统计信息
1. 用法(Usage)
dcs SeqArc stat [options] -i reads.arc
2. 功能说明
输出 .arc 文件在压缩过程中统计得到的数据。
3. 参数说明
| 参数 | 说明 | 默认值 / 建议 |
|---|---|---|
-i, --input <file> |
输入 .arc 文件 |
必填 |
-h, --help |
显示帮助信息 | — |
1.7 参数选择与使用建议
| 状况 | 建议模式 | 关键参数调优 |
|---|---|---|
| 数据量非常大,希望最大压缩率 | 单参考 (-r) 或 多参考 (-K) 模式 |
提高 --slevel,使用更多线程;确认参考基因组与样本物种匹配良好 |
| 数据种类混杂、物种未知 | 多参考模式 | 准备好多个参考 FASTA,并下载 taxonomy 数据;调节 -L、-clsmin 确保分类准确 |
| 要求速度快,对压缩率要求不高 | 无参考模式 | 使用默认压缩级别即可,不用 -r 或 -K;减少校验选项(如关闭 --ccheck、--verify) |
| 希望压缩与解压后的数据完全一致 | 开启校验选项 | 用 --ccheck(压缩后校验),用 --dcheck(解压校验),保存 MD5 校验值 |
1.8 示例
- 索引构建
1. 首先需要进行文件系统的句柄设置
# 二者选一即可
# 仅对当前会话临时生效,若需要长期生效,需添加至环境变量
ulimit -n 65535 # 设置软限制为65535
ulimit -Hn 65535 # 设置硬限制为65535(需要root权限)
2. 对于单参考的情况,直接创建参考序列的索引文件
dcs SeqArc index -r REF -o OUTDIR
3. 对于多参考的情况,创建物种识别库索引和每个物种的索引文件
# i.新建一个多物种文件目录
mkdir fasidx && cd fasidx
# ii.下载物种关系文件并解压
wget http://ftp.ncbi.nih.gov/pub/taxonomy/taxdump.tar.gz
tar xzf taxdump.tar.gz
# iii.下载需要用到的各个物种FASTA到/path/to/fa目录中,将fa.gz解压成fa
gunzip ./*fa.gz
# iv.创建物种识别库索引clsf.cdb,clsf_del.cdb,clsf_opt.cdb,clsf_tax.cdb
dcs SeqArc index -K .
# v.为每个物种(如aaa.fa)创建对应的比对索引
dcs SeqArc index -r aaa.fa
- 使用dcs进行压缩
1. 用户如果知道fastq的物种,可以使用【-r】参数直接选择对应物种的参考序列进行压缩:
dcs SeqArc compress -r REF \
-i FASTQ \
-o ARC \
-t THREADNUM
2. 如果用户不知道具体物种,可以使用物种识别库进行有参压缩,程序会利用物种识别库分析输入数据的物种,然后选用对应的索引文件进行有参压缩
dcs SeqArc compress -K REFDIR \
-i FASTQ \
-o ARC \
-t THREADNUM
3. 如果用户没有参考序列,也可以进行无参压缩
dcs SeqArc compress -i FASTQ \
-o ARC \
-t THREADNUM
该命令需要输入下述参数:
-
REF: 输入的参考序列路径
-
REFDIR :包含多物种参考序列的目录
-
FASTQ:输入的fastq文件路径
-
ARC: 输出的压缩文件路径
-
THREADNUM: 设置的线程数
-
使用dcs进行解压
1. 用户如果知道压缩使用的具体参考序列,可以使用【-r】参数直接选择对应物种的参考序列进行压缩
dcs SeqArc decompress -r REF \
-i ARC \
-o FASTQ \
-t THREADNUM
2. 用户如果使用物种识别库进行的压缩,解压时需要指定物种识别库路径
dcs SeqArc decompress -r REFDIR \
-i ARC \
-o FASTQ \
-t THREADNUM
3. 用户如果是无参压缩,解压也是无参解压
dcs SeqArc decompress -i ARC \
-o FASTQ \
-t THREADNUM
该命令需要输入下述参数:
-
REF: 输入的参考序列路径
-
REFDIR :包含多物种参考序列的目录
-
FASTQ:输出的fastq文件路径
-
ARC:输入的压缩文件路径
-
THREADNUM: 设置的线程数
-
使用单独解压工具进行解压
如果客户没有购买DCS Tools,单需要解压缩arc格式的文件,可以用独立的免费解压工具对数据进行解压缩,解压工具软件包(Seqarc_decompress)向销售获取。
1. 用户如果知道压缩使用的具体参考序列,可以使用【-r】参数直接选择对应物种的参考序列进行压缩
SeqArc_decompress -r REF \
-i ARC \
-o FASTQ \
-t THREADNUM
2. 用户如果使用物种识别库进行的压缩,解压时需要指定物种识别库路径
SeqArc_decompress -r REFDIR \
-i ARC \
-o FASTQ \
-t THREADNUM
3. 用户如果是无参压缩,解压也是无参解压
SeqArc_decompress -i ARC \
-o FASTQ \
-t THREADNUM
该命令需要输入下述参数:
-
REF: 输入的参考序列路径
-
REFDIR :包含多物种参考序列的目录
-
FASTQ:输出的fastq文件路径
-
ARC:输入的压缩文件路径
-
THREADNUM: 设置的线程数
1.9 注意事项
-
若压缩时使用
-r或-K模式,解压时必须提供相应参考或目录,以保证内容完整且一致性高。 -
多线程可以加速,但资源(CPU + 内存)受限时可能引起性能瓶颈。
-
较高压缩级别(
--slevel大)与校验选项会显著增加运行时间。 -
文件覆盖(
-f, --force)慎用,以免误覆盖重要数据。 -
在使用
--pipein或从标准输入读取时,推荐手动指定--inputname用于正确标识输入文件名,避免解压后文件名不明确。
3 VarArc: 高效 VCF 数据压缩与检索工具简介
1. 简单认识 VarArc
简单来说,您可以把 VarArc 看作一款专为基因变异数据(VCF格式)量身定制的 压缩软件(就像我们平时用来打包文件的 WinRAR 或 ZIP,但它的性能要强大得多)。
它主要用来处理哪些数据?
-
个体 gVCF 数据:单样本变异数据(但也包含非变异的位点),是群体变异检测流程的输入数据。
-
群体 Cohort VCF 数据:包含多个样本的纯变异数据,是群体变异检测流程的输出结果。
它能为大家带来什么便利?它能将原本极占空间的庞大文件“瘦身”,不仅大幅节省存储空间,还能在您需要提取特定数据时,不需要全部解压就能实现“秒级提取”,为您省下宝贵的等待时间。
2. VarArc 核心优势与 Benchmark 性能案例
为了让大家更直观地了解 VarArc 的优势及资源消耗情况,我们分别针对“群体 VCF”和“个体 gVCF”进行了实测案例。
首先,在这里对集群测试环境进行说明,适用于以下各个测试。
系统:Ubuntu 22.04.5 LTS (Jammy Jellyfish)
CPU:2个物理处理器,Intel(R) Xeon(R) Gold 6442Y @ 2.60GHz,共96线程
内存:376 GB
存储:lustre共享存储(非SSD)
2.1 场景一:群体 VCF 数据 (Cohort VCF)
在群体VCF上,传统生信流程会将vcf.gz转为bcf格式,以支持丰富的文件操作功能,因此这里对VarArc和bcftools进行比较。
三个测试数据均来自生产环境的Project 1项目。
data1和data2形如:
##HEADER
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SAMPLE1 SAMPLE2 SAMPLE3
chr1 10114 . TA T 23979.43 . XXXXX GT:AD:DP:GQ:PL ./.:16,0:16:.:0,0,0 0/0:25,0:25:0:0,0,582 0/0:16,0:16:6:0,6,90
chr1 10128 . AC A 19.95 . XXXXX GT:AD:DP:GQ:PGT:PID:PL ./.:16,0:16:.:.:.:0,0,0 0/0:19,0:19:6:.:.:0,6,90 0/0:14,0:14:6:.:.:0,6,90 0/0:12,0:12:9:.:.:0,9,135
chr1 10131 . C *,T 3517.11 . XXXXX GT:AD:DP:GQ:PGT:PID:PL ./.:16,0,0:16:.:.:.:0,0,0,0,0,0 0/0:19,0,0:19:6:.:.:0,6,90,6,90,90 0/0:14,0,0:14:6:.:.:0,6,90,6,90,90 0/0:12,0,0:12:9:.:.:0,9,135,9,135,135
data3形如:
##HEADER
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SAMPLE1 SAMPLE2 SAMPLE3
chr22 10510354 . AAT A 87.96 PASS XXXXX GT ./. ./. ./.
chr22 10510355 rs1191806540 AT A 13035.3 PASS XXXXX GT ./. ./. ./.
chr22 10511407 . GA G 82.09 PASS XXXXX GT ./. 0/0 ./.
VarArc的压缩参数是--rowcnt 200 --blkcolcnt 2000。VarArc与bcftools的压缩解压线程均为32。
以下是压缩解压的结果展示。可以看到,对于包含多字段丰富信息(如 GT, AD, DP 等)的群体 VCF 数据(如 data1 和 data2),VarArc 展现出了显著的存储压缩优势。 相比于原本已经是 gz 格式的文件,VarArc 能够进一步实现 2.3 倍以上的压缩比,将文件体积缩减一半以上;而传统工具 bcftools 转换后反而会导致文件体积膨胀。对于仅含单一 GT 字段的数据(data3),两者的压缩比基本持平(约 1.13~1.16)。
| 名称 | 数据来源 | gz数据大小/GB | 染色体 | 样本数 | 位点数 | 字段特征 | 工具 | comp_size(GB) | 压缩比 | comp_RealTime(s) | comp_CPUTime(s) | comp_CPUUsage | comp_MaxRAM(GB) | 压缩速度 (以gz为分子) MB/s |
decomp_RealTime(s) | decomp_CPUTime(s) | decomp_CPUUsage | decomp_MaxRAM(GB) | 解压速度 (以gz为分子) MB/s |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| data1 | Project 1 | 15 | chr1 | 6w | 8w | 变异含GT,AD,DP等字段 | VarArc | 6.34 | 2.36 | 1143 | 34827 | 3056% | 10.7 | 13.4 | 319 | 8983 | 2833% | 7.2 | 48.2 |
| bcftools | 18.80 | 0.80 | 510 | 4630 | 916% | 0.2 | 30.1 | 357 | 3745 | 1058% | 0.1 | 43.0 | |||||||
| data2 | Project 1 | 25.9 | chr10 | 10.5w | 8w | 变异含GT,AD,DP等字段 | VarArc | 11.26 | 2.30 | 1889 | 56823 | 3019% | 13.2 | 14.0 | 561 | 14749 | 2646% | 9.3 | 47.3 |
| bcftools | 32.33 | 0.80 | 832 | 7933 | 960% | 0.16 | 31.9 | 606.16 | 6713.36 | 1116% | 0.1 | 43.8 | |||||||
| data3 | Project 1 | 60.7 | chr22 | 10.5w | 524w | 变异仅含GT字段 | VarArc | 53.79 | 1.13 | 13772 | 383898 | 2792% | 7.6 | 4.5 | 3864 | 107477 | 2803% | 3.2 | 16.1 |
| bcftools | 52.40 | 1.16 | 10189 | 39974 | 397% | 0.06 | 6.1 | 8186.85 | 43343.32 | 535% | 0.1 | 7.6 |
除了压缩解压之外,随机检索也是重要需求,本测试包含对特定样本和特定区间进行数据抓取。
以下是检索的结果展示。可以看到,在群体 VCF 数据的随机检索场景下,VarArc 整体表现出了显著的速度优势,特别是对于日常高频的“中小规模”数据提取任务堪称优秀。
1. 整体速度更优:综合所有测试用例,VarArc 的平均检索速度达到了 1.12 MB/s,整体领先 bcftools(0.87 MB/s)约 30%。
2. 中小规模提取优势显著:当我们需要提取少量变异或部分样本(例如 100~1000 个变异,对应几百至几千样本,结果在几十 MB 以内)时,VarArc 的耗时通常只有 bcftools 的 1/4 甚至 1/10。例如在 data1 中提取 10000 个变异(500 样本),bcftools 需要漫长的 110.2 秒,而 VarArc 仅需 15.9 秒;提取 100 个变异(500 样本)时更是仅需 1.1 秒,真正实现了“秒级响应”。
3. 大批量提取表现平稳:只有当检索范围极其庞大(如提取 10000 个变异 × 50000 个样本,输出结果高达 1.5GB 以上)时,两者的耗时才逐渐拉近。
| 检索 | bcftools | VarArc | |||||
|---|---|---|---|---|---|---|---|
| 测试数据 | 检索变异数 | 检索样本数 | 检索结果 gz文件大小(MB) |
时间(s) | 速度 (MB/s) |
时间(s) | 速度 (MB/s) |
| data1 | 100 | 500 | 0.2 | 4.3 | 0.0 | 1.1 | 0.2 |
| 1000 | 500 | 1.5 | 13.4 | 0.1 | 2.3 | 0.7 | |
| 10000 | 500 | 16.6 | 110.2 | 0.2 | 15.9 | 1.0 | |
| 100 | 5000 | 1.5 | 4.2 | 0.4 | 2.3 | 0.7 | |
| 1000 | 5000 | 13.8 | 15.9 | 0.9 | 7.2 | 1.9 | |
| 10000 | 5000 | 156.0 | 138.4 | 1.1 | 57.8 | 2.7 | |
| 100 | 50000 | 14.6 | 6.9 | 2.1 | 17.4 | 0.8 | |
| 1000 | 50000 | 132.7 | 41.1 | 3.2 | 59.2 | 2.2 | |
| 10000 | 50000 | 1507.9 | 421.5 | 3.6 | 519.7 | 2.9 | |
| data2 | 100 | 500 | 0.2 | 9.9 | 0.0 | 1.1 | 0.2 |
| 1000 | 500 | 1.7 | 25.8 | 0.1 | 2.3 | 0.8 | |
| 10000 | 500 | 17.5 | 189.1 | 0.1 | 17.5 | 1.0 | |
| 100 | 5000 | 1.6 | 10.0 | 0.2 | 2.2 | 0.7 | |
| 1000 | 5000 | 16.3 | 28.8 | 0.6 | 7.3 | 2.2 | |
| 10000 | 5000 | 165.6 | 219.0 | 0.8 | 60.7 | 2.7 | |
| 100 | 50000 | 15.5 | 12.9 | 1.2 | 16.1 | 1.0 | |
| 1000 | 50000 | 157.0 | 58.8 | 2.7 | 61.3 | 2.6 | |
| 10000 | 50000 | 1601.3 | 522.7 | 3.1 | 537.8 | 3.0 | |
| data3 | 100 | 500 | 0.1 | 1.3 | 0.0 | 0.6 | 0.1 |
| 1000 | 500 | 0.3 | 3.5 | 0.1 | 1.1 | 0.2 | |
| 10000 | 500 | 1.8 | 30.1 | 0.1 | 4.5 | 0.4 | |
| 100 | 5000 | 0.2 | 0.7 | 0.2 | 0.9 | 0.2 | |
| 1000 | 5000 | 1.2 | 4.1 | 0.3 | 2.7 | 0.4 | |
| 10000 | 5000 | 6.8 | 33.4 | 0.2 | 15.4 | 0.4 | |
| 100 | 50000 | 1.2 | 1.4 | 0.9 | 4.2 | 0.3 | |
| 1000 | 50000 | 9.2 | 10.0 | 0.9 | 21.1 | 0.4 | |
| 10000 | 50000 | 48.5 | 67.0 | 0.7 | 131.1 | 0.4 | |
| 平均 | 0.87 | 1.12 |
2.2 场景二:个体 gVCF 数据
这类数据包含了单个样本极其详细的参考区块信息,当样本量巨大时,存储成本会极其高昂,不过这类数据通常仅以gvcf.gz格式保存,因此不与bcftools比较。
gVCF文件形如:
##HEADER
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT SAMPLE
chr1 1 . N <NON_REF> . . END=10000 GT:DP:GQ:MIN_DP:PL 0/0:0:0:0:0,0,0
chr1 10001 . T <NON_REF> . . END=10001 GT:DP:GQ:MIN_DP:PL 0/0:1:3:1:0,3,40
chr1 10002 . A <NON_REF> . . END=10018 GT:DP:GQ:MIN_DP:PL 0/0:3:6:2:0,6,59
VarArc的压缩参数是--rowcnt 100000 --blkcolcnt 64,压缩解压线程均为32。
以下是压缩解压的结果展示。可以看到,在面对体量庞大且存储成本高昂的个体 gVCF 数据时,VarArc 展现出了出色且稳定的压缩能力。 具体分析如下:
1. 极致的压缩比:综合来自不同项目(Project 1、标品、Project 2等)的十余个真实样本测试结果来看,VarArc 的平均压缩比高达 3.78 倍(最高可超过 4 倍)。这意味着,在原有 .gz 格式已经被主流算法压缩过的基础上,VarArc 还能进一步节省约 70%~75% 的存储空间,这对于动辄 PB 级存储的大型队列项目来说,节省的成本非常可观。
2. 稳定可靠的吞吐性能:无论是处理 1.2 GB 的较小样本,还是 10.1 GB 的大样本,VarArc 的表现都高度一致。其压缩速度平均维持在 13.12 MB/s,而全量解压速度平均高达 44.25 MB/s,在不同来源的数据中波动小。
3. 合理的资源开销:在保持极高压缩比的同时,其解压时的内存峰值(绝大多数在 10GB 以下)和 CPU 消耗(约 800% 左右)都控制在常规计算节点可轻松承受的范围内。
| 数据来源 | gz数据大小/GB | 数据名称 | 工具 | comp_size(GB) | 压缩比 | comp_RealTime(s) | comp_CPUTime(s) | comp_CPUUsage | comp_MaxRAM(GB) | 压缩速度 (以gz为分子) MB/s |
decomp_RealTime(s) | decomp_CPUTime(s) | decomp_CPUUsage | decomp_MaxRAM(GB) | 解压速度 (以gz为分子) MB/s |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Project 1 | 9.39 | CK29289023 | VarArc | 2.44 | 3.84 | 730.59 | 16949.93 | 2324% | 11.9 | 13.16 | 197.82 | 1775.65 | 917% | 9.68 | 48.6 |
| Project 1 | 9.57 | CK29289876 | 2.48 | 3.85 | 753.33 | 17385.31 | 2313% | 12 | 13.01 | 209.16 | 1847.78 | 903% | 9.76 | 46.9 | |
| Project 1 | 6.31 | DCK27738788 | 1.62 | 3.9 | 473.13 | 9699.27 | 2056% | 9.47 | 13.65 | 140.35 | 1189.47 | 869% | 7.25 | 46 | |
| Project 1 | 7.35 | DCK28642995 | 1.85 | 3.98 | 563.67 | 11353.66 | 2020% | 10.3 | 13.35 | 169.82 | 1398.75 | 843% | 8.06 | 44.3 | |
| Project 1 | 7.92 | DCK28643005 | 1.98 | 4 | 599.39 | 12525.87 | 2096% | 10.68 | 13.52 | 167.72 | 1450.87 | 882% | 8.39 | 48.3 | |
| Project 1 | 7.46 | DCK28643014 | 1.88 | 3.96 | 564.69 | 12099.89 | 2148% | 10.32 | 13.53 | 173.8 | 1414.72 | 837% | 8.06 | 44 | |
| Project 1 | 7.29 | DCK72575132 | 1.86 | 3.93 | 565.91 | 11611.36 | 2058% | 10.3 | 13.19 | 173.52 | 1404.08 | 831% | 8.08 | 43 | |
| Project 1 | 8.54 | DCK73586222 | 2.13 | 4.01 | 650.88 | 13023.97 | 2007% | 11.09 | 13.43 | 207.86 | 1648.23 | 815% | 8.83 | 42.1 | |
| 标品 | 10.1 | HG002 | 2.54 | 3.98 | 730.81 | 17707.87 | 2429% | 11.84 | 14.16 | 229.42 | 1890.55 | 845% | 9.5 | 45.1 | |
| 标品 | 3.4 | HG005 | 1.08 | 3.15 | 329.54 | 10116.38 | 3084% | 7.43 | 10.56 | 89.25 | 725.88 | 838% | 5.25 | 39 | |
| Project 2 | 1.2 | WH2410014498 | 0.48 | 2.49 | 133.86 | 4100.44 | 3077% | 6 | 9.22 | 32.46 | 248.15 | 797% | 3.58 | 38 | |
| Project 2 | 2.72 | WH2410014503 | 0.92 | 2.94 | 245.87 | 7525.89 | 3069% | 6.93 | 11.31 | 72.77 | 571.65 | 811% | 4.6 | 38.2 | |
| Project 2 | 4.48 | WH2410014505 | 1.43 | 3.14 | 351.17 | 10867.54 | 3101% | 8.14 | 13.07 | 119.6 | 948.21 | 817% | 5.84 | 38.4 | |
| 总计 | 85.7 | VarArc | 22.7 | 3.78 | 6692.84 | 154967.38 | 2445% | 12 | 13.12 | 1983.55 | 16513.99 | 847% | 9.76 | 44.25 |
以下是检索的结果展示(含不同线程)。可以看到,在个体 gVCF 数据的随机靶向检索任务中,VarArc 实现了秒级响应,并且对计算资源的依赖极低。 具体分析如下:
1. 稳定的秒级提取:无论源文件大小(从 1.2 GB 到 10.1 GB),也无论是提取 200 个、2000 个还是 20000 个目标位点,VarArc 的实际检索耗时几乎全部稳定在 0.6 秒到 1.1 秒之间。
2. 单线程即巅峰(极低的 CPU 门槛):对比 1 到 32 线程的测试结果可以发现一个非常亮眼的优势——对于这种局部提取任务,单线程就已经能跑到最佳的极速响应时间。
3. 极小的内存占用:在整个随机检索过程中,VarArc 的内存峰值(decomp_MaxRAM)极其轻量,绝大部分用例都严格控制在 0.5 GB 以内(通常在 0.23 GB ~ 0.38 GB 左右)。
| 数据来源 | gz数据大小/GB | 数据名称 | 工具 | comp_size(GB) | 检索线程 | 检索位点 | query_size(MB) | query_RealTime(s) | query_CPUTime(s) | decomp_CPUUsage | decomp_MaxRAM(GB) | 检索速度 (以gz为分子) MB/s |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 标品 | 10.10 | HG002 | VarArc | 2.54 | 1 | 200 | 0.03 | 0.62 | 0.68 | 160% | 0.38 | 0.043 |
| 2000 | 0.05 | 0.62 | 0.69 | 159% | 0.38 | 0.077 | ||||||
| 20000 | 0.26 | 0.65 | 0.72 | 156% | 0.38 | 0.399 | ||||||
| 2 | 200 | 0.03 | 0.62 | 0.71 | 159% | 0.38 | 0.043 | |||||
| 2000 | 0.05 | 0.62 | 0.69 | 158% | 0.38 | 0.077 | ||||||
| 20000 | 0.26 | 0.64 | 0.7 | 157% | 0.38 | 0.405 | ||||||
| 4 | 200 | 0.03 | 0.63 | 0.7 | 162% | 0.39 | 0.043 | |||||
| 2000 | 0.05 | 0.64 | 0.71 | 162% | 0.39 | 0.075 | ||||||
| 20000 | 0.26 | 0.64 | 0.71 | 164% | 0.39 | 0.405 | ||||||
| 8 | 200 | 0.03 | 0.66 | 0.7 | 159% | 0.37 | 0.041 | |||||
| 2000 | 0.05 | 0.66 | 0.67 | 161% | 0.37 | 0.072 | ||||||
| 20000 | 0.26 | 0.67 | 0.75 | 163% | 0.37 | 0.387 | ||||||
| 16 | 200 | 0.03 | 0.72 | 0.72 | 157% | 0.38 | 0.037 | |||||
| 2000 | 0.05 | 0.73 | 0.74 | 157% | 0.38 | 0.066 | ||||||
| 20000 | 0.26 | 0.73 | 0.79 | 162% | 0.38 | 0.355 | ||||||
| 32 | 200 | 0.03 | 1.09 | 0.78 | 144% | 0.48 | 0.025 | |||||
| 2000 | 0.05 | 1.08 | 0.79 | 144% | 0.48 | 0.044 | ||||||
| 20000 | 0.26 | 1.09 | 0.81 | 147% | 0.48 | 0.238 | ||||||
| 标品 | 3.40 | HG005 | VarArc | 1.08 | 1 | 200 | 0.02 | 0.61 | 0.6 | 120% | 0.23 | 0.040 |
| 2000 | 0.05 | 0.6 | 0.6 | 121% | 0.23 | 0.076 | ||||||
| 20000 | 0.25 | 0.61 | 0.6 | 120% | 0.23 | 0.409 | ||||||
| 2 | 200 | 0.02 | 0.61 | 0.6 | 118% | 0.23 | 0.040 | |||||
| 2000 | 0.05 | 0.59 | 0.58 | 120% | 0.23 | 0.077 | ||||||
| 20000 | 0.25 | 0.62 | 0.61 | 119% | 0.23 | 0.403 | ||||||
| 4 | 200 | 0.02 | 0.6 | 0.58 | 126% | 0.24 | 0.041 | |||||
| 2000 | 0.05 | 0.61 | 0.6 | 126% | 0.24 | 0.074 | ||||||
| 20000 | 0.25 | 0.62 | 0.64 | 127% | 0.24 | 0.403 | ||||||
| 8 | 200 | 0.02 | 0.63 | 0.6 | 124% | 0.22 | 0.039 | |||||
| 2000 | 0.05 | 0.64 | 0.62 | 125% | 0.22 | 0.071 | ||||||
| 20000 | 0.25 | 0.64 | 0.66 | 128% | 0.22 | 0.390 | ||||||
| 16 | 200 | 0.02 | 0.71 | 0.64 | 124% | 0.23 | 0.035 | |||||
| 2000 | 0.05 | 0.71 | 0.64 | 124% | 0.23 | 0.064 | ||||||
| 20000 | 0.25 | 0.72 | 0.67 | 129% | 0.23 | 0.347 | ||||||
| 32 | 200 | 0.02 | 1.06 | 0.68 | 122% | 0.33 | 0.023 | |||||
| 2000 | 0.05 | 1.08 | 0.7 | 122% | 0.33 | 0.042 | ||||||
| 20000 | 0.25 | 1.08 | 0.74 | 125% | 0.33 | 0.231 | ||||||
| Project 2 | 2.98 | WH2410014483 | VarArc | 1.01 | 1 | 200 | 0.02 | 0.63 | 0.72 | 135% | 0.23 | 0.039 |
| 2000 | 0.05 | 0.63 | 0.72 | 135% | 0.23 | 0.076 | ||||||
| 20000 | 0.28 | 0.64 | 0.72 | 134% | 0.23 | 0.430 | ||||||
| 2 | 200 | 0.02 | 0.62 | 0.7 | 135% | 0.23 | 0.040 | |||||
| 2000 | 0.05 | 0.62 | 0.71 | 135% | 0.23 | 0.077 | ||||||
| 20000 | 0.28 | 0.64 | 0.74 | 134% | 0.23 | 0.430 | ||||||
| 4 | 200 | 0.02 | 0.62 | 0.71 | 140% | 0.24 | 0.040 | |||||
| 2000 | 0.05 | 0.63 | 0.71 | 140% | 0.24 | 0.076 | ||||||
| 20000 | 0.28 | 0.65 | 0.75 | 141% | 0.24 | 0.423 | ||||||
| 8 | 200 | 0.02 | 0.66 | 0.71 | 138% | 0.22 | 0.037 | |||||
| 2000 | 0.05 | 0.65 | 0.72 | 139% | 0.22 | 0.073 | ||||||
| 20000 | 0.28 | 0.66 | 0.73 | 143% | 0.22 | 0.417 | ||||||
| 16 | 200 | 0.02 | 0.71 | 0.72 | 137% | 0.23 | 0.035 | |||||
| 2000 | 0.05 | 0.72 | 0.75 | 138% | 0.23 | 0.066 | ||||||
| 20000 | 0.28 | 0.73 | 0.77 | 141% | 0.23 | 0.377 | ||||||
| 32 | 200 | 0.02 | 1.08 | 0.78 | 131% | 0.33 | 0.023 | |||||
| 2000 | 0.05 | 1.07 | 0.82 | 131% | 0.33 | 0.045 | ||||||
| 20000 | 0.28 | 1.08 | 0.86 | 135% | 0.33 | 0.255 | ||||||
| Project 2 | 1.20 | WH2410014498 | VarArc | 0.48 | 1 | 200 | 0.03 | 0.62 | 0.78 | 148% | 0.23 | 0.042 |
| 2000 | 0.06 | 0.61 | 0.78 | 150% | 0.23 | 0.092 | ||||||
| 20000 | 0.36 | 0.7 | 0.92 | 148% | 0.24 | 0.512 | ||||||
| 2 | 200 | 0.03 | 0.6 | 0.79 | 150% | 0.23 | 0.043 | |||||
| 2000 | 0.06 | 0.61 | 0.76 | 149% | 0.23 | 0.092 | ||||||
| 20000 | 0.36 | 0.71 | 0.92 | 148% | 0.24 | 0.504 | ||||||
| 4 | 200 | 0.03 | 0.6 | 0.79 | 158% | 0.24 | 0.043 | |||||
| 2000 | 0.06 | 0.62 | 0.82 | 155% | 0.24 | 0.090 | ||||||
| 20000 | 0.36 | 0.67 | 0.93 | 167% | 0.33 | 0.535 | ||||||
| 8 | 200 | 0.03 | 0.63 | 0.79 | 155% | 0.23 | 0.041 | |||||
| 2000 | 0.06 | 0.63 | 0.79 | 157% | 0.24 | 0.089 | ||||||
| 20000 | 0.36 | 0.66 | 0.96 | 174% | 0.36 | 0.543 | ||||||
| 16 | 200 | 0.03 | 0.71 | 0.8 | 151% | 0.24 | 0.036 | |||||
| 2000 | 0.06 | 0.7 | 0.81 | 152% | 0.24 | 0.080 | ||||||
| 20000 | 0.36 | 0.75 | 0.97 | 169% | 0.37 | 0.478 | ||||||
| 32 | 200 | 0.03 | 1.06 | 0.9 | 140% | 0.34 | 0.024 | |||||
| 2000 | 0.06 | 1.06 | 0.87 | 140% | 0.34 | 0.053 | ||||||
| 20000 | 0.36 | 1.1 | 1.05 | 153% | 0.47 | 0.326 | ||||||
| Project 2 | 4.48 | WH2410014505 | VarArc | 1.43 | 1 | 200 | 0.02 | 0.63 | 0.66 | 128% | 0.23 | 0.039 |
| 2000 | 0.05 | 0.6 | 0.65 | 129% | 0.23 | 0.080 | ||||||
| 20000 | 0.28 | 0.71 | 0.8 | 129% | 0.24 | 0.391 | ||||||
| 2 | 200 | 0.02 | 0.61 | 0.65 | 128% | 0.23 | 0.041 | |||||
| 2000 | 0.05 | 0.62 | 0.65 | 128% | 0.23 | 0.077 | ||||||
| 20000 | 0.28 | 0.7 | 0.78 | 129% | 0.24 | 0.397 | ||||||
| 4 | 200 | 0.02 | 0.62 | 0.66 | 134% | 0.24 | 0.040 | |||||
| 2000 | 0.05 | 0.63 | 0.65 | 134% | 0.24 | 0.076 | ||||||
| 20000 | 0.28 | 0.66 | 0.79 | 145% | 0.33 | 0.421 | ||||||
| 8 | 200 | 0.02 | 0.65 | 0.66 | 132% | 0.22 | 0.038 | |||||
| 2000 | 0.05 | 0.65 | 0.69 | 133% | 0.22 | 0.074 | ||||||
| 20000 | 0.28 | 0.68 | 0.78 | 147% | 0.30 | 0.409 | ||||||
| 16 | 200 | 0.02 | 0.73 | 0.67 | 131% | 0.23 | 0.034 | |||||
| 2000 | 0.05 | 0.73 | 0.69 | 131% | 0.23 | 0.066 | ||||||
| 20000 | 0.28 | 0.77 | 0.82 | 144% | 0.32 | 0.361 | ||||||
| 32 | 200 | 0.02 | 1.08 | 0.75 | 126% | 0.33 | 0.023 | |||||
| 2000 | 0.05 | 1.08 | 0.8 | 127% | 0.33 | 0.044 | ||||||
| 20000 | 0.28 | 1.13 | 0.92 | 136% | 0.42 | 0.246 |
3. 工具部署配置建议
基于以上测试,为了确保 VarArc 能够发挥最佳的压缩与解压性能,我们推荐以下部署配置:
| 资源类型 | 推荐配置(生产环境) | 备注说明 |
|---|---|---|
| CPU | 4 Core 及以上 | 依赖多线程并发,核心数越多压缩/解压速度越快。 |
| 内存 (RAM) | 16 GB | 内存峰值主要受 --rowcnt 和 --colcnt 参数影响。 |
| 磁盘 I/O | SSD | - |
4. 上手指南
VarArc 是一款非常轻量级的命令行工具。您只需要在终端输入简单的指令,它就会默默为您完成繁重的工作。
4.1 场景一:把庞大的数据“打包”变小
当您想把普通的 VCF 文本或者 VCF.gz 文件压缩以节省空间时,请使用以下命令:
VarArc compress -i VCF -o ARC -t THREADNUM --rowcnt RCNT --colcnt CCNT
温馨参数释义:
-
-i:您要压缩的原始 VCF 文件路径(Input)。 -
-o:压缩后生成的新文件(.arc 格式)的保存路径(Output)。 -
-t:设置运转的线程数(默认是 4,数字越大通常处理越快)。 -
--rowcnt:高级设置,指每个数据块包含的行数(建议群体VCF设为200,gVCF设为100000)。 -
--colcnt:高级设置,指每个数据块包含的样品列数(建议群体VCF设为2000,gVCF设为64)。
4.2 场景二:把数据“恢复”原样
如果您想解压数据到一个输出文件中:
VarArc decompress -i ARC -o VCF -t THREADNUM -p POSRANGE -s SAMPLELIST
温馨参数释义:
-
-p:输入您关心的染色体名称和区间(例如chr1:1000-2000),它就只为您解压这一小段,极其省时! -
-s:提供一个包含样品名单的文件路径(文件里每行/列写一个样品名),它就只提取这些特定的样本。
4.3 场景三:不生成新文件,直接在屏幕上预览内容
有时候,我们只是想简单核对一下数据的内容,不想在硬盘上生成一个新的大文件。这时候用 view 命令最合适不过了:
VarArc view -i ARC -t THREADNUM -p POSRANGE -s SAMPLELIST
它的参数和“解压”命令完全一样,区别在于结果会直接输出到屏幕,不产生文件。
4 VarArc详细参数
VarArc 压缩是将普通的 GVCF/VCF 文本或者 GVCF/VCF.gz 文件压缩成更小的文件进行替代,以节省存储空间,减少数据传输时间,提高处理效率。
压缩命令如下:
dcs VarArc compress -i VCF \
-o ARC \
-t THREADNUM \
--rowcnt RCNT \
--blkcolcnt BCNT
该命令需要输入下述参数:
-
VCF: 输入的vcf文件路径
-
ARC :输出的压缩文件路径
-
THREADNUM: 设置的线程数
-
RCNT :设置行数,每RCNT为一个大块
-
BCNT:设置样品列数,每BCNT为一个小块
解压命令如下:
dcs VarArc decompress -i ARC \
-o VCF \
-t THREADNUM \
-p POSRANGE \
-s SAMPLELIST
该命令需要输入下述参数:
-
ARC: 输入的压缩文件路径
-
VCF :输出的解压vcf文件路径
-
THREADNUM: 设置的线程数
-
POSRANGE :设置查询的染色体名称和区间 【chr1: 1000-2000】
-
SAMPLELIST:设置查询的样品命令列表文件【文件的每一行是一个样品】
view可以解压查看vcf内容但是不生成文件,命令如下:
dcs VarArc view -i ARC \
-t THREADNUM \
-p POSRANGE \
-s SAMPLELIST
该命令需要输入下述参数:
-
ARC: 输入的压缩文件路径
-
THREADNUM: 设置的线程数
-
POSRANGE :设置查询的染色体名称和区间 【chr1: 1000-2000】
-
SAMPLELIST:设置查询的样品命令列表文件【文件的每一行是一个样品】