常见问题
基本问题
fq-compressor 是什么?
fq-compressor 是一个高性能 FASTQ 压缩工具,使用领域特定算法(序列使用基于组装的压缩,质量值使用统计上下文混合)实现接近理论极限的压缩比,同时支持随机访问和并行处理。
与 gzip/zstd 相比如何?
通用压缩器将 FASTQ 数据视为任意文本。fq-compressor 利用测序数据的生物学结构,实现比通用压缩器高 3-5 倍的压缩比。详见性能基准页面。
是无损的吗?
是的。fq-compressor 默认执行完全无损压缩。每个碱基、质量值和标识符都会被精确保留。
兼容性
支持哪些 FASTQ 格式?
- 标准 4 行 FASTQ(
.fastq、.fq) - Gzip 压缩的 FASTQ(
.fastq.gz、.fq.gz) - Bzip2 压缩的 FASTQ(
.fastq.bz2、.fq.bz2) - XZ 压缩的 FASTQ(
.fastq.xz、.fq.xz) - 单端(SE)和双端(PE)数据
- Illumina、BGI 和其他常见标识符格式
Zstandard 压缩的 FASTQ 输入(
.zst)暂未支持。
支持哪些 read 长度?
fq-compressor 处理所有 read 长度,但使用不同策略:
| Read 长度 | 策略 |
|---|---|
| 短读(≤ 511 bp) | 完整 ABC 压缩 + 重排序 |
| 中等(512 bp – 10 KB) | Zstd 压缩,无重排序 |
| 长读(> 10 KB) | Zstd 压缩,无重排序 |
.fqc 文件可以被其他工具使用吗?
不能 — .fqc 是自定义格式。需要使用 fqc decompress 解压后才能使用标准生信工具。随机访问功能使得无需完整解压即可方便地提取子集。
性能
应该使用多少线程?
为获得最佳效果,使用物理 CPU 核心数。对于大于 100 MB 的文件,建议使用 --pipeline 标志。
fqc compress -i reads.fastq -o reads.fqc -t 8 --pipeline
需要多少内存?
内存使用取决于 block 大小和在途 block 数量。默认内存限制为 8 GB,可通过 --memory-limit 调整:
fqc compress -i reads.fastq -o reads.fqc --memory-limit 4096 # 4 GB
为什么压缩比解压慢?
压缩涉及计算密集的操作(minimizer 提取、read 重排序、共识生成),这些操作在解压时没有对应的等价操作。这种不对称是设计使然 — 压缩一次,解压多次。
故障排除
解压时出现"格式错误"
确保文件由 fq-compressor 创建且未被损坏:
fqc verify archive.fqc
压缩时内存不足
减少内存限制以强制使用更小的 block 大小:
fqc compress -i reads.fastq -o reads.fqc --memory-limit 2048
构建失败提示"TBB not found"
确保 Conan 正确安装了依赖:
conan install . --build=missing -of=build
学术引用
如何引用 fq-compressor?
如果您在研究中使用了 fq-compressor,请引用 GitHub 仓库:
LessUp. fq-compressor: High-performance FASTQ compression with random access.
https://github.com/LessUp/fq-compressor
基于哪些算法?
- Spring (Chandak et al., 2019) — 基于组装的序列压缩
- Mincom (Liu et al.) — Minimizer 分桶
- fqzcomp5 (Bonfield) — 质量值上下文混合
- HARC (Chandak et al., 2018) — 单倍型感知的重排序