跳转到主要内容

解析、验证、编译和生物表达式语言(BEL)的数据交换

项目描述

PyBEL 是一个纯Python包,用于解析和处理编码在 生物表达式语言(BEL)中的生物网络。

它促进了以下数据格式之间的数据交换:如NetworkX、Node-Link JSON、JGIF、CSV、SIF、CytoscapeCXINDRAGraphDati;数据库系统如SQL和Neo4J;以及网络服务如NDExBioDati StudioBEL Commons。它还提供了针对分析工具如HiPathiaDrug2waysSPIA的导出;机器学习工具如PyKEENOpenBioLink等。

其配套软件包PyBEL Tools包含一系列用于分析结果生物网络的函数和管道。

我们意识到,我们与化学信息包OpenBabel的Python包装器存在名称冲突。如果您在寻找他们的Python包装器,请参阅这里

引用

如果您认为PyBEL对您的工作有帮助,请考虑引用

安装当前PyPI版本 稳定支持的Python版本 MIT许可证

您可以通过在您的首选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.0BEL 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图形

安装jinja2ipython后,可以在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的开发得到了多个项目/组织的支持(按字母顺序)

资金

项目详情


发布历史 发布通知 | RSS源

下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

pybel-0.15.5.tar.gz (431.0 kB 查看哈希值)

上传时间

构建分发

pybel-0.15.5-py3-none-any.whl (387.8 kB 查看哈希值)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面