生物数据库和命名法的集成注册表
项目描述
Bioregistry
一个由社区驱动的生命科学数据库、本体和其他资源的集成元注册表。
更多信息 这里.
Bioregistry可以通过其相关网站 https://bioregistry.io 进行访问、搜索和查询。
📥 下载
Bioregistry的底层数据可以直接从 这里 下载(或编辑)。包括对注册表的共识视图在内的几个导出到YAML、TSV和RDF的导出每周都会构建,可以通过 exports/
目录下载。
这些数据的手动编制部分在 CC0 1.0通用许可 下可用。聚合数据根据其原始许可重新分发。
🙏 贡献
贡献既受欢迎也鼓励。关于新前缀请求、记录编辑、记录删除和代码更新的贡献指南,请参阅CONTRIBUTING.md。
最简单的贡献是提交一个问题
如果您想直接做出贡献,可以直接对bioregistry.json文件进行编辑,无论是通过GitHub界面还是通过分叉存储库进行本地编辑。
如果您想做出贡献但不知道从何开始,您可以查看此列表,这是每周自动生成的编辑待办事项列表,其中包含有关如何贡献的更详细信息。
⚖️治理
生物目录由一个审阅团队和核心开发团队维护,其成员和职责在项目治理中描述。
🧹维护
🫀健康报告
生物目录每周运行一些自动化测试,以检查各种元数据是否过时。例如,它检查主页是否仍然可用,以及每个提供者URL是否仍然能够解析。
它有一个专门的仪表板,该仪表板不是生物目录主站的一部分。
♻️更新
由于GitHub Actions中的计划工作流,数据库每天自动更新。工作流的配置可以在这里找到,最后的运行可以在这里查看。此外,可以从GitHub Actions机器人的提交中回顾变更日志。
如果您想手动更新数据库,请运行以下内容
$ tox -e update
请确保您有有效的环境变量或pystow
配置为BIOPORTAL_API_KEY
、ECOPORTAL_API_KEY
、AGROPORTAL_API_KEY
、FAIRSHARING_LOGIN
和FAIRSHARING_PASSWORD
。
🚀安装
可以从PyPI使用以下命令安装生物目录:
$ pip install bioregistry
可以使用开发模式安装以进行本地编辑:
$ git clone https://github.com/biopragmatics/bioregistry.git
$ cd bioregistry
$ pip install --editable .
使用tox -e docs
在本地构建文档,然后通过打开docs/build/html/index.html
进行查看。
💪使用
标准化前缀
生物目录可以使用normalize_prefix()
函数对MIRIAM和OBO Foundry以及OLS中出现的所有(非常众多)变体中的前缀进行标准化。
from bioregistry import normalize_prefix
# Doesn't affect canonical prefixes
assert 'ncbitaxon' == normalize_prefix('ncbitaxon')
# This works for uppercased prefixes, like:
assert 'chebi' == normalize_prefix("CHEBI")
# This works for mixed case prefixes like
assert 'fbbt' == normalize_prefix("FBbt")
# This works for synonym prefixes, like:
assert 'ncbitaxon' == normalize_prefix('taxonomy')
# This works for common mistaken prefixes, like:
assert 'pubchem.compound' == normalize_prefix('pubchem')
# This works for prefixes that are often written many ways, like:
assert 'eccode' == normalize_prefix('ec-code')
assert 'eccode' == normalize_prefix('EC_CODE')
# If a prefix is not registered, it gives back `None`
assert normalize_prefix('not a real key') is None
解析CURIE
生物目录支持使用parse_curie()
函数将CURIE解析为标准化前缀和标识符的配对。
from bioregistry import parse_curie
# Obvious for canonical CURIEs
assert ('chebi', '1234') == parse_curie('chebi:1234')
# Normalize mixed case prefixes
assert ('fbbt', '00007294') == parse_curie('FBbt:00007294')
# Normalize common mistaken prefixes
assert ('pubchem.compound', '1234') == parse_curie('pubchem:1234')
# Remove the redundant prefix and normalize
assert ('go', '1234') == parse_curie('GO:GO:1234')
这还将应用上一节中关于标准化前缀的相同标准化规则,以应用于以下示例。
标准化CURIE
生物目录支持使用normalize_curie()
函数将CURIE转换为规范CURIE,通过标准化前缀并从LUI中移除冗余命名空间来实现。
from bioregistry import normalize_curie
# Idempotent to canonical CURIEs
assert 'chebi:1234' == normalize_curie('chebi:1234')
# Normalize common mistaken prefixes
assert 'pubchem.compound:1234' == normalize_curie('pubchem:1234')
# Normalize mixed case prefixes
assert 'fbbt:1234' == normalize_curie('FBbt:1234')
# Remove the redundant prefix and normalize
assert 'go:1234' == normalize_curie('GO:GO:1234')
解析IRI
生物注册表可用于解析从IRIs中提取CURIEs,因为它拥有庞大的提供者URL字符串注册表以及用Python实现的附加程序逻辑。它可以解析OBO图书馆PURLs、OLS和identifiers.org的IRIs、生物注册表网站的IRIs以及生物注册表中注册的任何其他形式良好的提供者的IRIs。`parse_iri()`函数获取预解析的CURIE,而`curie_from_iri()`函数则从预解析的CURIE创建一个规范CURIE。
from bioregistry import curie_from_iri, parse_iri
# First-party IRI
assert ('chebi', '24867') == parse_iri('https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:24867')
assert 'chebi:24867' == curie_from_iri('https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:24867')
# OBO Library PURL
assert ('chebi', '24867') == parse_iri('http://purl.obolibrary.org/obo/CHEBI_24867')
assert 'chebi:24867' == curie_from_iri('http://purl.obolibrary.org/obo/CHEBI_24867')
# OLS IRI
assert ('chebi', '24867') == parse_iri('https://www.ebi.ac.uk/ols/ontologies/chebi/terms?iri=http://purl.obolibrary.org/obo/CHEBI_24867')
assert 'chebi:24867' == curie_from_iri('https://www.ebi.ac.uk/ols/ontologies/chebi/terms?iri=http://purl.obolibrary.org/obo/CHEBI_24867')
# Identifiers.org IRIs (with varying usage of HTTP(s) and colon/slash separator
assert ('chebi', '24867') == parse_iri('https://identifiers.org/CHEBI:24867')
assert ('chebi', '24867') == parse_iri('http://identifiers.org/CHEBI:24867')
assert ('chebi', '24867') == parse_iri('https://identifiers.org/CHEBI/24867')
assert ('chebi', '24867') == parse_iri('http://identifiers.org/CHEBI/24867')
# Bioregistry IRI
assert ('chebi', '24867') == parse_iri('https://bioregistry.io/chebi:24867')
通常,生物注册表知道如何解析任何给定URI的http和https变体。
from bioregistry import parse_iri
assert ('neuronames', '268') == parse_iri("http://braininfo.rprc.washington.edu/centraldirectory.aspx?ID=268")
assert ('neuronames', '268') == parse_iri("https://braininfo.rprc.washington.edu/centraldirectory.aspx?ID=268")
生成IRIs
您可以使用`get_iri()`函数从CURIE或预解析CURIE(即前缀和标识符的2元组)生成IRI。默认情况下,它使用以下优先级
- 自定义前缀映射(`custom`)
- 第一方IRI(`default`)
- Identifiers.org / MIRIAM(`miriam`)
- 本体查找服务(`ols`)
- OBO PURL(`obofoundry`)
- 名称到实体(`n2t`)
- 生物门户(`bioportal`)
from bioregistry import get_iri
assert get_iri("chebi", "24867") == 'https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:24867'
assert get_iri("chebi:24867") == 'https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:24867'
您可以通过向`priority`关键字传递替代元前缀序列来更改默认的优先级列表(见上面)。例如,如果您正在处理OBO本体,您可能希望将OBO PURL设置为最高优先级,当OBO PURL无法生成时,默认为其他内容。
from bioregistry import get_iri
priority = ["obofoundry", "default", "miriam", "ols", "n2t", "bioportal"]
assert get_iri("chebi:24867", priority=priority) == 'http://purl.obolibrary.org/obo/CHEBI_24867'
assert get_iri("hgnc:1234", priority=priority) == 'https://bioregistry.io/hgnc:1234'
更深入地,您可以使用`prefix_map`关键字添加(或覆盖)生物注册表默认前缀映射中的任何内容。
from bioregistry import get_iri
prefix_map = {
"myprefix": "https://example.org/myprefix/",
"chebi": "https://example.org/chebi/",
}
assert get_iri("chebi:24867", prefix_map=prefix_map) == 'https://example.org/chebi/24867'
assert get_iri("myprefix:1234", prefix_map=prefix_map) == 'https://example.org/myprefix/1234'
可以结合优先级列表提供自定义前缀映射,使用`"custom"`键更改自定义前缀映射的优先级。
from bioregistry import get_iri
prefix_map = {"lipidmaps": "https://example.org/lipidmaps/"}
priority = ["obofoundry", "custom", "default", "bioregistry"]
assert get_iri("chebi:24867", prefix_map=prefix_map, priority=priority) == \
'http://purl.obolibrary.org/obo/CHEBI_24867'
assert get_iri("lipidmaps:1234", prefix_map=prefix_map, priority=priority) == \
'https://example.org/lipidmaps/1234'
或者,有直接生成不同注册表IRIs的函数。
import bioregistry as br
# Bioregistry IRI
assert br.get_bioregistry_iri('chebi', '24867') == 'https://bioregistry.io/chebi:24867'
# Default Provider
assert br.get_default_iri('chebi', '24867') == 'https://www.ebi.ac.uk/chebi/searchId.do?chebiId=CHEBI:24867'
# OBO Library
assert br.get_obofoundry_iri('chebi', '24867') == 'http://purl.obolibrary.org/obo/CHEBI_24867'
# OLS IRI
assert br.get_ols_iri('chebi', '24867') ==
'https://www.ebi.ac.uk/ols/ontologies/chebi/terms?iri=http://purl.obolibrary.org/obo/CHEBI_24867'
# Bioportal IRI
assert br.get_bioportal_iri('chebi', '24867') == \
'https://bioportal.bioontology.org/ontologies/CHEBI/?p=classes&conceptid=http://purl.obolibrary.org/obo/CHEBI_24867'
# Identifiers.org IRI
assert br.get_identifiers_org_iri('chebi', '24867') == 'https://identifiers.org/CHEBI:24867'
# Name-to-Thing IRI
assert br.get_n2t_iri('chebi', '24867') == 'https://n2t.net/chebi:24867'
如果不存在提供者或前缀无法映射到各种资源,这些函数中的任何一个都可能返回`None`。
前缀映射
生物注册表可以根据您的上下文生成具有不同风味的前缀映射。优先级的工作方式与生成IRIs时相同。
from bioregistry import get_prefix_map
# Standard
prefix_map = get_prefix_map()
# Prioritize OBO prefixes over bioregistry
priority = ["obofoundry", "default", "miriam", "ols", "n2t", "bioportal"]
prefix_map = get_prefix_map(uri_prefix_priority=priority)
# Provide custom remapping that doesn't have prioritization logic
remapping = {"chebi": "CHEBI"}
prefix_map = get_prefix_map(remapping=remapping)
获取元数据
如果存在,可以使用`get_pattern()`快速查找生物注册表条目的模式。它优先考虑自定义编目,然后是MIRIAM,然后是Wikidata模式。
import bioregistry
assert '^GO:\\d{7}$' == bioregistry.get_pattern('go')
可以使用`is_deprecated()`函数检查生物注册表条目的弃用情况。MIRIAM和OBO Foundry通常不一致 - OBO Foundry具有优先权,因为它似乎更新得更频繁。
import bioregistry
assert bioregistry.is_deprecated('nmr')
assert not bioregistry.is_deprecated('efo')
可以使用`get_resource()`函数查找生物注册表条目。
import bioregistry
entry = bioregistry.get_resource('taxonomy')
# there are lots of mysteries to discover in this dictionary!
使用以下方法可以在Python项目中读取完整的生物注册表
import bioregistry
registry = bioregistry.read_registry()
🕸️ 解析器应用
使用`[web]`额外选项安装后,可以使用以下代码运行生物注册表Web应用
$ python -m pip install bioregistry[web]
$ bioregistry web
来运行一个像Identifiers.org一样的Web应用,但其背后由生物注册表支持。此应用的一个公共实例由Gyori Lab for Computational Biomedicine托管在https://bioregistry.io。
👋 赋予
⚖️ 许可证
此存储库中的代码根据MIT许可证授权。
📛 徽章
如果您在代码中使用了生物注册表,请通过在项目的README.md中包含我们的徽章来支持我们。
[](https://github.com/biopragmatics/bioregistry)
如果您的README使用reStructuredText (.rst),请使用此代替
.. image:: https://img.shields.io/static/v1?label=Powered%20by&message=Bioregistry&color=BA274A&style=flat&logo=image/png;base64,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
:target: https://github.com/biopragmatics/bioregistry
:alt: Powered by the Bioregistry
📖 引用
使用生物注册表统一生物医学实体的识别
Hoyt, C. T.,Balk, M.,Callahan, T. J.,Domingo-Fernandez, D.,Haendel, M. A.,Hegde, H. B.,Himmelstein, D. S.,Karis, K.,Kunze, J.,Lubiana, T.,Matentzoglu, N.,McMurry, J.,Mungall, C. J.,Rutz, A.,Unni, D. R.,Willighagen, E.,Winston, D.,Gyori, B. M.(2022)
Nature Scientific Data,s41597-022-01807-3
@article{Hoyt2022Bioregistry,
author = {Hoyt, Charles Tapley and Balk, Meghan and Callahan, Tiffany J and Domingo-Fern{\'{a}}ndez, Daniel and Haendel, Melissa A and Hegde, Harshad B and Himmelstein, Daniel S and Karis, Klas and Kunze, John and Lubiana, Tiago and Matentzoglu, Nicolas and McMurry, Julie and Moxon, Sierra and Mungall, Christopher J and Rutz, Adriano and Unni, Deepak R and Willighagen, Egon and Winston, Donald and Gyori, Benjamin M},
doi = {10.1038/s41597-022-01807-3},
issn = {2052-4463},
journal = {Sci. Data},
number = {1},
pages = {714},
title = {{Unifying the identification of biomedical entities with the Bioregistry}},
url = {https://doi.org/10.1038/s41597-022-01807-3},
volume = {9},
year = {2022}
}
关于生物注册表的演讲
- 生物注册表的未来编目(WPCI,2022年12月)
- 生物注册表 - 管理和审查团队(WPCI,2022年12月)
- 生物注册库的开发、维护和扩展(Sorger 实验室会议,2022年10月)
- 生物注册库、CURIEs 和 OBO 社区健康(ICBO 2022(9月))
- 生物注册库简介(Sorger 实验室会议,2021年7月)
🎁 支持
生物注册库主要由东北大学计算生物医药实验室的 Gyori 实验室 开发,该实验室之前是哈佛医学院治疗科学计划(HiTS)中的 系统药理学实验室 的一部分。
💰 资金
- 查诺斯·布鲁克倡议(CZI)2023-329850
- DARPA 自动化科学知识提取和建模(ASKEM)HR00112220036
- DARPA 年轻学者奖 W911NF2010255(负责人:Benjamin M. Gyori)。
项目详情
bioregistry-0.11.17.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 929360a5071efa85674817981de44d071776eea632645c0f39d32d77b4cf2eae |
|
MD5 | dc67ed7b0e0ea13df039b8e57ac49183 |
|
BLAKE2b-256 | 8cbf35e4ca9dacaaa3dd6982e7d4c0cd1160add6231fc593b83da79957a39cd1 |
bioregistry-0.11.17-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 90850e681c4f20cb7ab9895b7907d0694a475a35032f5fe62130a5060d7722ef |
|
MD5 | 262510219fb1b9c29aedaa2645a5eaf4 |
|
BLAKE2b-256 | 66c42b2df4e4cfbb176be9400985a44fcd36d9834f7f69e1bd694c1f23cd0345 |