2 个不稳定版本

0.2.0 2024年4月10日
0.1.1 2023年10月8日

#2048解析器实现

MIT 许可证

125KB
2.5K SLoC

Rust 2.5K SLoC // 0.0% comments Python 319 SLoC // 0.0% comments

📦🧬 nafcodec Stars

Rust 编码器/解码器,用于 Nucleotide Archive Format (NAF) 文件.

Actions Coverage License Docs Crate PyPI Wheel Bioconda Python Versions Python Implementations Source Mirror GitHub issues Changelog Downloads

🗺️ 概述

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