解析、验证、编译和生物表达式语言(BEL)的数据交换
项目描述
PyBEL 是一个纯Python包,用于解析和处理编码在 生物表达式语言(BEL)中的生物网络。
它促进了以下数据格式之间的数据交换:如NetworkX、Node-Link JSON、JGIF、CSV、SIF、Cytoscape、CX、INDRA和GraphDati;数据库系统如SQL和Neo4J;以及网络服务如NDEx、BioDati Studio和BEL Commons。它还提供了针对分析工具如HiPathia、Drug2ways和SPIA的导出;机器学习工具如PyKEEN和OpenBioLink等。
其配套软件包PyBEL Tools包含一系列用于分析结果生物网络的函数和管道。
我们意识到,我们与化学信息包OpenBabel的Python包装器存在名称冲突。如果您在寻找他们的Python包装器,请参阅这里。
引用
如果您认为PyBEL对您的工作有帮助,请考虑引用
安装

您可以通过在您的首选shell中运行以下代码轻松地从PyPI安装PyBEL
$ pip install pybel
或从GitHub的最新代码中安装
$ pip install git+https://github.com/pybel/pybel.git
有关更高级的说明,请参阅安装文档。同时,请检查CHANGELOG.rst中的变更日志。
入门指南
更多示例可以在文档和PyBEL Notebooks存储库中找到。
编译和保存BEL图
本例说明了如何从人类脑部药理学项目直接从GitHub加载和编译BEL文档。
>>> import pybel
>>> url = 'https://raw.githubusercontent.com/pharmacome/conib/master/hbp_knowledge/proteostasis/kim2013.bel'
>>> graph = pybel.from_bel_script_url(url)
有关从许多格式加载BEL内容的其他函数,请参阅I/O文档。请注意,PyBEL可以同时处理BEL 1.0和BEL 2.0+。
在您拥有BEL图后,有多种保存它的方法。pybel.dump函数知道如何根据您提供的文件扩展名输出它。有关所有可能性,请参阅I/O文档。
>>> import pybel
>>> graph = ...
>>> # write as BEL
>>> pybel.dump(graph, 'my_graph.bel')
>>> # write as Node-Link JSON for network viewers like D3
>>> pybel.dump(graph, 'my_graph.bel.nodelink.json')
>>> # write as GraphDati JSON for BioDati
>>> pybel.dump(graph, 'my_graph.bel.graphdati.json')
>>> # write as CX JSON for NDEx
>>> pybel.dump(graph, 'my_graph.bel.cx.json')
>>> # write as INDRA JSON for INDRA
>>> pybel.dump(graph, 'my_graph.indra.json')
总结图的目录
BELGraph对象有几个“分派”,即组织其各种功能的属性。其中一个是BELGraph.summarize分派,它允许将摘要打印到控制台。
以下示例将使用来自EMMAA的RAS模型,因此您必须首先确保安装pip install indra。可以使用BELGraph.summarize.statistics()获取并总结图形,如下所示
>>> import pybel
>>> graph = pybel.from_emmaa('rasmodel', date='2020-05-29-17-31-58') # Needs
>>> graph.summarize.statistics()
--------------------- -------------------
Name rasmodel
Version 2020-05-29-17-31-58
Number of Nodes 126
Number of Namespaces 5
Number of Edges 206
Number of Annotations 4
Number of Citations 1
Number of Authors 0
Network Density 1.31E-02
Number of Components 1
Number of Warnings 0
--------------------- -------------------
可以使用BELGraph.summarize.nodes()总结每种类型的节点数,如下所示
>>> graph.summarize.nodes(examples=False)
Type (3) Count
------------ -------
Protein 97
Complex 27
Abundance 2
可以使用BELGraph.summarize.namespaces()总结具有每个命名空间的节点数,如下所示
>>> graph.summarize.namespaces(examples=False)
Namespace (4) Count
--------------- -------
HGNC 94
FPLX 3
CHEBI 1
TEXT 1
可以使用BELGraph.summarize.edges()总结边,如下所示
>>> graph.summarize.edges(examples=False)
Edge Type (12) Count
--------------------------------- -------
Protein increases Protein 64
Protein hasVariant Protein 48
Protein partOf Complex 47
Complex increases Protein 20
Protein decreases Protein 9
Complex directlyIncreases Protein 8
Protein increases Complex 3
Abundance partOf Complex 3
Protein increases Abundance 1
Complex partOf Complex 1
Protein decreases Abundance 1
Abundance decreases Protein 1
图形归一化
并非所有BEL图形都包含每个实体的名称和标识符。有些甚至使用非标准前缀(在BEL中也称为命名空间)。通常,BEL图形会与受控词汇表进行验证,以下演示展示了如何将相应的标识符添加到所有节点中。
from urllib.request import urlretrieve
url = 'https://github.com/cthoyt/selventa-knowledge/blob/master/selventa_knowledge/large_corpus.bel.nodelink.json.gz'
urlretrieve(url, 'large_corpus.bel.nodelink.json.gz')
import pybel
graph = pybel.load('large_corpus.bel.nodelink.json.gz')
import pybel.grounding
grounded_graph = pybel.grounding.ground(graph)
注意:您必须安装pyobo才能使其生效,并且需要运行Python 3.7以上版本。
在Jupyter中显示BEL图形
安装jinja2和ipython后,可以在Jupyter笔记本中显示BEL图形。
>>> from pybel.examples import sialic_acid_graph
>>> from pybel.io.jupyter import to_jupyter
>>> to_jupyter(sialic_acid_graph)
使用解析器
如果您不想使用pybel.BELGraph数据结构,只想将BEL语句转换为JSON以供自己使用,您可以直接使用pybel.parse()函数。
>>> import pybel
>>> pybel.parse('p(hgnc:4617 ! GSK3B) regulates p(hgnc:6893 ! MAPT)')
{'source': {'function': 'Protein', 'concept': {'namespace': 'hgnc', 'identifier': '4617', 'name': 'GSK3B'}}, 'relation': 'regulates', 'target': {'function': 'Protein', 'concept': {'namespace': 'hgnc', 'identifier': '6893', 'name': 'MAPT'}}}
此功能还可以通过安装后使用Flask的Web应用进行公开python -m pybel.apps.parser,安装flask使用pip install flask。请注意,首次运行需要大约2秒的延迟来生成解析器,之后每次解析都非常快。
使用CLI
PyBEL还安装了一个命令行界面,命令为pybel,用于简单的工具,如数据转换。在此示例中,将BEL文档编译然后导出为GraphML,以便在Cytoscape中查看。
$ pybel compile ~/Desktop/example.bel
$ pybel serialize ~/Desktop/example.bel --graphml ~/Desktop/example.graphml
在Cytoscape中,使用导入 > 网络 > 从文件
打开。
贡献
贡献,无论是提交问题、提交拉取请求还是分支,都受到欢迎。有关参与的信息,请参阅CONTRIBUTING.rst。
致谢
支持
PyBEL的开发得到了多个项目/组织的支持(按字母顺序)
资金
DARPA青年学者奖W911NF2010255(负责人:本杰明·M·盖罗伊)。
欧洲联盟、欧洲制药工业联合会(EFPIA)和创新药物倡议联合资助项目下AETIONOMY [资助编号115568],其资源包括来自欧盟第七框架计划(FP7/2007-2013)的资金和EFPIA公司的实物贡献。
标志
PyBEL标志由Scott Colby设计。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。