*********
PyHPO-API
*********
A HTTP REST-API wrapper for `PyHPO`_
Main features
=============
This package allows an easy setup of a REST API to interact with HPO Terms using the `PyHPO`_ package.
API Documentation
=================
To see an interactive API documentation, install PyHPO-API, run the app and visit http://127.0.0.1:8000/docs
Installation / Setup
====================
The easiest way to install PyHPO-API is via pip
.. code:: bash
pip install pyhpoapi
.. note::
**PyHPO-API** ships with ``pyhpo`` as the underlying Ontology by default. it is also possible to use `hpo3 <https://pypi.org/project/hpo3/>`_ instead. ``hpo3`` is a drop-in replacement of ``pyhpo`` written in Rust and is much faster. It is not 100% feature complete, so use it with caution. To switch to ``hpo3`` unintstall pyhpo and then install hpo3
.. code:: bash
pip uninstall -y pyhpo
pip install hpo3
Usage
=====
Getting started
---------------
The easiest way to get started is to run the API via
.. code:: bash
uvicorn pyhpoapi.main:app
Parallel processing
-------------------
If you want better performance for parallel request handling,
you can run PyHPO-API with multiple workers
.. code:: bash
uvicorn pyhpoapi.main:app --workers 15
.. note::
Don't use more workers than available CPUs as it will backfire
and slow down processing due to constant context-switches
CORS
----
If you need to allow cross-origin requests, you specify CORS settings through environment variables::
export PYHPOAPI_CORS_ORIGINS="*"
export PYHPOAPI_CORS_METHODS="GET,POST"
export PYHPOAPI_CORS_HEADERS="*"
Dev
===
Getting started for development
-------------------------------
Clone the repository
.. code:: bash
git clone https://github.com/anergictcell/pyhpoapi.git
cd pyhpoapi
Use Docker for development
--------------------------
One way to do this is to run a docker container during development
.. code:: bash
docker run --rm -v $(pwd):/src -p 8000:8000 -it python:3.9-slim-buster bash
cd src
pip3 install -r requirements.txt
pip3 install -r requirements-dev.txt
python3 -m unittest discover tests
uvicorn --host 0.0.0.0 --reload pyhpoapi.main:app
Or local development without Docker
-----------------------------------
Create a virtual environment and install requirements in the virtual environment
.. code:: bash
virtualenv venv_pyhpoapi
source venv_pyhpoapi/bin/activate
pip3 install -r requirements.txt
pip3 install -r requirements-dev.txt
python3 -m unittest discover tests
uvicorn --reload pyhpoapi.main:app
.. _PyHPO: https://github.com/Centogene/pyhpo
Raw data
{
"_id": null,
"home_page": "",
"name": "pyhpoapi",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "HPO,REST-API,Bioinformatics,Ontology,Phenotype",
"author": "",
"author_email": "Jonas Marcello <jonas.marcello@esbme.com>",
"download_url": "https://files.pythonhosted.org/packages/78/f6/e91d1311af377afb952089a19ef6cc5733707f41c5275bc67473970c38ac/pyhpoapi-2.0.0.tar.gz",
"platform": null,
"description": "*********\nPyHPO-API\n*********\n\nA HTTP REST-API wrapper for `PyHPO`_\n\nMain features\n=============\nThis package allows an easy setup of a REST API to interact with HPO Terms using the `PyHPO`_ package.\n\n\nAPI Documentation\n=================\nTo see an interactive API documentation, install PyHPO-API, run the app and visit http://127.0.0.1:8000/docs\n\n\nInstallation / Setup\n====================\n\nThe easiest way to install PyHPO-API is via pip\n\n.. code:: bash\n\n pip install pyhpoapi\n\n\n.. note::\n\n **PyHPO-API** ships with ``pyhpo`` as the underlying Ontology by default. it is also possible to use `hpo3 <https://pypi.org/project/hpo3/>`_ instead. ``hpo3`` is a drop-in replacement of ``pyhpo`` written in Rust and is much faster. It is not 100% feature complete, so use it with caution. To switch to ``hpo3`` unintstall pyhpo and then install hpo3\n\n .. code:: bash\n\n pip uninstall -y pyhpo\n pip install hpo3\n\n\nUsage\n=====\n\nGetting started\n---------------\nThe easiest way to get started is to run the API via\n\n.. code:: bash\n\n uvicorn pyhpoapi.main:app\n\n\nParallel processing\n-------------------\nIf you want better performance for parallel request handling,\nyou can run PyHPO-API with multiple workers\n\n.. code:: bash\n\n uvicorn pyhpoapi.main:app --workers 15 \n\n\n.. note::\n\n Don't use more workers than available CPUs as it will backfire\n and slow down processing due to constant context-switches\n\nCORS\n----\nIf you need to allow cross-origin requests, you specify CORS settings through environment variables::\n\n export PYHPOAPI_CORS_ORIGINS=\"*\"\n export PYHPOAPI_CORS_METHODS=\"GET,POST\"\n export PYHPOAPI_CORS_HEADERS=\"*\"\n\n\nDev\n===\n\nGetting started for development\n-------------------------------\nClone the repository\n\n.. code:: bash\n\n git clone https://github.com/anergictcell/pyhpoapi.git\n cd pyhpoapi\n\n\nUse Docker for development\n--------------------------\nOne way to do this is to run a docker container during development\n\n.. code:: bash\n\n docker run --rm -v $(pwd):/src -p 8000:8000 -it python:3.9-slim-buster bash\n\n cd src\n pip3 install -r requirements.txt\n pip3 install -r requirements-dev.txt\n\n python3 -m unittest discover tests\n\n uvicorn --host 0.0.0.0 --reload pyhpoapi.main:app\n\n\nOr local development without Docker\n-----------------------------------\n\nCreate a virtual environment and install requirements in the virtual environment\n\n\n.. code:: bash\n\n virtualenv venv_pyhpoapi\n source venv_pyhpoapi/bin/activate\n\n pip3 install -r requirements.txt\n pip3 install -r requirements-dev.txt\n\n python3 -m unittest discover tests\n\n uvicorn --reload pyhpoapi.main:app\n\n\n.. _PyHPO: https://github.com/Centogene/pyhpo\n\n\n",
"bugtrack_url": null,
"license": "MIT License",
"summary": "A REST API for the HPO ontology using PyHPO",
"version": "2.0.0",
"project_urls": null,
"split_keywords": [
"hpo",
"rest-api",
"bioinformatics",
"ontology",
"phenotype"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "a5dd1a5b5ff212bcf746a1c2e3297549c6e63cda4a98d801aaf61fd5c6d8103f",
"md5": "de54e4c5764102012d50acff33724fc0",
"sha256": "084b57ea12056f30846c1d061e9cdce16aca0bfd1b0ef7be69c75b908014cf4e"
},
"downloads": -1,
"filename": "pyhpoapi-2.0.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "de54e4c5764102012d50acff33724fc0",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 44480,
"upload_time": "2023-07-28T19:56:47",
"upload_time_iso_8601": "2023-07-28T19:56:47.089988Z",
"url": "https://files.pythonhosted.org/packages/a5/dd/1a5b5ff212bcf746a1c2e3297549c6e63cda4a98d801aaf61fd5c6d8103f/pyhpoapi-2.0.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "78f6e91d1311af377afb952089a19ef6cc5733707f41c5275bc67473970c38ac",
"md5": "9d7e276e69c98bd3d6fad925f915bbf5",
"sha256": "edd7ebac21a233008f28fd4a73e31e0b8c950fd18e3a365d1e516ab2867bd2b9"
},
"downloads": -1,
"filename": "pyhpoapi-2.0.0.tar.gz",
"has_sig": false,
"md5_digest": "9d7e276e69c98bd3d6fad925f915bbf5",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 44601,
"upload_time": "2023-07-28T19:56:48",
"upload_time_iso_8601": "2023-07-28T19:56:48.767642Z",
"url": "https://files.pythonhosted.org/packages/78/f6/e91d1311af377afb952089a19ef6cc5733707f41c5275bc67473970c38ac/pyhpoapi-2.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-07-28 19:56:48",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "pyhpoapi"
}