Skip to content

ABC 流水线

Assembly-based Compression(ABC)是 fq-compressor 面向短读长序列的核心序列压缩路径。 它把全局重排与块内序列建模组合起来,让相似 reads 更容易落到同一块内,并共享更紧凑的表示。

在 fq-compressor 中的角色

这条路径分成两个阶段。 第一阶段扫描全部 reads,提取规范化 minimizer,判断是否启用短读长重排,并计算 block 边界。 第二阶段对每个 block 独立压缩:ID、序列、质量值和辅助信息分别进入逻辑流,再连同校验信息写入归档。

核心机制

  1. 全局分析: 先按长度特征判断数据类型,再提取 canonical k-mer minimizer,并按哈希分桶。
  2. 重排: 对短读长数据,可将相似 reads 贪心地排到相邻 archive 位置,放大局部序列上下文。
  3. 块压缩: 每个重排后的 block 独立压缩,既控制内存,也保留 O(1) block 级定位能力。
  4. 写入归档: writer 记录 block 元数据、payload 流和索引项,使解压可直接 seek 到目标 block,而不必重放整个文件。

对压缩与访问的影响

ABC 的作用,是先把局部冗余显式地整理出来,再交给后续编码阶段利用。 当相似 reads 被放到一起后,共识/差分表示可以去掉大部分重复碱基,只留下更短的错配信息流。 与此同时,block 边界仍然是随机访问边界,因此压缩率提升并不以放弃直接定位为代价。

当前边界

当前实现中的完整 ABC 路径主要面向短读长数据。 中长读长仍使用同一 block 容器,但序列编码会退回到更直接的 Zstd 路径,而不是短读长共识组装式表示。