本体访问工具包:在多种后端上执行常见本体操作的Python库
项目描述
本体访问工具包(OAK)
用于在多种后端上执行常见本体操作的Python库。
OAK提供了一组接口,用于执行各种本体操作,包括
- 查找本体元素的基本特征,如其标签、定义、关系或别名
- 在本体中搜索一个术语
- 验证本体
- 修改或删除术语
- 生成和可视化子图
- 识别词汇匹配并将其导出为SSSOM映射表
- 执行更高级的操作,例如图遍历、OWL公理处理或文本注释
这些接口与任何特定的后端都相互独立,为此提供了多种不同的适配器。这意味着无论本体是通过以下哪种方式提供,都可以使用相同的Python API和命令行:
- 由远程API(如OLS或BioPortal)提供
- 本地文件系统中的owl、obo、obojson或sqlite格式
- 从远程仓库(如OBO库)下载
- 从远程数据库查询,包括SPARQL端点(Ontobee/Ubergraph)、SQL数据库、Solr/ES端点
文档
贡献
请参阅CONTRIBUTING.md中的贡献指南。所有贡献者都应遵守我们的行为准则。
使用方法
from oaklib import get_adapter
# connect to the CL sqlite database adapter
# (will first download if not already downloaded)
adapter = get_adapter("sqlite:obo:cl")
NEURON = "CL:0000540"
print('## Basic info')
print(f'ID: {NEURON}')
print(f'Label: {adapter.label(NEURON)}')
for alias in adapter.entity_aliases(NEURON):
print(f'Alias: {alias}')
print('## Relationships (direct)')
for relationship in adapter.relationships([NEURON]):
print(f' * {relationship.predicate} -> {relationship.object} "{adapter.label(relationship.object)}"')
print('## Ancestors (over IS_A and PART_OF)')
from oaklib.datamodels.vocabulary import IS_A, PART_OF
from oaklib.interfaces import OboGraphInterface
if not isinstance(adapter, OboGraphInterface):
raise ValueError('This adapter does not support graph operations')
for ancestor in adapter.ancestors(NEURON, predicates=[IS_A, PART_OF]):
print(f' * ANCESTOR: "{adapter.label(ancestor)}"')
有关更多示例,请参阅
命令行
请参阅
搜索
使用pronto后端从OBO库获取并解析本体,然后使用search
命令
runoak -i obolibrary:pato.obo search osmol
返回
PATO:0001655 ! osmolarity
PATO:0001656 ! decreased osmolarity
PATO:0001657 ! increased osmolarity
PATO:0002027 ! osmolality
PATO:0002028 ! decreased osmolality
PATO:0002029 ! increased osmolality
PATO:0045034 ! normal osmolality
PATO:0045035 ! normal osmolarity
质量控制与验证
使用sqlite/rdftab实例对PR进行验证
runoak -i sqlite:../semantic-sql/db/pr.db validate
列出所有术语
列出obolibrary为mondo提供的所有术语
runoak -i obolibrary:mondo.obo terms
词汇索引
为Mondo中的所有术语创建词汇索引
runoak -i obolibrary:mondo.obo lexmatch -L mondo.index.yaml
搜索
使用ontobee在OBO上搜索
runoak -i ontobee: search tentacle
产生
http://purl.obolibrary.org/obo/CEPH_0000256 ! tentacle
http://purl.obolibrary.org/obo/CEPH_0000257 ! tentacle absence
http://purl.obolibrary.org/obo/CEPH_0000258 ! tentacle pad
...
在bioportal上搜索更广泛的本体集合(需要API密钥)(https://www.bioontology.org/wiki/BioPortal_Help#Getting_an_API_key)
runoak set-apikey bioportal YOUR-KEY-HERE
runoak -i bioportal: search tentacle
产生
BTO:0001357 ! tentacle
http://purl.jp/bio/4/id/200906071014668510 ! tentacle
CEPH:0000256 ! tentacle
http://www.projecthalo.com/aura#Tentacle ! Tentacle
CEPH:0000256 ! tentacle
...
或者,您可以将"BIOPORTAL_API_KEY"添加到您的环境变量中。
在Ubergraph上搜索更有限的本体集合
runoak -v -i ubergraph: search tentacle
产生
UBERON:0013206 ! nasal tentacle
标注文本
runoak -i bioportal: annotate neuron from CA4 region of hippocampus of mouse
产生
object_id: CL:0000540
object_label: neuron
object_source: https://data.bioontology.org/ontologies/NIFDYS
match_type: PREF
subject_start: 1
subject_end: 6
subject_label: NEURON
object_id: http://www.co-ode.org/ontologies/galen#Neuron
object_label: Neuron
object_source: https://data.bioontology.org/ontologies/GALEN
match_type: PREF
subject_start: 1
subject_end: 6
subject_label: NEURON
...
映射
为一系列本体创建SSSOM映射文件
robot merge -I http://purl.obolibrary.org/obo/hp.owl -I http://purl.obolibrary.org/obo/mp.owl convert --check false -o hp-mp.obo
runoak lexmatch -i hp-mp.obo -o hp-mp.sssom.tsv
祖先图的可视化
使用sqlite后端通过test本体sqlite可视化从'vacuole'开始的图
runoak -i sqlite:tests/input/go-nucleus.db viz GO:0005773
使用ubergraph,限制为is-a和part-of
runoak -i ubergraph: viz GO:0005773 -p i,BFO:0000050
使用pronto,从obolibrary获取本体
runoak -i obolibrary:go.obo viz GO:0005773
配置
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源分发
oaklib-0.6.17.tar.gz (531.8 kB 查看哈希值)
构建分发
oaklib-0.6.17-py3-none-any.whl (664.9 kB 查看哈希值)
关闭
oaklib-0.6.17.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | db3472a798de1f338f0ec113cc1e2757fec26953e6e544e6253a052aab23cc42 |
|
MD5 | 303a8935ee1dfbf51565dff15286d6db |
|
BLAKE2b-256 | 858935bd9572996d089404b487cea8ef365e35d003aacf84fcb5f5d9c9333370 |