加载、保存和操作分类树的例程

taxonom的Python项目详细描述


分类法

PyPI versionCrates versionCircleCI

这是一个用于阅读、编写和编辑生物分类法的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/用于分类数据

的R工具包

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JPA。Eclipselink没有为mySQL提供密码,但它应该提供   我的Servlet和@FormDataParam存在java问题   java将什么作为上下文参数传递到文件I/O方法中?   如果两个值相同,java无法找到其中一个单选按钮   java在变量和方法名中使用下划线   JavaSpringMVC单线程安全?   klazz类的java Arraylist(反射Api)   java如何在数字字符串中查找最频繁的数字?   JavaAPI设计:使数据更易于阅读与强制更多API调用   JavaHadoopMapReduceforGoogleWebGraph   java无法启动gauge API:Runner意外退出   java如何在bluemix上使用ibm工作负载调度器?   拉取一年中某一周特定日期的所有日期   java为什么是我的角节点。js应用程序将图像上传到S3� 邮递员正确上传时的符号?   在不使用任何第三方jar的情况下将文件从本地传输到linux系统(java代码)   java将现有文件夹复制到Eclipse工作区中新创建的项目中   Java中的regex RegExp帮助   当使用“系统”外观时,Java组合框setSelectedItem会出现故障   JavaASM:在类的方法中获取局部变量名和值