加载、保存和操作分类树的例程
taxonom的Python项目详细描述
分类法
这是一个用于阅读、编写和编辑生物分类法的rust库。有相关的python绑定,用于从python访问大部分功能。
这个库最初是作为codex的元基因组分类管道中的一个组件开发的,然后被重构、扩展和开源。它被设计成可以使用a s和多种分类格式or它提供的分类特性可以用于向下游包的分类实现添加最后的公共祖先、遍历等方法。
该库附带了许多功能:
- [X]跨rust和python的分类处理的通用支持
- [X]快速和低(ER)内存使用率
- [X]NCBI分类法、JSON(“树”和“节点链接数据”格式)、Newick和PhyloXML支持
- [X]易于扩展(在RUST中)以支持其他格式和操作
python用法
python分类api可以打开和操作rust库中的所有格式:
fromtaxonomyimportTaxonomytax=Taxonomy.from_newick('(A,(B,C)D)E;')asserttax.parent('A')=='E'asserttax.parent('B')=='D'
如果本地有ncbi分类法(found on their FTP),也可以使用它:
ncbi_tax=Taxonomy.from_ncbi('./nodes.dmp','./names.dmp')asserttax.name('562')=='Escherichia coli'asserttax.rank('562')=='species'
请注意,ncbi格式的分类法id是整数,但它们在导入时转换为字符串。我们发现使用“字符串分类id”可以大大简化不同分类系统之间的互操作。
安装
生锈
此库可以添加到现有的CARGO.TAML文件中,并直接从CRATES.IO安装。
Python
您可以直接从pypi安装python绑定(二进制文件只为select architextures构建),使用:
pip install taxonomy
开发
生锈
有一个测试套件可以用cargo test
运行。
Python
在mac os x/unix系统上使用python库(需要python 3):
# you need the nightly version of Rust installed curl https://sh.rustup.rs -sSf | sh rustup default nightly # finally, install the library ./setup.py install # (or ./setup.py develop)
构建二进制轮子并推到pypi
# For each supported Python version and architecture combination...
## On a Mac
python setup.py install
python setup.py bdist_wheel
twine upload dist/*
## On Linux
# I built the 0.3.1 wheels with a forked version of pyo3-pack; we should reevaluate the next time
# we build wheels if we can just get this to work with rust-python.
git clone https://github.com/onecodex/pyo3-pack
docker run -it --rm --entrypoint /bin/bash -v .../pyo3-pack:/pyo3pack -v .../taxonomy/:/mnt konstin2/pyo3-pack
cd /pyo3pack
cargo install --path . --force
cd /mnt
rustup default nightly
pyo3-pack build --python-feature-gate python
其他分类库
其他编程语言的分类工具包提供了不同的功能,并为这个库提供了一些灵感:
ete工具包(http://etetoolkit.org/)一个python分类库
^ {EM1}$Trimez(https://ropensci.github.io/taxize-book/)