跳转到主要内容

将OBO格式本体解析为networkx

项目描述

obonet: 将OBO格式本体加载到networkx中

GitHub Actions CI Build Status
Software License
Code style: black
PyPI

在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产生的多重有向图之间有两个重要差异:

  1. NXOntology基于不允许两个相同节点之间存在多个边的DiGraph。因此,必须合并相同两个节点之间的多个边。默认情况下,它只考虑“是...的一个”/rdfs:subClassOf关系,但使用pronto_to_multidigraph创建NXOntology允许保留额外的关系类型,例如基因本体中的“部分”关系。

  2. 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

贡献

GitHub issues

我们欢迎功能建议和社区贡献。目前,仅支持读取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 (25.5 kB 查看哈希值)

上传时间

构建分发

obonet-1.1.0-py3-none-any.whl (9.1 kB 查看哈希值)

上传时间 Python 3

由以下组织支持