GTZ:一种针对 FASTQ 文件进行优化的快速压缩和云传输工具
Yuting Xing
,跟
,Zhenguo Wang
,Bolun Feng
,Zhuo Song
和 Chengkun Wu
来自 2017 年第 16 届国际生物信息学会议(InCoB 2017)
中国深圳。2017 年 9 月 20 日至 22 日
摘要
背景:DNA 测序技术的快速发展正在产生真正的大数据,需要更多的存储空间和带宽。为了加快数据共享并更快、更便宜地将数据传输到计算资源,有必要开发一种能够支持测序数据高效压缩和传输到云存储的压缩工具。
结果:本文介绍了 GTZ,一种针对 FASTQ 文件进行优化的压缩和传输工具。作为一种无参考无损 FASTQ 压缩器,GTZ 单独处理 FASTQ 的不同行,利用自适应上下文建模来估计它们的特征概率,并使用算术编码压缩数据块。GTZ 还可以用于一次压缩多个文件或目录。此外,作为云计算时代使用的工具,它能够选择将压缩数据保存在本地或直接传输数据到云端。我们评估了 GTZ 在一些不同 FASTQ 基准上的性能。结果显示,在大多数情况下,它在压缩比、速度和稳定性方面优于许多其他工具。
结论:GTZ 是一种工具,可以实现高效的无损 FASTQ 数据压缩,并同时将数据传输到云端。它成为 NGS 数据在云环境中存储和传输的有用工具。GTZ 可以在以下网址免费获取:https://github.com/Genetalks/gtz。
关键词:FASTQ,压缩,通用型,无损,并行压缩和传输,云计算
背景
下一代测序(NGS)极大地促进了基因组分析的发展,这对实现精准医学目标至关重要。然而,积累的测序数据呈指数增长,给 NGS 数据的传输和存储带来严峻挑战。高效的压缩方法为解决这一日益突出的问题提供了可能性。
以前,通用压缩工具,如 gzip(http://www.gzip.org/)、bzip2(http://www.bzip.org/)和
(www.7-zip.org),被用于压缩 NGS 数据。这些工具没有充分利用
基因组数据的特征,比如小型字母表和重复序列片段,为性能优化留下了空间。最近,一些专门的压缩工具已经为 NGS 数据开发出来。这些工具要么是基于参考的,要么是无参考的。主要区别在于是否使用额外的基因组序列作为参考。基于参考的算法对目标和参考序列之间的差异进行编码,并消耗更多内存以提高压缩性能。GenCompress [1] 和 SimGene [2] 使用各种熵编码器,比如算术、Golomb 和 Huffman 来压缩整数值。这些值显示了 reads 的属性,比如起始位置、reads 的长度等。一种统计压缩方法,GReEn [3],使用自适应模型根据字符的频率来估计概率。然后这些概率会被算术编码器压缩。
QUIP [4] 利用与三阶模型和高阶马尔可夫链相关联的算术编码来处理 FASTQ 数据的所有三个部分。LW-FQZip [5] 利用增量和有限运行长度编码方案来分别压缩元数据和质量分数。读取经过轻量级映射模型预处理,然后三个组件结合在一起,通过类似 LZMA 的通用工具进行压缩。Fqzcomp [6] 通过 k 阶上下文建模估计字符概率,并借助算术编码器压缩 FASTQ 格式的 NGS 数据。
然而,如果目标序列和参考序列之间的相似性较低,基于参考的算法可能效率低下。因此,也提出了无参考方法来解决这个问题。Biocompress 在[7]中提出的是一种专门用于基因组序列的压缩方法。其主要思想是基于经典的基于字典的压缩方法-Ziv 和 Lempel[8]压缩算法。重复和回文序列使用它们最早出现的长度和位置进行编码。作为 biocompress [7]的扩展,biocompress-2 [9]利用相同的方案,并在不存在显著重复时使用二阶算术编码。DSRC [10]算法将序列分成块,并使用 LZ77 [8]和 Huffman [11]编码分别对其进行压缩。在压缩和解压速度方面,它比 QUIP 更快,但在压缩比方面不如后者。DSRC2 [12]是 DSRC [10]的多线程版本,将输入分成三个流进行预处理。预处理后,元数据、读取和质量分数在 DRSC 中分别进行压缩。 一种提升算法,SCALCE [13],它重新组织读取的数据,可以在大多数数据集上在压缩比和压缩速度方面胜过其他算法。
如今,很明显,云计算对基因组分析变得越来越重要。然而,上述工具是为本地使用而开发的。在数据传输到云之前,必须在本地完成压缩。
AdOC 在[14]中提出,是一个通用工具,允许在分布式计算环境中重叠压缩和通信。它提出了一个在传输层进行动态压缩级别适应的模型,可用于资源可用性和带宽变化不可预测的环境中。
通常,通用压缩算法(如 AdOC)的压缩性能对于 NGS 数据集来说是不令人满意的。
在本文中,我们提出了一种名为 GTZ 的工具,它被定义为一种无损且高效的压缩工具,可与云计算一起用于大规模基因组数据分析:
-
GTZ 利用上下文模型技术结合多种预测建模方案。它采用并行处理来提高压缩速度。
-
GTZ 可以将目录或文件夹压缩成一个称为多流文件系统的存档。这种一体化方案可以满足传输、验证和存储的目的。
-
GTZ 支持对文件或存档进行随机访问。GTZ 利用块存储,使用户可以从 FASTQ 文件中提取一些基因组序列的部分或从文件夹中提取一些文件,而无需完全解压缩压缩存档。
-
GTZ 可以在压缩过程中将压缩块传输到云存储,这是与其他压缩工具相比的一项新功能。这一功能使得数据传输时间可以大大缩短压缩和数据传输到云端所需的总时间。例如,它可以在 14 分钟内将一个 200GB 的 FASTQ 文件压缩并传输到 AWS 和阿里巴巴云存储等云存储中。
-
GTZ 提供了一个 Python API,用户可以通过该 API 灵活地将 GTZ 集成到自己的应用程序中。
在本文的剩余部分中,我们将介绍 GTZ 的工作原理,并使用 AWS 服务在几个基准数据集上评估其性能。
方法
GTZ 支持并行高效压缩、并行传输和随机提取。图 1 展示了 GTZ 处理的工作流程。
GTZ 涉及客户端和云端的程序。
客户端执行以下步骤:
(1) 以大数据文件流的形式读取。
(2) 通过将数据流分成三个子流(元数据、基本序列和质量分数)对输入进行预处理。
(3) 在本地内存中缓冲子流,并将它们组装成具有固定大小的不同类型的数据块。
(4) 压缩已组装的数据块及其描述,然后将输出块传输到云存储。
在云端,执行以下步骤:
(1) 创建三种面向对象的容器类型(如图 2 所示),定义树结构。
(2)循环等待接收客户端发送的输出块。
图 1 GTZ 的工作流程
(3)根据类型将接收到的输出块保存到块容器中。
(4) 如果不再收到输出块,则停止。
我们将在下面更详细地解释有关处理 FASTQ 文件的所有步骤:
客户端正在读取大型数据文件的流。
原始 NGS 数据文件通常以 FASTQ 格式存储,以便压缩。典型的 FASTQ 文件包含每个序列四行:第 1 行以字符'
'开头,后跟序列标识符;第 2 行包含由 A、C、
和 G 组成的原始序列;第 3 行以字符'+'开头,可选择地后跟相同的序列标识符(和任何描述);第 4 行包含与第 2 行中序列字符对应的 ASCII 字符质量分数。表 1 中给出了一个读取的示例。
数据预处理
在第二步中,数据流被分割为元数据子流、碱基序列子流和质量

表 1 FASTQ 文件的格式
|
@ERR194147.1.HSQ1004:134:C0D8DACXX:1:1104:3874:86,238/1 |
2 |
GGTTCCTACTTNAGGGTCATTAAATAGCCCACACGTC |
3 |
+ |
4 |
 |
分数子流。(由于无信息的注释行通常不提供任何有用的压缩信息,因此在预处理期间省略了注释流。)三种类型的日期预处理控制器缓冲子流,并分别以固定大小保存在数据块中。然后,带有注释的数据块(关于块数、块大小和流类型)被发送到相应的压缩单元。图 3 展示了如何借助预处理控制器和压缩单元预处理数据文件。
压缩数据
GTZ 是一种通用压缩工具,使用统计建模(http://marknelson.us/1991/02/01/算术编码统计建模数据压缩/)和算术编码。
统计建模可以分为两种类型:静态和自适应统计建模。传统方法通常是静态的,这意味着概率是在从头到尾扫描序列后计算的。静态建模保留一个静态表,记录字符频率计数。尽管它们产生相对准确的结果,但缺点是显而易见的:
-
在压缩之前,将所有序列读入主内存是耗时的。
-
如果输入流与先前累积的序列不匹配,压缩比将降低,甚至输出流可能比输入流更大。
在 GTZ 中,我们采用基于上下文建模的自适应统计数据压缩技术。自适应建模无需在编码之前扫描整个序列并生成概率。相反,自适应预测技术提供了即时的读取和压缩,即概率是基于已读入内存的字符计算的。随着扫描更多字符,概率可能会改变。最初,自适应统计建模的性能可能较差,因为读取不足。然而,随着更多序列的处理,预测往往更准确。
每次压缩器对字符进行编码时,都会更新预测表中的计数器。当一个新字符
(假设
之前的序列是
)出现时,GTZ 将遍历预测表,找到之前跟随过
的每个字符,并比较它们的出现频率。例如,如果 ABCDX 都出现了 10 次,而
只出现了一次。那么 GTZ 将为
分配更高的概率。
自适应模型的工作流程如图 4 所示。方框“更新模型”表示将低阶建模转换为高阶建模(低阶和高阶的含义将在下一小节讨论)。
自适应预测建模可以有效减少压缩时间。无需一次性读取所有序列,它引入了扫描和压缩的重叠。
GTZ 利用特定的压缩单元来处理不同类型的数据块:用于基因序列的低阶编码器,用于质量分数的多阶编码器以及用于元数据的混合编码器。最终,在此过程中输出的是固定大小的数据块。
算术编码的主要思想是将读取转换为介于零到一之间的浮点数(精确地说是大于或等于零且小于一),这取决于字符的预测概率。如果统计建模准确地估计了每个字符对于压缩器的影响,我们将获得高压缩性能。相反,糟糕的预测可能导致原始序列的扩展,而不是压缩。因此,压缩器的性能在很大程度上取决于统计建模是否能够输出接近最佳的预测概率。
用于读取的低阶编码器
自适应建模的最简单实现是零阶。确切地说,它不考虑任何上下文
图 3 使用预处理控制器和压缩单元对数据文件进行预处理
图 4 典型统计建模的工作流程
因此,这种目光短浅的建模只能看到当前字符,并做出独立于先前序列的预测。同样,一阶编码器是基于前一个字符进行预测的。因此,低阶建模对压缩器的性能几乎没有贡献。它的主要优势在于内存效率很高。因此,对于没有空间局部性的质量分数流,低阶建模对于中等压缩率是足够的。
我们为读取量身定制的低阶编码器在图 5 中得到展示。第一步是使用 BWT 算法转换序列。BWT(Burrows-Wheeler 变换)将读取重新排列为相似字符的运行。在第二步中,使用零阶和一阶预测模型来计算每个字符的出现概率。由于较差的概率准确性会导致不良的编码结果,我们在对加权平均概率进行量化后添加插值,以减少预测错误并提高压缩比。在最后一个步骤中,位算术编码算法产生从零到一的十进制数作为输出来表示序列。
用于质量分数的多阶编码器
统计建模需要算术算法的非均匀概率分布。高阶建模使那些频繁出现的字符具有较高的概率,而那些不经常出现的字符具有较低的概率。因此,与低阶编码器相比,高阶编码器可以增强自适应建模。
高阶建模考虑当前位置之前的几个字符。它可以在更多内存使用的代价下获得更好的压缩性能。由于有限的内存容量,高阶建模较少使用,这不再是问题。
没有转换,用于质量评分的多阶编码器(见图 6)包括两个过程:
首先,为了生成字符的概率,输入流通过一个扩展字符概率预测模型,该模型由一阶、二阶、四阶、六阶预测模型和匹配模型组成。与低阶编码器类似,字符的概率经过加权平均、量化和插值以获得最终结果。其次,我们使用位算术编码算法进行压缩。
对于元数据子流,GTZ 首先使用定界符(标点符号)将它们分割成不同的段落,然后根据它们的字段使用不同的方式处理元数据:
对于按升序或降序排列的数字,我们采用增量编码来表示一个元数据与其前面邻居之间的变化。例如,'3458644'将被压缩为 3,1,1,3,-2,-2,0。对于连续相同的字符,我们利用有限重复次数编码来显示它们的值和数量。
图 5 低阶编码器方案
图 6 多阶编码器方案
重复。对于具有不同精度的随机数,我们通过 UTF-8 编码将它们的格式转换而不添加任何分隔符,然后使用低阶编码器进行压缩。否则,使用低阶编码器来压缩元数据。
总之,在这个过程中,子流被馈送到一个动态概率预测模型和算术编码器中,并被转换成固定大小的压缩块。
数据传输
主要目标是将输出块传输到特定的云存储平台,并附带有关数据块类型、大小、数量的注释。
请注意,不同类型的编码器可能导致压缩速度不一致,这可能导致数据管道阻塞。因此,在我们的系统中,管道过滤器模式旨在同步输入和输出速度,例如,当输入流的速度快于输出流时,输入流将被阻塞;当没有输入流时,管道也将被阻塞。
云端存储 - 创建面向对象的嵌套容器系统
GTZ 将容器创建为存储隔间,提供了一种管理实例和存储文件目录的方式。它们以树形结构组织。容器可以嵌套以表示实例的位置:根容器代表完整的压缩文件;块容器包括不同类型的子流容器,其中存储特定实例。嵌套结构如图 2 所示。
根容器表示一个 FASTQ 文件,它包含
个块容器,每个块容器包括元数据子容器、碱基序列子容器和质量分数子容器。元数据子容器嵌套重复数据块、随机数据块、增量数据块等。碱基序列子容器和质量分数子容器嵌套 0 个实例块到
个实例块。以碱基序列为例,0 到(N-1)输出块存储在第 0 个块容器中,
到(
)输出块存储在第 1 个块容器中,依此类推。
表 2 描述了用于性能评估的 8 个 FASTQ 数据集
Dataset |
Species |
参考基因组大小 |
Encoding |
数据文件中的质量分数数量 |
ERR233152 |
铜绿假单胞菌 |
556 |
Sanger |
32 |
SRR935126 |
A. thaliana |
9755 |
Sanger |
39 |
SRR489793 |
C. elegans |
12,807 |
伊利米纳 1.8+ |
38 |
SRR801793 |
L. pneumophila |
2756 |
Sanger |
38 |
SRR125858 |
H. sapiens |
50,744 |
Sanger |
39 |
SRR5419422 |
RNA 序列 (H. sapiens) |
15,095 |
伊利米纳 1.8+ |
6 |
ERR1137269 |
metagenomes |
56,543 |
伊利米纳 1.8+ |
7 |
NA12878(读取 2) |
H. sapiens |
202,631 |
Sanger |
38 |
表 3 不同工具在 8 个 FASTQ 数据集上的压缩比率
Dataset |
压缩比率 (%) |
|
|
|
|
|
GTZ |
DSRC2 |
QUIP |
LW-FQZip |
Fqzcomp |
LFQC |
pigz |
ERR233152 |
15.9 |
16.7 |
19 |
19 |
16.8 |
|
26.4 |
SRR935126 |
18.6 |
19.6 |
17.7 |
20.5 |
17.8 |
|
30.2 |
SRR489793 |
22.8 |
22.7 |
22.6 |
25.5 |
22.5 |
|
34.4 |
SRR801793 |
21.4 |
21.9 |
21.1 |
21.2 |
20.8 |
|
34.1 |
SRR125858 |
19.4 |
19.5 |
18.9 |
23.1 |
28.9 |
|
31 |
SRR5419422 |
12.8 |
13.9 |
10.9 |
12.5 |
12 |
ERROR |
22 |
ERR1137269 |
12.2 |
13.4 |
12.8 |
14.3 |
11.9 |
ERROR |
21.9 |
NA12878(读取 2) |
19.8 |
24 |
20.4 |
TLE |
19.9 |
TLE |
24.7 |
avg |
17.86 |
18.96 |
17.93 |
19.44 |
18.83 |
|
28.09 |
SD |
3.87 |
3.97 |
4.07 |
4.64 |
5.60 |
3.62 |
5.05 |
CV |
0.22 |
0.21 |
0.23 |
0.24 |
0.30 |
0.30 |
|
所有工具的最佳结果都是加粗显示的
这种层次结构允许用户维护目录结构以管理压缩文件,从而便于随机访问特定序列。在这里,我们展示如何从压缩存档中解压缩和提取目标文件:在解压缩模式下,系统将索引起始行号
(由用户通过命令行给出),然后从相应的块容器中提取特定序列,并压缩特定行数的序列(也由用户指定)。
接收数据 - 接收并存储输出块
云存储平台接收输出块和描述性信息,如数据块数量、数据块大小,最重要的是数据块中每个基本序列的行号。该描述使我们能够直接通过行号索引特定序列并解码其关联的块,而不是提取整个文件。输出块存储在相应类型的容器中。
值得注意的是,非 FASTQ 文件也可以通过 GTZ 进行压缩和传输。此外,GTZ 使用面向对象的编程,不受限制
图 7 不同工具与特定类型的云存储平台交互的压缩比的 CV,但适用于大多数现有的云存储平台,如亚马逊网络服务和阿里巴巴云。
结果和讨论
在本节中,我们在一台 32 核 AWS R4.8xlarge 实例上进行了实验,内存为
,以评估 GTZ 的压缩比和压缩速度性能。在实验过程中,应注意以下几点:
(1)考虑到我们的方法是无损的,我们排除了允许损失的方法作为对应方法。
(2)NGS 数据可以存储为 FASTQ 或 SAM/BAM 格式,我们只考虑针对 FASTQ 格式文件的工具。
将对不重新排序输入序列的算法进行比较。
我们对 8 个公开可访问的 FASTQ 数据集进行了测试,这些数据集是从由 NCBI 发起的 Sequence Read Archive(SRA)和 GCTA 竞赛网站(https://tianchi.aliyun.com/mini/challenge.htm#training-profile)下载的。为了确保我们评估的全面性,我们选择了异质的数据集:数据集的大小范围从
到 202,
;选择了不同物种和不同类型的数据,包括 DNA reads,一个 Homo sapiens 的 RNA-seq 数据集,一个宏基因组数据集和 NA12878 的 read 2(GCTA 竞赛数据集)。选择了不同的质量分数编码方法,如 Sanger 和 Illumina
,以涵盖数据集中不同数量的质量分数。质量分数与错误概率呈对数关系,导致比元数据和 reads 更大的字母表,因此具有较少质量分数的编码通常有更高的压缩性能。描述
表 4 不同工具在 8 个 FASTQ 数据集上的压缩时间
Dataset |
|
压缩时间(秒) |
|
DSRC2 |
QUIP |
LW-FQZip |
Fqzcomp |
LFQC |
pigz |
ERR233152 |
556.1 |
19 |
13 |
10 |
284 |
13 |
297 |
3 |
SRR935126 |
9754.6 |
49 |
40 |
195 |
3966 |
191 |
3610 |
129 |
SRR489793 |
12,807 |
51 |
49 |
343 |
4893 |
289 |
4253 |
122 |
SRR801793 |
2756.2 |
43 |
28 |
59 |
1212 |
73 |
1143 |
22 |
SRR125858 |
|
178 |
153 |
1044 |
18,300 |
977 |
10,202 |
481 |
SRR5419422 |
|
26 |
7 |
329 |
4234 |
267 |
ERROR |
67 |
ERR1137269 |
56,543 |
117 |
32 |
806 |
12,018 |
851 |
ERROR |
213 |
NA12878(读取 2) |
202,631 |
820 |
700 |
4703 |
TLE |
4389 |
TLE |
620 |
平均速度(MB/s) |
|
267.4 |
648.8 |
49.7 |
2.9 |
49.6 |
33.7 |
176.8 |
所有工具的最佳结果都是加粗显示的
数据集列在表 2 中。此外,为了比较,基于全面的文献调查,我们选择了四种最先进和广泛使用的无损压缩算法,包括 DSRC2 [12](DSRC [10]的改进版本),quip [4],LW-FQZip [5],Fqzcomp [6],LFQC [15]和 pigz。其中,LW-FQZip [5],Fqzcomp [15]是基于参考的工具的代表;DSRC2 [12]和 quip [4]是无参考方法;pigz 是用于压缩的通用工具。所有实验结果都包含在附加文件 1 中。
评估结果
我们通过以下相关指标评估了不同工具的性能:压缩比、压缩比的变异系数(CV)、压缩速度、压缩和传输到云存储的总时间。具体而言,压缩比定义如下:
根据这一定义,较小的压缩比代表在尺寸缩减方面更有效的压缩;变异系数(CV)代表与均值相关的变异程度,定义为标准差(SD)除以平均值(avg)的比率:
较小的 CV 显示出更好的稳健性和稳定性;此外,GTZ 不仅在本地计算机上压缩表现良好,而且在传输到云存储时也获得了令人满意的结果。在本地计算机上,压缩速度被选为评估指标,可以通过用于压缩的时间来简单衡量(对于应用于相同数据的不同工具)。在后一种情况下,算法的运行时间应为压缩和传输时间之和,即从开始压缩到传输到云端完成为止。
压缩比
性能评估结果显示在表 3 中,最佳压缩比和最佳 CV(最小值)被加粗显示。CV 的比较结果显示在图 7 中。
请注意,在表 3 中,一些关于数据集 NA12878(读取 2,一个非常大的数据集)的字段填写为“TLE”(时间限制已超过,阈值经验性地设置为 6 小时),
表 5 不同工具在 8 个 FASTQ 数据集上的总时间,带宽最大
Dataset |
|
压缩时间(秒)+ 数据最佳上传时间 |
|
DSRC2 |
QUIP |
LW-FQZip |
Fqzcomp |
LFQC |
pigz |
ERR233152 |
556.1 |
19.0 |
13.4 |
10.4 |
284.4 |
13.4 |
297.4 |
3.4 |
SRR935126 |
9754.6 |
49.0 |
48.8 |
202.8 |
3973.8 |
198.8 |
3617.8 |
136.8 |
SRR489793 |
12,807 |
51.0 |
59.2 |
353.2 |
4903.2 |
299.2 |
4263.2 |
132.2 |
SRR801793 |
2756.2 |
43.0 |
30.2 |
61.2 |
1214.2 |
75.2 |
1145.2 |
24.2 |
SRR125858 |
|
178.0 |
193.6 |
1084.6 |
|
1017.6 |
|
521.6 |
SRR5419422 |
|
26.0 |
19.1 |
341.1 |
4246.1 |
279.1 |
ERROR |
79.1 |
ERR1137269 |
56,543 |
117.0 |
77.2 |
851.2 |
|
896.2 |
ERROR |
258.2 |
NA12878(读取 2) |
202,631 |
820.0 |
862.1 |
4865.1 |
TLE |
4551.1 |
TLE |
782.1 |
平均速度(MB/s) |
|
269.3 |
269.1 |
45.2 |
7.8 |
47.9 |
17.9 |
181.1 |
所有工具的最佳结果都是加粗显示的
在实际测试中,SRR125858_2 数据集上不同工具的总时间表 6
Metrics |
比较方法 |
GTZ |
DSRC2 |
QUIP |
|
Fqzcomp |
LFQC |
pigz |
|
19.2 |
19.2 |
18.7 |
23.2 |
28.7 |
18 |
30.7 |
总时间(秒) |
99 |
122 |
553 |
9283 |
549 |
4982 |
324 |
在 SRR5419422、ERR137269 数据集上,LFQC 工具的一些字段填充为“错误”(无法在压缩后解压缩,这两个数据集分别代表 RNA 序列和宏基因组数据)。这些“异常值”代表了低鲁棒性(为了方便 CV 计算,我们只过滤掉“TLE”和“错误”)。例如,LFQC [15] 在 8 个数据集中的 5 个数据集上取得了最佳结果。然而,在三个数据集上出现了“TLE”,这意味着在压缩效率方面稳定性较差。此外,尽管 pigz 的 CV 最低,但其平均压缩比排名垫底。此外,GTZ 的平均压缩比排名第二,CV 远低于 LFQC [15](具有最佳压缩比)。总之,GTZ 不仅保持了比大多数同行更好的平均压缩比,而且在处理不同数据集时表现出更好的稳定性和鲁棒性。
压缩速度
压缩速度测试的结果显示在表 4 中,最佳结果已加粗显示。LFQC [15] 和 LW-FQZip [5] 未能在
内对 GCTA 数据集 NA12878(读取 2)进行压缩(经验设置)。在数据集 SRR5419422 和 ERR137269 上,LFQC 生成的压缩文件无法解压缩,被视为错误(可能是因为 SRR5419422 是 RNA 数据集,ERR137269 是宏基因组数据集)。表 4 显示,基于参考的方法 LW-FQZip [5] 和 LFQC [15] 在像 NA12878(读取 2)这样的大数据集上非常慢。代表参考无方法的 DSRC2 [12] 在平均压缩速度方面表现最佳。GTZ 在压缩时间方面排名第二。
然而,我们主要关注的是压缩和传输的总时间。在数据传输吞吐量最佳(AWS 设置为
)的情况下,我们测试并估计了所有工具的总时间,结果列在表 5 中。需要注意的是,这是一个非常乐观的优化。在这里,只有 GTZ 支持在压缩的同时上传数据,其他工具必须在提交之前完成压缩。我们可以看到 GTZ 的平均压缩和上传速度(269.3 MB/s)最高,DSRC2 以平均速度
排名第二。总的来说,如果输入数据大小是
表 7 定性性能摘要
Algorithm |
压缩速度 |
压缩比 |
GTZ |
High |
Moderate |
DSRC2 |
High |
Moderate |
QUIP |
Moderate |
Moderate |
LW-FQZip |
Low |
Moderate |
Fqzcomp |
Moderate |
Low |
LFQC |
Moderate |
Low |
pigz |
High |
High |
非常大,GTZ 将比 DSRC2 更快:在 SRR125858 数据集(一个 50GB 数据集)的情况下快 7%。
值得注意的是,上传时间是根据最大带宽估算的,而在实践中,上传速度可能比这慢得多。为了验证这一点,我们使用相对较大的数据集 SRR125858_2.fastq(约为 SRR125858 数据集的一半)进行了真实上传测试,其大小为
。 GTZ 和 DSRC2 在这个数据集上的压缩比恰好相同。 GTZ 花了
完成压缩和传输,而 DSRC2 花了
。我们对快速上传的乐观估计仅需
,而在实践中,大约需要
。 详细信息列在表 6 中。
在表 7 中,我们展示了所有工具的定性性能总结。参数高、中、低显示了不同工具之间的比较。如果一个工具的压缩比很高,那么它是最佳压缩器或接近已知的最佳算法。GTZ 在测试数据集上在压缩比和压缩速度(以及考虑数据上传的总时间)方面均取得了令人满意的结果。
不同数据部分的压缩率
GTZ 在 FASTQ 文件的三个部分上的压缩率报告在表 8 中。
表 8 GTZ 在 FASTQ 文件的三个组件上的压缩比率
Dataset |
压缩比率 (%) |
|
Metadata |
Reads |
质量分数 |
ERR233152 |
2.62 |
20.6 |
20.8 |
SRR935126 |
3.29 |
22.2 |
25.3 |
SRR489793 |
0.01 |
22.7 |
29.95 |
SRR801793 |
3.73 |
23.15 |
31.1 |
SRR125858 |
2.81 |
23.3 |
28.25 |
SRR5419422 |
0.01 |
22.9 |
9.5 |
ERR1137269 |
3.23 |
24.05 |
19.35 |
NA12878(读取 2) |
7.59 |
20.4 |
27.3 |
Average |
2.91 |
22.39 |
23.94 |
结论
NGS 技术的快速发展给存储和传输基因组序列带来了挑战。高效的压缩工具是解决这一问题的可行方案。因此,本文提出了一种用于云计算 FASTQ 文件的高效无损压缩工具 GTZ。GTZ 是 GCTA 比赛的冠军解决方案(报告可在 http:// vcbeat.net/35028.html 找到)。GTZ 将上下文建模技术与多种预测建模方案相结合。它还引入了并行处理技术,以提高压缩的效率和稳定性。此外,它还能够对某些特定读取进行随机访问。通过块存储,用户可以仅压缩和读取基因组序列的部分内容,而无需对原始 FASTQ 文件进行完全解压缩。另一个重要特性是它可以将数据传输与压缩过程重叠,从而大大缩短所需的总时间。
我们评估了 GTZ 在八个真实的 FASTQ 数据集上的性能,并将其与其他最先进的工具进行了比较。实验结果验证了 GTZ 在压缩率和压缩速度方面表现良好,并且其性能在不同数据集上保持稳定。GTZ 成功地将一个 200GB 的 FASTQ 文件压缩并传输到 AWS 和阿里巴巴云等云存储中。
未来,我们将研究 DSRC2 如何在云环境中通过利用 GTZ 提出的数据分割和优化技术来优化,DSRC2 在单独压缩方面表现出良好性能。
附加文件
附加文件 1:压缩比、压缩时间和
资助
本文发表得到了中国国家自然科学基金资助(No.31501073,No.81522048,No.81573511),国家重点研发计划资助(No.2016YFC0905000),以及 Genetalks 生物科技有限公司的支持。
数据和材料的可获得性
GTZ 可在 https://github.com/Genetalks/gtz 免费获取。
关于本补充内容
本文作为 BMC 生物信息学第 18 卷第 16 期的一部分发表,2017 年:第 16 届国际生物信息学会议(InCoB 2017):生物信息学。该补充内容的全部内容可在线获取,网址为 https://bmcbioinformatics.biomedcentral.com/articles/supplements/volume-18-supplement-16。
作者贡献
邢宇婷博士、李根博士和吴成坤博士开发了算法并起草了手稿;他们与王振国和冯博伦一起开发了 GTZ 的代码;宋卓博士和吴成坤博士提出了项目的想法,为测试准备了 8 个 FASTQ 数据集,起草了讨论并修订了整个手稿。所有作者都已阅读并批准了手稿。
道德批准和参与同意
不适用。
出版同意
不适用。
竞争利益
作者声明他们没有竞争利益。
出版商注意事项
Springer Nature 在已发表的地图和机构隶属方面保持中立。
发布日期:2017 年 12 月 28 日
参考文献
-
Daily K, Rigor P, Christley S, Xie X, Baldi P. 高通量测序技术的数据结构和压缩算法。BMC 生物信息学。BioMed Central Ltd; 2010;11:514。
-
Kozanitis C, Saunders C, Kruglyak S, Bafna V, Varghese G. 使用 SLIMGENE 压缩基因组序列片段。J Comput Biol。2010;18:401-13。
-
Pinho AJ,Pratas D,Garcia SP。GReEn:一种用于有效压缩基因组重测序数据的工具。核酸研究 2012 年;40:e27-7。
-
Jones DC,Ruzzo WL,Peng X,Katze MG。通过高效的新组装辅助下一代测序读数的压缩。核酸研究 2012 年;40:e171-1。
-
张洋,李磊,杨洋,杨欣,何帅,朱忠。FASTQ 数据的轻量级基于参考的压缩。BMC 生物信息学。2015 年;16:188。
-
Bonfield JK,Mahoney MV。FASTQ 和 SAM 格式测序数据的压缩。Gormley M,编辑。PLoS One。2013;8:e59190-10。
-
Grumbach S,Tahi F。DNA 序列的压缩。在:I.N.R.I.A; 1994。
-
Ziv J,Lempel A。用于顺序数据压缩的通用算法。IEEE Trans Inf Theory。1977;IT-23:337-43。
-
Grumbach S,Tahi F。压缩算法的新挑战:基因序列。信息处理管理。1994;30:875-86。
-
Deorowicz S,Grabowski S。FASTQ 格式 DNA 序列读数的压缩。生物信息学。2011;27:860-2。
-
Huffman DA。一种构建最小冗余码的方法。IRE 会议记录。1952;40:1908-11。
-
Roguski L,Deorowicz S. DSRC 2-面向行业的 FASTQ 文件压缩。生物信息学。2014;30:2213-5。
-
Hach F,Numanagic I,Alkan C,Sahinalp SC。SCALCE:使用局部一致编码增强序列压缩算法。生物信息学。2012;28:3051-7。
-
Jeannot E,Knutsson B。自适应在线数据压缩。在:第 IEEE 国际高性能分布式计算研讨会论文集; 2017。页 1-10。
-
Nicolae M,Pathak S,Rajasekaran S。LFQC:一种用于 FASTQ 文件的无损压缩算法。生物信息学。2015;31:3276-81
将您的下一篇手稿提交给 BioMed Central,我们将在每一步为您提供帮助:
在 www.biomedcentral.com/submit 提交您的手稿
条款和条件
Springer Nature 期刊内容,由 Springer Nature 客户服务中心 GmbH("Springer Nature")提供。
Springer Nature 支持作者、订户和授权用户("用户")合理分享研究论文的数量,供个人小规模、非商业用途使用,前提是所有版权、商标和服务标记以及其他专有通知均得到保留。通过访问、分享、接收或以其他方式使用 Springer Nature 期刊内容,您同意遵守这些使用条款("条款")。对于这些目的,Springer Nature 认为学术使用(研究人员和学生)属于非商业用途。
这些条款是补充性的,并将适用于任何适用的网站条款和条件、相关的网站许可证或个人订阅。这些条款将优先适用于与相关条款、网站许可证或个人订阅有关的任何冲突或模糊之处(仅限于冲突或模糊之处)。对于采用知识共享许可证的文章,将适用所使用的知识共享许可证的条款。
我们收集和使用个人数据以提供对斯普林格自然期刊内容的访问。我们还可能在 ResearchGate 和斯普林格自然内部使用这些个人数据,并按照约定的方式以匿名方式分享,用于跟踪、分析和报告目的。除非根据隐私政策中详细说明获得您的许可,否则我们不会在 ResearchGate 或斯普林格自然集团以外披露您的个人数据。
尽管用户可以将斯普林格自然期刊内容用于小规模、个人非商业用途,但重要的是用户不得:
-
以提供其他用户定期或大规模访问的目的或作为规避访问控制的手段使用此类内容;
-
在任何司法管辖区被视为刑事犯罪或违法行为,或导致民事责任,或以其他方式非法使用此类内容;
-
除非 Springer Nature 在书面上明确同意,否则不得虚假或误导地暗示或暗示认可、批准、赞助或关联
-
使用机器人或其他自动方法访问内容或重定向消息
-
覆盖任何安全功能或排他性协议;或
-
共享内容以创建施普林格自然产品或服务的替代品,或者创建施普林格自然期刊内容的系统数据库。
符合商业使用限制,施普林格自然不允许创建从我们的内容或其作为付费服务的一部分或其他商业利益中产生收入、版税、租金或收入的产品或服务。施普林格自然期刊内容不得用于馆际互借,图书馆员不得将施普林格自然期刊内容大规模上传到他们自己或任何其他机构的存储库中。
这些使用条款定期进行审查,可能随时进行修改。施普林格自然没有义务在本网站上发布任何信息或内容,并可随时自行决定是否删除信息、功能或功能,无论是否通知。施普林格自然可能随时撤销您的许可,并删除已保存的任何施普林格自然期刊内容的访问权限。
在法律允许的最大范围内,施普林格自然公司对用户不作任何明示或暗示的保证、陈述或担保,涉及施普林格自然期刊内容的所有各方均放弃并放弃任何法律规定的隐含保证或保证,包括适销性或适用于任何特定目的。
请注意,这些权利不会自动延伸到可能从第三方许可的施普林格自然发布的内容、数据或其他材料。
如果您希望将我们的施普林格自然期刊内容用于更广泛的受众或定期使用,或以这些条款未明确允许的任何其他方式使用或分发,请联系施普林格自然。