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 解压

  1. 用法(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
  1. 功能说明

将 .arc 文件解压为 FASTQ 文件。

如果压缩时用了参考或物种识别库,则解压时也应提供相应参考或参考库,以保证正确恢复序列。

  1. 参数说明
参数 说明 默认值 / 建议
-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

该命令需要输入下述参数:

  1. REF: 输入的参考序列路径

  2. REFDIR :包含多物种参考序列的目录

  3. FASTQ:输入的fastq文件路径

  4. ARC: 输出的压缩文件路径

  5. THREADNUM: 设置的线程数

  6. 使用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

该命令需要输入下述参数:

  1. REF: 输入的参考序列路径

  2. REFDIR :包含多物种参考序列的目录

  3. FASTQ:输出的fastq文件路径

  4. ARC:输入的压缩文件路径

  5. THREADNUM: 设置的线程数

  6. 使用单独解压工具进行解压

如果客户没有购买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

该命令需要输入下述参数:

  1. REF: 输入的参考序列路径

  2. REFDIR :包含多物种参考序列的目录

  3. FASTQ:输出的fastq文件路径

  4. ARC:输入的压缩文件路径

  5. 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

该命令需要输入下述参数:

  1. VCF: 输入的vcf文件路径

  2. ARC :输出的压缩文件路径

  3. THREADNUM: 设置的线程数

  4. RCNT :设置行数,每RCNT为一个大块

  5. BCNT:设置样品列数,每BCNT为一个小块

解压命令如下:

dcs VarArc decompress  -i ARC \
                       -o VCF \
                       -t THREADNUM \
                       -p POSRANGE \
                       -s SAMPLELIST

该命令需要输入下述参数:

  1. ARC: 输入的压缩文件路径

  2. VCF :输出的解压vcf文件路径

  3. THREADNUM: 设置的线程数

  4. POSRANGE :设置查询的染色体名称和区间 【chr1: 1000-2000】

  5. SAMPLELIST:设置查询的样品命令列表文件【文件的每一行是一个样品】

view可以解压查看vcf内容但是不生成文件,命令如下:

dcs VarArc   view      -i ARC \
                       -t THREADNUM \
                       -p POSRANGE \
                       -s SAMPLELIST

该命令需要输入下述参数:

  1. ARC: 输入的压缩文件路径

  2. THREADNUM: 设置的线程数

  3. POSRANGE :设置查询的染色体名称和区间 【chr1: 1000-2000】

  4. SAMPLELIST:设置查询的样品命令列表文件【文件的每一行是一个样品】