2 个不稳定版本
0.2.0 | 2024年4月10日 |
---|---|
0.1.1 | 2023年10月8日 |
#2048 在 解析器实现
125KB
2.5K SLoC
📦🧬 nafcodec
Rust 编码器/解码器,用于 Nucleotide Archive Format (NAF) 文件.
🗺️ 概述
Nucleotide Archive Format 是 Kryukov 等人于 2019 年提出的一种文件格式,用于存储压缩的核苷酸或蛋白质序列,结合了 4 位编码和 Zstandard 压缩。NAF 文件可以使用 原始的 C 实现 进行压缩和解压缩。
此库提供了对 nafcodec
库的 PyO3 绑定,该库是使用 nom
解析二进制格式和 zstd
处理 Zstandard 解压缩的 NAF 解码器的 Rust 实现。它提供了一个完整的 API,允许遍历 NAF 文件的内容。
这是 Python 版本,还有一个可用的 Rust 库。
📋 特性
- 流式解码器:解码器使用不同的读取器实现,每个读取器访问压缩文件的某个区域,允许流式传输记录而不需要解码整个块。
- 文件类型解码:允许解码器从类似文件的对象而不是路径读取。
以下特性正在计划中
- 可选解码:允许解码器跳过某些字段的解码,例如,当不需要时忽略质量字符串。
- 编码器:实现编码器,使用内存缓冲区或临时文件来扩展归档。
🔌 使用方法
使用一个 nafcodec.Decoder
来遍历核苷酸归档格式的内容,从给定的 路径对象 或 文件对象 读取
import nafcodec
decoder = nafcodec.Decoder("../data/LuxC.naf")
for record in decoder:
print(record.id)
获取到的所有 Record
字段都是可选的,实际上取决于被压缩的数据类型。
💭 反馈
⚠️ 问题追踪器
发现了一个错误?有增强请求吗?如果您需要报告或询问某些内容,请前往 GitHub 问题追踪器。如果您正在提交错误报告,请尽可能提供有关问题的详细信息,并尝试在简单、易于复现的情况下重现相同的错误。
📋 更新日志
该项目遵循 语义化版本控制,并按照 Keep a Changelog 格式提供了 更新日志。
⚖️ 许可证
此库在开源的 MIT 许可证 下提供。NAF 规范属于公共领域。NAF 规范。
本项目与原始的 NAF 作者 无关、未获得赞助或以其他方式获得认可。它是由 Martin Larralde 在 欧洲分子生物学实验室 的 Zeller 团队 进行其博士项目期间开发的。
📚 参考资料
- Kirill Kryukov, Mahoko Takahashi Ueda, So Nakagawa, Tadashi Imanishi. "Nucleotide Archival Format (NAF) enables efficient lossless reference-free compression of DNA sequences". Bioinformatics, Volume 35, Issue 19, October 2019, Pages 3826–3828. doi:10.1093/bioinformatics/btz144
依赖项
~8–17MB
~239K SLoC