集成网络和动态推理组装器
项目描述
INDRA
INDRA(集成网络和动态推理组装器)是一个自动化模型组装系统,最初是为分子系统生物学开发的,后来推广到其他领域(见 INDRA World)。INDRA利用自然语言处理系统和结构化数据库来收集机制和因果关系声明,以标准化的形式(INDRA语句)表示它们,并将它们组装成各种建模形式,包括因果图和动态模型。
INDRA的核心是其知识层组装程序,允许将来源组装成连贯的模型。这个过程包括纠正系统输入错误、查找和解决冗余、推断缺失信息、过滤到相关范围以及评估因果信息的可靠性。
详细的INDRA文档可在http://indra.readthedocs.io找到。
目录
INDRA模块
知识来源
目前INDRA已集成以下自然语言处理系统和结构化数据库。这些输入模块(在indra.sources
中可用)都生成INDRA语句。
阅读系统
生物通路数据库
自定义知识库
数据库/交换格式 | 模块 | 参考 |
---|---|---|
NDEx/CX | indra.sources.ndex_cx |
http://ndexbio.org |
INDRA DB/INDRA语句 | indra.sources.indra_db_rest |
https://github.com/indralab/indra_db |
Hypothes.is | indra.sources.hypothesis |
https://hypothes.is |
生物事实 | indra.sources.biofactoid |
https://biofactoid.org/ |
MINERVA | indra.sources.minerva |
https://covid19map.elixir-luxembourg.org/minerva/ |
输出模型组装器
INDRA还提供了一些模型输出组装器,它们以INDRA语句为输入。最复杂的模型组装器是PySB组装器,它实现了基于策略的自动组装过程,该过程可以进一步编译成其他格式(如SBML、Kappa、BNGL和SBGN),以连接到庞大的下游工具生态系统。其他几个模型组装模块针对各种网络格式进行可视化、图/结构分析(PyBEL、CyJS、Graphviz、SBGN、CX、SIF等)和整理(HTML、TSV、IndexCards)。最后,英语组装器生成一组INDRA语句的英语描述。
INDRA还支持通过外部模型组装工具进行扩展,这些工具将INDRA语句作为输入并生成模型。例如,Delphi(《https://github.com/ml4ai/delphi》)就是一个动态贝叶斯网络模型组装器。类似地,支持INDRA语句的外部工具可以实现自定义的可视化方法,例如由Uncharted Software(《https://uncharted.software/”)开发的CauseMos。
面向模型驱动发现和分析的组装器
建模形式/交换格式 | 目的 | 模块 | 参考 |
---|---|---|---|
PySB (-> SBML, SBGN, BNGL, Kappa, 等.) | 详细、机制性建模、仿真、分析 | indra.assemblers.pysb |
http://pysb.org |
PyBEL | 因果分析、可视化 | indra.assemblers.pybel |
https://github.com/pybel/pybel https://bel-commons.scai.fraunhofer.de/ |
IndraNet | 因果分析、有符号和无符号 | indra.assemblers.indranet |
|
SIF | 网络分析、逻辑建模、可视化 | indra.assemblers.sif |
SIF格式 |
KAMI | 蛋白质位点/状态的知识聚合和Kappa建模 | indra.assemblers.kami |
https://github.com/Kappa-Dev/KAMI |
主要面向可视化的组装器
网络/交换格式 | 目的 | 模块 | 参考 |
---|---|---|---|
因果分析图 | 通用因果图可视化 | indra.assemblers.cag |
|
CX | NDEx上的网络浏览和版本控制 | indra.assemblers.cx |
http://ndexbio.org |
Cytoscape JS | 用于嵌入网站的交互式Cytoscape JS网络 | indra.assemblers.cyjs |
http://js.cytoscape.org/ |
Graphviz | 使用Graphviz进行强大的自动化布局的静态PDF/PNG可视化 | indra.assemblers.graph |
https://graphviz.cn/ |
SBGN | 使用系统生物学图形符号进行可视化 | indra.assemblers.sbgn |
http://sbgn.org |
主要面向专家整理和浏览的组装器
输出格式 | 目的 | 模块 | 参考 |
---|---|---|---|
英语语言 | 可读描述、报告、对话 | indra.assemblers.english |
|
HTML | 基于网络的浏览和链接到来源、整理 | indra.assemblers.html |
整理教程 |
TSV(制表符/逗号分隔值) | 基于电子表格的浏览和整理 | indra.assemblers.tsv |
|
索引卡 | 用于整理生物机制的定制JSON格式 | indra.assemblers.index_card |
内部知识组装
INDRA的一个关键特性是提供内部知识组装模块,这些模块在INDRA语句上操作并执行以下任务:
- 使用预组装器(
indra.preassembler.Preassembler
)在特定本体中查找冗余/包含/泛化/矛盾并解决 - 使用BeliefEngine(
indra.belief
)根据证据进行信念计算 - 在多个本体之间映射基础(
indra.preassembler.ont_mapper.OntMapper
) - 基础覆盖和消歧义(
indra.preassembler.grounding_mapper.GroundingMapper
) - 蛋白质序列映射(
indra.preassembler.site_mapper.SiteMapper
)
INDRA的内部组装步骤,包括上述步骤,以及大量过滤器(按来源、信念、是否存在基础信息、按实体角色进行语义过滤等)都在indra.tools.assemble_corpus子模块中公开。此子模块包含接受语句作为输入并生成处理后的语句作为输出的函数。它们可以组合起来形成一个组装管道,将收集到的知识与输出模型连接起来。
此图说明了组装管道过程。
组装函数的选择可能取决于领域(即,生物学或世界建模)、建模目标(即,将要组装的模型类型以及该模型将如何使用)、所需功能和置信度(例如,仅过滤人类基因或应用信念截止值),以及其他用户偏好。
以下是典型的生物学语句组装管道的示例。以下步骤中的一些可以删除、重新排列,还可以添加其他步骤以更改组装管道。
from indra.tools import assemble_corpus as ac
stmts = <the collection of all raw statements to use>
stmts = ac.filter_no_hypothesis(stmts) # Filter out hypothetical statements
stmts = ac.map_grounding(stmts) # Map grounding
stmts = ac.filter_grounded_only(stmts) # Filter out ungrounded agents
stmts = ac.filter_human_only(stmts) # Filter out non-human genes
stmts = ac.map_sequence(stmts) # Map sequence
stmts = ac.run_preassembly(stmts, # Run preassembly
return_toplevel=False)
stmts = ac.filter_belief(stmts, 0.8) # Apply belief cutoff of 0.8
以下是一个面向世界建模领域语句的组装管道示例(注意此处没有使用生物学特定功能,并且在运行 run_preassembly
时传递了自定义的 belief_scorer 和本体,而生物学管道使用默认值)。请注意,此示例需要已安装 indra_world
包。
from indra.tools import assemble_corpus as ac
from indra_world.belief.wm_scorer import get_eidos_scorer
from indra_world.ontology.world import world_ontology
stmts = <the collection of all raw statements to use>
stmts = ac.filter_grounded_only(stmts) # Filter out ungrounded agents
belief_scorer = get_eidos_scorer()
stmts = ac.run_preassembly(stmts, # Run preassembly
return_toplevel=False,
belief_scorer=belief_scorer,
ontology=world_ontology,
normalize_equivalences=True, # Optional: rewrite equivalent groundings to one standard
normalize_opposites=True, # Optional: rewrite opposite groundings to one standard
normalize_ns='WM') # Use 'WM' namespace to normalize equivalences and opposites
stmts = ac.filter_belief(stmts, 0.8) # Apply belief cutoff of e.g., 0.8
运行组装管道后返回的组装语句可以传递到任何输出模型组装器。
其他模块
INDRA 还包含访问文献内容(例如 PubMed、Elsevier)的模块,可在 indra.literature
中找到,并访问本体信息以及在不同标识符(例如 UniProt、HGNC)之间进行转换,可在 indra.databases
中找到。INDRA 的完整模块列表可在 文档
中找到。
引用
Gyori B.M.,Bachman J.A.,Subramanian K.,Muhlich J.L.,Galescu L.,Sorger P.K. 使用自动化组装从词模型到可执行的信号网络模型 (2017),分子系统生物学,13,954。
Bachman J.A.,Gyori B.M.,Sorger P.K. 从文本挖掘和已编制数据库中大规模自动组装分子机制 (2023),分子系统生物学,e11325。
安装
有关详细安装说明,请参阅文档。
INDRA 当前支持 Python 3.8-3.10。与 Python 2.7 兼容的最后一个 INDRA 版本是 1.10,与 Python 3.5 完全兼容的最后一个版本是 1.17。大多数 INDRA 用法都将与其他 Python 版本兼容,但当前仅对 3.8-3.10 进行了全面兼容性测试。
安装 INDRA 的首选方法是使用 pip 指向源存储库
$ pip install git+https://github.com/sorgerlab/indra.git
INDRA 的版本也可在 PyPI 上找到,您可以通过以下方式安装最新版本
$ pip install indra
但是,这些版本通常会落后于本存储库中可用的最新代码。
INDRA 依赖于一些标准的 Python 包。这些包在设置期间由 pip 安装。对于某些模块和用例,可能还需要其他“额外”依赖项,这些依赖项在 文档 中有详细说明。
INDRA REST API
INDRA 的 REST API 可在 http://api.indra.bio:8000 上找到。请注意,REST API 适用于原型设计和构建轻量级 Web 应用,但不适用于大型阅读和组装工作流程。
INDRA Docker
INDRA 在 Dockerhub 上作为 Docker 镜像提供,可以拉取为
docker pull labsyspharm/indra
您可以使用容器运行 INDRA REST API
docker run -id -p 8080:8080 --entrypoint python labsyspharm/indra /sw/indra/rest_api/api.py
用于本地构建镜像的 Dockerfile 可在单独的存储库中找到,地址为 https://github.com/indralab/indra_docker。
使用INDRA
在此示例中,INDRA 通过 TRIPS 阅读网络服务从机制的自然语言描述中组装 PySB 模型。
from indra.sources import trips
from indra.assemblers.pysb import PysbAssembler
pa = PysbAssembler()
# Process a natural language description of a mechanism
trips_processor = trips.process_text('MEK2 phosphorylates ERK1 at Thr-202 and Tyr-204')
# Collect extracted mechanisms in PysbAssembler
pa.add_statements(trips_processor.statements)
# Assemble the model
model = pa.make_model(policies='two_step')
INDRA 还提供了 REACH 自然语言处理器的接口。在此示例中,处理了来自 PubMed Central 的完整论文。该论文的 PMC ID 为 PMC8511698。此示例假定本地正在运行 REACH 服务器(请参阅 indra.sources.reach
中的文档)。请注意,REACH 阅读这篇全文论文需要大约 8 分钟。
from indra.sources import reach
reach_processor = reach.process_pmc('PMC8511698', url=reach.local_nxml_url)
在这一点上,reach_processor.statements
包含从 PMC 论文中提取的 INDRA 语句列表。
接下来,我们看看读取关于 BRAF 的 10 篇最新 PubMed 摘要并将结果收集到 INDRA 语句中的示例。
from indra.sources import reach
from indra.literature import pubmed_client
# Search for 10 most recent abstracts in PubMed on 'BRAF'
pmids = pubmed_client.get_ids('BRAF', retmax=10)
all_statements = []
for pmid in pmids:
abs = pubmed_client.get_abstract(pmid)
if abs is not None:
reach_processor = reach.process_text(abs, url=reach.local_text_url)
if reach_processor is not None:
all_statements += reach_processor.statements
在这一点上,all_statements
列表包含从 10 篇摘要中提取的所有语句。
下一个示例展示了使用 PyBEL 查询 BEL 大型语料库网络,通过给定蛋白质的 HGNC 基因名称查询这些蛋白质的邻域。此示例通过 PyBEL 执行查询。
from indra.sources import bel
# Process the neighborhood of BRAF and MAP2K1
bel_processor = bel.process_pybel_neighborhood(['BRAF', 'MAP2K1'])
在这一点上,bel_processor.statements
包含从邻域查询中提取的 INDRA 语句列表。
接下来,我们看看查询 Pathway Commons 数据库 中两个蛋白质列表之间路径的示例。
from indra.sources import biopax
# Process the neighborhood of BRAF and MAP2K1
biopax_processor = biopax.process_pc_pathsfromto(['BRAF', 'RAF1'], ['MAP2K1', 'MAP2K2'])
在这一点上,biopax_processor.statements
包含从路径查询中提取的 INDRA 语句列表。
资金
INDRA 的发展得到了以下机构的资助
项目 | 资助编号 |
---|---|
DARPA 大机制 | W911NF-14-1-0397 |
DARPA 世界建模者 | W911NF-18-1-0014 |
DARPA 与计算机交流 | W911NF-15-1-0544 |
DARPA 自动化科学发现框架 | W911NF-18-1-0124 |
DARPA 自动化科学知识提取 | HR00111990009 |
DARPA 全能 | HR00111920022 |
DARPA 年轻学者奖 | W911NF-20-1-0255 |
项目详情
下载文件
下载您平台的文件。如果您不确定该选择哪个,请了解更多关于 安装包 的信息。
源分发
构建分发
indra-1.23.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 629d69bed1a78da3be9a1e672ee694952733256acecf9f1b295469170494be30 |
|
MD5 | 035d303771f0d44b2dbb8fbff4dfc45d |
|
BLAKE2b-256 | f0787b0ee979d80496c23d88014b81d4bac15b53ca4be7e131219a17233fb58b |