基于 Rust 的 NCBI taxonomy 自定义过滤与修改工具。
从原始 nodes.dmp / names.dmp 中筛选指定 taxid 的完整 lineage,并支持通过 needChange.dmp 插入新节点或修改已有节点的父节点和分类等级。
- 读取目标 taxid 列表,自动追溯完整 lineage 节点taxid,仅生成目标lineage的taxonomy进行维护即可;
- 支持通过
needChange.dmp自定义修改:插入新节点、修改已有节点的 parent 和 rank; - 默认输出与 NCBI taxdump 格式完全一致的
nodes_filtered.dmp和names_filtered.dmp;
git clone https://github.com/yi1873/customTaxonomy-rs.git
cd customTaxonomy-rs
cargo build --release
# 二进制文件: target/release/custom-taxonomy-rstarget/release/custom-taxonomy-rs \
--taxid-list test/taxid.list \
--need-change test/needChange.dmp \
[--nodes-file /path/to/nodes.dmp] \
[--names-file /path/to/names.dmp] \
[--output-nodes ./nodes_filtered.dmp] \
[--output-names ./names_filtered.dmp]每行定义一条自定义修改规则,格式合并了 names.dmp 和 nodes.dmp 的关键字段:
taxid | name | unique_name | name_type | taxid | parent | rank
13 列详细说明:
| 列号 (0-based) | 内容 | 说明 |
|---|---|---|
| 0 | taxid | 节点 taxid,必须为 uint32 范围 (0 ~ 4,294,967,295) |
| 1 | | |
分隔符 |
| 2 | name | 物种名称 |
| 3 | | |
分隔符 |
| 4 | unique_name | 唯一名称(可为空) |
| 5 | | |
分隔符 |
| 6 | name_type | 名称类型(通常为 scientific name) |
| 7 | | |
分隔符 |
| 8 | taxid | 节点 taxid(重复) |
| 9 | | |
分隔符 |
| 10 | parent | 父节点 taxid |
| 11 | | |
分隔符 |
| 12 | rank | 分类等级 |
示例:
1000000001 | Escherichia-Shigella | | scientific name | 1000000001 | 543 | customrank
561 | Escherichia | | scientific name | 561 | 1000000001 | genus
620 | Shigella | | scientific name | 620 | 1000000001 | genus
上述示例:
- 新增节点
1000000001(Escherichia-Shigella),父节点为543,等级为customrank - 修改已有节点
561(Escherichia),将其父节点改为1000000001,等级为genus - 修改已有节点
620(Shigella),将其父节点改为1000000001,等级为genus
后续使用
kraken2可直接使用;- 可根据
customrank抽提有效reads作基因组覆盖图; - 示例仅用于解决
kraken2中大肠/志贺菌的reads归类于family的问题; - 其他
自定义taxonomy可根据示例进行拓展;