Registry / data / bioregistry

bioregistry

JSON →
library0.13.62pypypi✓ verified 85d ago

The Bioregistry is an integrative, open, community-driven meta-registry of databases, ontologies, and other nomenclature resources in the life sciences. It provides a Python package for common tasks like metadata lookup, CURIE expansion, and URI contraction. The library is actively maintained with frequent updates and a continuous release cadence, currently at version 0.13.40.

pip install bioregistry
INSTALL
IMPORT
SIG · BIOREGISTRY
B
bioregistry
datapythonv0.13.62
Install
5.5s avg
Import
3953ms
Disk
65MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.13.62 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.920 runs
installs and imports cleanly · install 0.0s · import 4.094s · 67.2MB
glibc
py 3.103.920 runs
installs and imports cleanly · install 5.5s · import 3.811s · 68MB
65MB installed
● package 65MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

bioregistry
import bioregistry
Commonly imported directly or aliased as 'br'
br
import bioregistry as br
Standard community alias for convenience

This quickstart demonstrates how to fetch metadata for a given resource, normalize various forms of a prefix to its canonical Bioregistry form, and resolve/expand a Compact URI (CURIE) into a full URI.

import bioregistry as br # Get metadata for a resource taxonomy_entry = br.get_resource('taxonomy') print(f"Taxonomy Name: {taxonomy_entry.name}") print(f"Taxonomy Homepage: {taxonomy_entry.homepage}") # Normalize a prefix normalized_ec = br.normalize_prefix('ec-code') print(f"'ec-code' normalized to: {normalized_ec}") normalized_pubchem = br.normalize_prefix('pubchem') print(f"'pubchem' normalized to: {normalized_pubchem}") # Resolve a CURIE to a URI curie = 'chebi:138488' uri = br.resolve(curie) print(f"Resolved {curie} to: {uri}") # Expand a CURIE to a URI expanded_uri = br.expand_curie(curie) print(f"Expanded {curie} to: {expanded_uri}")
bioregistry --version
Debug
Known issues
breakingChanges in Bioregistry's internal canonicalization for certain non-biological prefixes (e.g., 'rdf') can lead to unexpected case changes (e.g., 'RDF' instead of 'rdf') in merged prefix maps, affecting downstream tools that consume Bioregistry's output and assume lowercase canonicalization for such prefixes.
fix
Review and adapt any pipelines that rely on Bioregistry's output for case-sensitive prefix handling, especially for non-biological or common data prefixes. Consider explicit case normalization in consuming applications if strict lowercase is required.
affects: 0.13.x (observed around 0.13.x in April 2024)
gotchaThe Bioregistry does not fully cover or align with all external registries due to varying quality standards, lack of metadata, or resources being decommissioned. This means some prefixes from external sources may not be present or have complete metadata.
fix
Always check for prefix existence and metadata completeness using `br.get_resource()` or `br.normalize_prefix()`. If a prefix is missing, consider contributing it or consulting the original external registry directly.
affects: All versions
gotchaCURIEs can fail to resolve or validate for three main reasons: the prefix is not registered, the identifier does not match the validation pattern, or no providers are available for that prefix. The `resolve()` and `expand_curie()` functions will return `None` or raise an error in these cases.
fix
Before resolving, use `br.get_resource(prefix)` to check if a prefix is registered and has associated metadata, including a `pattern` for validation and `providers` for resolution. Validate identifiers using `br.validate_identifier()` if necessary.
affects: All versions
gotchaSome ontology identifiers embed redundant prefixes (e.g., `GO:GO:0006915`). Bioregistry handles these cases, but this can be a source of confusion as different registries might manage these 'banana-style' identifiers differently.
fix
Be aware of potential redundant prefixes in identifiers, especially when working with OBO Foundry or Gene Ontology resources. The Bioregistry's `normalize_prefix()` and `parse_curie()` functions are designed to handle these variations consistently.
affects: All versions
Errors
Common errors & fixes
AttributeError: 'NoneType' object has no attribute 'name' (or similar for other attributes)
Attempting to access attributes (e.g., `name`, `homepage`) on a `None` object returned by `bioregistry.get_resource()` or `bioregistry.normalize_prefix()`, indicating that the requested prefix is not recognized or found in the Bioregistry.
fix
Always check if the result of `br.get_resource()` or `br.normalize_prefix()` is `None` before attempting to access its attributes. Example: `entry = br.get_resource('unknown_prefix'); if entry: print(entry.name)`.
Failed to resolve CURIE 'prefix:invalid_id' / No URI found for 'prefix:invalid_id'
The provided identifier part of the CURIE ('invalid_id') does not conform to the expected regular expression pattern defined for the 'prefix' in the Bioregistry, or there are no configured providers to generate a URI for that prefix.
fix
Verify the identifier's format against the expected pattern, which can sometimes be found in the resource's metadata via `br.get_resource(prefix).pattern`. Ensure the prefix itself is valid and has registered providers for resolution.
Upgrade
Version history
0.13.62latest on PyPI · released Jun 13, 2026
Audit
Dependencies
clickrequiredCommand-line interface and utilities
curiesrequiredHandling Compact URIs (CURIEs)
more-clickrequiredClick utility extensions
pydanticrequiredData validation and settings management
pystowrequiredStandardized file management
requestsrequiredHTTP requests for external data
sssom-pydanticrequiredSimple Standard for Sharing Ontology Mappings (SSSOM) Pydantic models
tqdmrequiredProgress bars for iterations
Agent activity
18 hits · last 30 days
node
16
Amazon
1
OpenAI (training)
1
Resources
bioregistry — pip install bioregistry · libregistry