跳转到主要内容

具有上下文消歧的生物医学实体归一化

项目描述

Gilda: 整合学习的消歧归一化

License Build Documentation PyPI version DOI

Gilda是一个Python包和REST服务,用于在生物医学文本中归一化(即,为命名实体找到适当的命名空间中的标识符)。

Gyori BM, Hoyt CT, Steppi A (2022). Gilda: 作为服务的机器学习消歧的生物医学实体文本归一化。生物信息学进展,2022; vbac034 https://doi.org/10.1093/bioadv/vbac034.

安装

Gilda作为网络服务部署在 http://grounding.indra.bio/(见下文的使用说明),然而,它也可以作为Python包在本地使用。

安装Gilda的推荐方法是通过PyPI,如下所示:

pip install gilda

请注意,Gilda使用单个大型资源文件进行归一化,该文件在运行时自动下载到 ~/.data/gilda/<version> 文件夹中(有关配置此文件夹位置的选择,请参阅 pystow)。

给定一些额外的依赖项,也可以通过运行 python -m gilda.generate_terms 在本地重新生成归一化资源文件。

文档和笔记本

Gilda的文档可在 此处 获取。我们还提供了几个交互式Jupyter笔记本,以帮助使用和定制Gilda

  • Gilda简介 提供了使用Gilda的交互式教程。
  • 自定义地面处理展示了如何使用自定义地面资源实例化Gilda的几个示例。
  • 模型训练提供了用于训练新歧义模型的交互式示例代码。

用法

Gilda可以作为一个REST网络服务使用,也可以通过其Python API编程式使用。有关使用Gilda的简介Jupyter笔记本可在https://github.com/indralab/gilda/blob/master/notebooks/gilda_introduction.ipynb找到。

作为Python包使用

要将Gilda作为Python包使用,请参阅http://gilda.readthedocs.org上的文档,其中详细介绍了Gilda的每个模块及其用法。以下是一个关于命名实体规范化(NEN)或地面处理的基本用法示例

import gilda
scored_matches = gilda.ground('ER', context='Calcium is released from the ER.')

Gilda还实现了一个简单的基于字典的命名实体识别(NER)算法,可以按以下方式使用

import gilda
results = gilda.annotate('Calcium is released from the ER.')

作为网络服务使用

REST服务接受在/ground端点上带有JSON头部的POST请求。有一个公共REST服务在http://grounding.indra.bio运行,但该服务也可以本地运行,如下所示

python -m gilda.app

默认情况下,这将在localhost:8001启动服务器(对于本地使用,将以下示例中的URL替换为此地址)。

以下是一个使用curl的请求示例

curl -X POST -H "Content-Type: application/json" -d '{"text": "kras"}' http://grounding.indra.bio/ground

使用Python的request包进行相同请求的方式如下

import requests
requests.post('http://grounding.indra.bio/ground', json={'text': 'kras'})

网络服务也支持在ground_multi端点上单个请求中使用多个输入,例如

import requests
requests.post('http://grounding.indra.bio/ground_multi',
              json=[
                  {'text': 'braf'},
                  {'text': 'ER', 'context': 'endoplasmic reticulum (ER) is a cellular component'}
              ]
          )

资源使用

首次使用时,Gilda将地面处理术语加载到内存中。如果内存使用成为问题,建议以下选项。

  1. 运行单个Gilda实例作为本地网络服务,由一个或多个其他进程发送请求。

  2. 创建一个自定义地面处理实例,仅加载适合狭窄用例的术语子集。

  3. Gilda还提供可选的sqlite后端,可以显著降低内存使用,并导致单位时间内的字符串地面处理数量略有下降。可以使用以下方式构建sqlite后端数据库,其中包含可选的[db_path]参数,如果使用,则应使用.db扩展名。如果没有指定,.db文件将生成在Gilda默认资源文件夹中。

python -m gilda.resources.sqlite_adapter [db_path]

然后可以按以下方式实例化地面处理实例

from gilda.grounder import Grounder
gr = Grounder(db_path)
matches = gr.ground('kras')

使用Docker运行网络服务

在本地克隆存储库后,可以使用以下命令构建并运行Gilda的Docker镜像

$ docker build -t gilda:latest .
$ docker run -d -p 8001:8001 gilda:latest

或者,您可以使用docker-compose来执行初始构建并基于docker-compose.yml配置运行容器

$ docker-compose up

默认地面处理资源

Gilda可以通过来自不同词汇的术语进行自定义。然而,Gilda附带一组默认资源,从中收集术语(截至v1.1.0版本,大约有200万个条目),无需任何额外配置。这些资源包括

  • HGNC(人类基因)
  • UniProt(人类和模式生物体的蛋白质)
  • FamPlex(人类蛋白质家族和复合物)
  • CHeBI(小分子、代谢物等)
  • GO(生物过程、分子功能、复合物)
  • DOID(疾病)
  • EFO(实验因素:细胞系、细胞类型、解剖实体等)
  • HP(人类表型)
  • MeSH(一般:疾病、蛋白质、小分子、细胞类型等)
  • Adeft(与歧义缩写相对应的杂项术语)

引用

@article{gyori2022gilda,
    author = {Gyori, Benjamin M and Hoyt, Charles Tapley and Steppi, Albert},
    title = "{{Gilda: biomedical entity text normalization with machine-learned disambiguation as a service}}",
    journal = {Bioinformatics Advances},
    year = {2022},
    month = {05},
    issn = {2635-0041},
    doi = {10.1093/bioadv/vbac034},
    url = {https://doi.org/10.1093/bioadv/vbac034},
    note = {vbac034}
}

资助

吉拉的发展得到了美国国防部高级研究计划局(DARPA)与计算机通信计划(ARO项目编号W911NF-15-1-0544)以及DARPA青年学者奖(ARO项目编号W911NF-20-1-0255)的支持。

项目详情


下载文件

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

源代码分发

gilda-1.2.1.tar.gz (179.4 kB 查看哈希值)

上传时间 源代码

构建分发

gilda-1.2.1-py3-none-any.whl (182.0 kB 查看哈希值)

上传时间 Python 3

由以下组织支持