Skip to content

πŸ” The Biolookup Service retrieves metadata and ontological information about biomedical entities.

License

Notifications You must be signed in to change notification settings

biopragmatics/biolookup

Repository files navigation

Biolookup Service logo

Biolookup

Tests Cookiecutter template from @cthoyt PyPI PyPI - Python Version PyPI - License Documentation Status DOI Code style: black Powered by the Bioregistry

Get metadata and ontological information about biomedical entities.

πŸ” Querying the Biolookup Service

The Biolookup Service has an endpoint /api/lookup/<curie> for retrieving metadata and ontological information about a biomedical entity via its compact identifier (CURIE).

import requests

res = requests.get("http://localhost:5000/api/lookup/doid:14330").json()
assert res["name"] == "Parkinson's disease"
assert res["identifier"] == "14330"
assert res["prefix"] == "doid"
assert res["definition"] is not None  # not shown for brevity

The INDRA Lab hosts an instance of the Biolookup Service at http://biolookup.io, so you can alternatively use http://biolookup.io/api/lookup/doid:14330.

The same can be accomplished using the biolookup package:

import biolookup

res = biolookup.lookup("doid:14330")
assert res["name"] == "Parkinson's disease"
# ... same as before

If you've configured the BIOLOOKUP_SQLALCHEMY_URI environment variable (or any other valid way with pystow to point directly at the database for an instance of the Biolookup Service, it will make a direct connection to the database instead of using the web-based API.

πŸ•ΈοΈ Running the Lookup App

You can run the lookup app in local mode with:

$ biolookup web --lazy

This means that the in-memory data from pyobo are used. If you have a large external database, you can run in remote mode with the --sql flag:

$ biolookup web --sql --uri postgresql+psycopg2://postgres:biolookup@localhost:5434/biolookup

If --uri is not given for the web subcommand, it uses pystow.get_config("biolookup", "sqlalchemy_uri)to look up from BIOLOOKUP_SQLALCHEMY_URI or in ~/.config/biolookup.ini. If none is given, it defaults to a SQLite database in ~/.data/biolookup/biolookup.db.

πŸ—‚οΈ Load the Database

$ biolookup load --uri postgresql+psycopg2://postgres:biolookup@localhost:5434/biolookup

If --uri is not given for the load subcommand, it uses pystow.get_config("biolookup", "sqlalchemy_uri)to look up from BIOLOOKUP_SQLALCHEMY_URI or in ~/.config/biolookup.ini. If none is given, it creates a defaults a SQLite database at ~/.data/biolookup/biolookup.db.

πŸš€ Installation

The most recent release can be installed from PyPI with:

$ pip install biolookup

The most recent code and data can be installed directly from GitHub with:

$ pip install git+https://github.com/biopragmatics/biolookup.git

To install in development mode, use the following:

$ git clone git+https://github.com/biopragmatics/biolookup.git
$ cd biolookup
$ pip install -e .

πŸ‘ Contributing

Contributions, whether filing an issue, making a pull request, or forking, are appreciated. See CONTRIBUTING.rst for more information on getting involved.

πŸ‘€ Attribution

βš–οΈ License

The code in this package is licensed under the MIT License.

🎁 Support

The Biolookup Service was developed by the INDRA Lab, a part of the Laboratory of Systems Pharmacology and the Harvard Program in Therapeutic Science (HiTS) at Harvard Medical School.

πŸ’° Funding

This project has been supported by the following grants:

Funding Body Program Grant
DARPA Automating Scientific Knowledge Extraction (ASKE) HR00111990009

πŸͺ Cookiecutter

This package was created with @audreyfeldroy's cookiecutter package using @cthoyt's cookiecutter-snekpack template.