本体Python前端。
项目描述
pronto

本体Python前端。
🚩 目录
🗺️ 概述
Pronto 是一个 Python 库,用于解析、浏览、创建和导出本体,支持多种本体语言和格式。它以安全的高级接口形式实现了 开放生物医学本体 1.4 的规范。如果您只想解析 OBO 或 OBO 图文档,可能需要考虑使用 fastobo
。
🏳️ 支持的语言
- 开放生物医学本体 1.4。 由于这种格式相对较新,目前并非所有 OBO 本体都能被解析。请参阅 OBO Foundry 路线图 中列出的兼容本体,并不要犹豫联系他们的开发者以推进采用。
- OBO 图 以 JSON 格式。 该格式尚未稳定,结果可能会因文件而异。
- 本体网络语言 2 以 RDF/XML 格式。 OWL2 本体通过在 OBO 1.4 语义 中定义的映射反向转换为 OBO。
🔧 安装
使用 pip
安装是最简单的
# pip install pronto # if you have the admin rights
$ pip install pronto --user # install it in a user-site directory
在 bioconda
通道中也有一个 conda
食谱
$ conda install -c bioconda pronto
最后,如果您已经安装了正确的依赖项,可以使用 setuptools
从 GitHub 安装开发版本
$ git clone https://github.com/althonos/pronto
$ cd pronto
# python setup.py install
💡 示例
如果您只读取本体,您将只使用 Ontology
类,这是主要入口点。
>>> from pronto import Ontology
它可以从支持格式的本体路径实例化,即使文件是压缩的
>>> go = Ontology("tests/data/go.obo.gz")
也支持从持久 URL 加载文件,尽管如果您经常使用持久 URL,您可能还想使用 Ontology.from_obo_library
方法
>>> cl = Ontology("http://purl.obolibrary.org/obo/cl.obo")
>>> stato = Ontology.from_obo_library("stato.owl")
🏷️ 通过访问号获取术语
Ontology
对象可以用作映射,从它们标识符的紧凑形式访问它们包含的任何实体
>>> cl['CL:0002116']
Term('CL:0002116', name='B220-low CD38-positive unswitched memory B cell')
请注意,当加载 OWL 本体时,URIs 将尽可能压缩为 CURIEs
>>> aeo = Ontology.from_obo_library("aeo.owl")
>>> aeo["AEO:0000078"]
Term('AEO:0000078', name='lumen of tube')
🖊️ 从头创建新术语
我们可以加载一个本体,并对其进行本地编辑。在这里,我们向蛋白质本体中添加了一个新的蛋白质类。
>>> pr = Ontology.from_obo_library("pr.obo")
>>> brh = ms.create_term("PR:XXXXXXXX")
>>> brh.name = "Bacteriorhodopsin"
>>> brh.superclasses().add(pr["PR:000001094"]) # is a rhodopsin-like G-protein
>>> brh.disjoint_from.add(pr["PR:000036194"]) # disjoint from eukaryotic proteins
✏️ 将 OWL 本体转换为 OBO 格式
可以使用 Ontology.dump
方法将本体序列化为支持的任何格式(目前为 OBO 和 OBO JSON)
>>> edam = Ontology("http://edamontology.org/EDAM.owl")
>>> with open("edam.obo", "wb") as f:
... edam.dump(f, format="obo")
🌿 查找没有子类的本体术语
可以使用 Ontology
实例的 terms
方法遍历本体中的所有术语(包括导入的)。然后我们可以使用 Term
对象的 is_leaf
方法检查术语是否是类包含图中的叶节点。
>>> ms = Ontology("ms.obo")
>>> for term in ms.terms():
... if term.is_leaf():
... print(term.id)
MS:0000000
MS:1000001
...
🤫 忽略警告
pronto
明确指出代码中执行非标准假设或缺少处理某些结构的功能的部分。它通过使用 warnings
模块来引发警告,这些警告可能会非常冗长。
如果您不介意不一致性,您可以使用 filterwarnings
函数手动禁用在您的消费者代码中的警告报告
import warnings
import pronto
warnings.filterwarnings("ignore", category=pronto.warnings.ProntoWarning)
📖 API 参考
完整的 API 参考可以在 在线文档 中找到,或者可以直接使用 pydoc
从命令行访问
$ pydoc pronto.Ontology
📜 许可证
此库根据开源 MIT 许可证 提供。如果您在科学环境中使用此库,请引用以下 DOI:10.5281/zenodo.595572
项目详情
下载文件
下载适用于您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
pronto-2.5.8.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 5283ec5b35ddc12d34f2e50098b9900bb7b80172b7f769ccc93f5d82b7022799 |
|
MD5 | 32502c2ca5907878f93b631866a772aa |
|
BLAKE2b-256 | 21cd4b25a0919be39c2dbdd5a6bc7c93c0f22ed955b0c27b11e3d73a74ff0fef |
pronto-2.5.8-py2.py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91445cd2c2000729e9b23be47b1e142fd967239700284f1375ee2b78d54a3416 |
|
MD5 | 94e518e982547ea5aef3a192e9293d2d |
|
BLAKE2b-256 | eebe38d99005ea42725b2440f472ccae4fb73635652bb658db28fb90808f3e49 |