SCM 质量值建模
fq-compressor 将质量值视为独立信号流,并使用 Statistical Context Mixing(SCM)进行压缩。 它的目标不是把质量值硬塞进序列压缩逻辑,而是保留 Phred 分数自身的统计结构。
在 fq-compressor 中的角色
质量字符串与 read ID、碱基序列分开编码。 在无损模式下,压缩器使用自适应算术编码来建模每个质量符号;在允许降低保真度的流程中,也可以先映射到 Illumina 8-bin 方案。 这种拆分使序列压缩和质量压缩可以独立调节,而无需改变归档容器结构。
核心机制
- 符号空间: 先把 ASCII 质量字符转换为 94 个符号的 Phred 值空间。
- 上下文选择: 当前模型由前一到前二个质量值,以及 read 内位置分桶共同决定;默认实现使用二阶上下文与 16 个位置桶。
- 自适应编码: 算术编码逐符号输出,同时在线更新对应模型,因此重复出现的局部转移会越来越便宜。
- 容器阶段: 算术编码后的字节流再经过一层 Zstd,去除剩余的字节级冗余。
对压缩与访问的影响
SCM 有效,是因为 FASTQ 质量值并不是彼此独立的随机符号。 read 前后位置常出现稳定模式,高分或低分之后的转移也会重复出现。 上下文模型把这些规律转成更短的编码,同时在无损模式下保持精确还原。
当前边界
当前公开且已实现的模型主要使用“前序质量值 + 位置”上下文,并在需要时支持 Illumina 8-bin 量化。 头部结构还为其他质量模式预留了空间,但白皮书层面应把自适应 SCM 路径与 Illumina 风格分桶视为当前可证实行为。