将OBO格式本体解析为networkx
项目描述
obonet: 将OBO格式本体加载到networkx中
在Python中读取OBO格式本体。 obonet
是
- 用户友好
- 简洁
- 符合Python风格
- 现代化
- 简单且经过测试
- 轻量级
networkx
利用
此Python包将OBO序列化本体加载到网络中。函数obonet.read_obo()
接受一个.obo
文件并返回本体networkx.MultiDiGraph
表示。解析器是为OBO规范版本1.2 & 1.4设计的。
用法
有关所需的最低Python版本和依赖项,请参阅pyproject.toml
。OBO文件可以从路径、URL或打开的文件句柄中读取。压缩由路径扩展名推断。请参见以下示例用法
import networkx
import obonet
# Read the taxrank ontology
url = 'https://github.com/dhimmel/obonet/raw/main/tests/data/taxrank.obo'
graph = obonet.read_obo(url)
# Or read the xz-compressed taxrank ontology
url = 'https://github.com/dhimmel/obonet/raw/main/tests/data/taxrank.obo.xz'
graph = obonet.read_obo(url)
# Number of nodes
len(graph)
# Number of edges
graph.number_of_edges()
# Check if the ontology is a DAG
networkx.is_directed_acyclic_graph(graph)
# Mapping from term ID to name
id_to_name = {id_: data.get('name') for id_, data in graph.nodes(data=True)}
id_to_name['TAXRANK:0000006'] # TAXRANK:0000006 is species
# Find all superterms of species. Note that networkx.descendants gets
# superterms, while networkx.ancestors returns subterms.
networkx.descendants(graph, 'TAXRANK:0000006')
有关更详细的教程,请参阅基因本体示例笔记本。
比较
本软件包专注于将OBO文件读取到newtorkx.MultiDiGraph
中。Python中的通用本体到NetworkX读取器可以通过nxontology.imports.pronto_to_multidigraph
函数在nxontology软件包中使用。此函数接受一个pronto.Ontology
对象,可以从OBO文件、OBO Graphs JSON文件或本体网语言2 RDF/XML文件(OWL)加载。使用pronto_to_multidigraph
可以创建一个与obonet
创建的类似的多重有向图,但在保留元数据量方面有一些差异。
nxontology
软件包的主要重点是提供一个NXOntology
类来表示基于networkx.DiGraph
的本体。NXOntology提供了计算节点相似度和其他本体内在度量值的优化实现。NXOntology的DiGraph与obonet产生的多重有向图之间有两个重要差异:
-
NXOntology基于不允许两个相同节点之间存在多个边的DiGraph。因此,必须合并相同两个节点之间的多个边。默认情况下,它只考虑“是...的一个”/
rdfs:subClassOf
关系,但使用pronto_to_multidigraph
创建NXOntology允许保留额外的关系类型,例如基因本体中的“部分”关系。 -
NXOntology反转了关系的方向,使边从超级术语指向子术语。在传统本体中,“是...的一个”关系是从子术语指向超级术语的,但这可能令人困惑。NXOntology反转边,以便函数如“祖先”引用更一般的概念,“后代”引用更具体的概念。
nxontology.imports.multidigraph_to_digraph
函数将多重有向图(如obonet生成的)转换为DiGraph,通过过滤到所需的关系类型、反转边和合并并行边来实现。
安装
推荐的方法是从PyPI安装最新版本:
pip install obonet
但是,如果您想从GitHub安装最新版本,请使用:
pip install git+https://github.com/dhimmel/obonet.git#egg=obonet
贡献
我们欢迎功能建议和社区贡献。目前,仅支持读取OBO文件。
开发
一些开发命令:
# create virtual environment
python3 -m venv ./env
# activate virtual environment
source env/bin/activate
# editable installation for development
pip install --editable ".[dev]"
# install pre-commit hooks
pre-commit install
# run all pre-commit checks
pre-commit run --all
# run tests
pytest
# generate changelog for release notes
git fetch --tags origin main
OLD_TAG=$(git describe --tags --abbrev=0)
git log --oneline --decorate=no --reverse $OLD_TAG..HEAD
维护者可以在https://github.com/dhimmel/obonet/releases/new处发布新版本。
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分发
构建分发
obonet-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | abf5d7bc5d30f4e1548dbdd100e63df7343c9a15f2f1ec839d5142c63b8a150d |
|
MD5 | a599d6b05be9d2db6d67a4be635bf306 |
|
BLAKE2b-256 | 02d54ad1d55da0027d9105f5ca9b31889707d946197a44ffe7526928fc86c8dd |