Metadata-Version: 2.1
Name: biothings
Version: 0.12.5
Summary: a toolkit for building high-performance data APIs in biology
Home-page: https://biothings.io
Author: The BioThings Team
Author-email: cwu@scripps.edu
License: Apache License, Version 2.0
Project-URL: Documentation, https://docs.biothings.io
Project-URL: Source, https://github.com/biothings/biothings.api
Project-URL: Tracker, https://github.com/biothings/biothings.api/issues
Project-URL: Changelog, https://github.com/biothings/biothings.api/blob/master/CHANGES.txt
Project-URL: Twitter, https://twitter.com/biothingsapi
Keywords: biology annotation web service client api
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Development Status :: 4 - Beta
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Operating System :: POSIX
Classifier: Operating System :: MacOS :: MacOS X
Classifier: Operating System :: Microsoft :: Windows
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Utilities
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests >=2.21.0
Requires-Dist: gitpython >=3.1.0
Requires-Dist: jmespath <2.0.0,>=0.7.1
Requires-Dist: PyYAML >=5.1
Requires-Dist: orjson >=3.6.1
Requires-Dist: tornado ==6.1.0 ; python_version < "3.7.0"
Requires-Dist: elasticsearch[async] <8,>=7 ; python_version < "3.7.0"
Requires-Dist: elasticsearch-dsl <8,>=7 ; python_version < "3.7.0"
Requires-Dist: dataclasses ; python_version < "3.7.0"
Requires-Dist: singledispatchmethod ; python_version < "3.8.0"
Requires-Dist: tornado ==6.2.0 ; python_version == "3.7.0"
Requires-Dist: elasticsearch[async] <9,>=8 ; python_version >= "3.7.0"
Requires-Dist: elasticsearch-dsl <9,>=8 ; python_version >= "3.7.0"
Requires-Dist: tornado ==6.4.1 ; python_version >= "3.8.0"
Provides-Extra: cli
Requires-Dist: pymongo <5.0,>=4.1.0 ; extra == 'cli'
Requires-Dist: typer[all] >=0.9.0 ; extra == 'cli'
Provides-Extra: dev
Requires-Dist: msgpack >=0.6.1 ; extra == 'dev'
Requires-Dist: sentry-sdk >=1.5.3 ; extra == 'dev'
Requires-Dist: pymongo <5.0,>=4.1.0 ; extra == 'dev'
Requires-Dist: beautifulsoup4 ; extra == 'dev'
Requires-Dist: aiocron ==1.8 ; extra == 'dev'
Requires-Dist: asyncssh ==2.11.0 ; extra == 'dev'
Requires-Dist: psutil ; extra == 'dev'
Requires-Dist: jsonpointer ; extra == 'dev'
Requires-Dist: IPython ; extra == 'dev'
Requires-Dist: multiprocessing-on-dill ; extra == 'dev'
Requires-Dist: dill ; extra == 'dev'
Requires-Dist: prettytable ; extra == 'dev'
Requires-Dist: sockjs-tornado ==1.0.7 ; extra == 'dev'
Requires-Dist: jsonschema >=2.6.0 ; extra == 'dev'
Requires-Dist: pip ; extra == 'dev'
Requires-Dist: black ; extra == 'dev'
Requires-Dist: boto3 ; extra == 'dev'
Requires-Dist: requests-aws4auth ; extra == 'dev'
Requires-Dist: biothings-client >=0.2.6 ; extra == 'dev'
Requires-Dist: cryptography >=38.0.3 ; extra == 'dev'
Requires-Dist: pytest ; extra == 'dev'
Requires-Dist: typer[all] >=0.9.0 ; extra == 'dev'
Requires-Dist: docker >=6.0.1 ; extra == 'dev'
Requires-Dist: pytest-mock ; extra == 'dev'
Requires-Dist: pytest-asyncio ; extra == 'dev'
Requires-Dist: aioresponses ; extra == 'dev'
Requires-Dist: pre-commit ==2.17.0 ; extra == 'dev'
Requires-Dist: sphinx >=5.3.0 ; extra == 'dev'
Requires-Dist: sphinx-rtd-theme >=2.0.0 ; extra == 'dev'
Requires-Dist: sphinx-reredirects >=0.1.3 ; extra == 'dev'
Requires-Dist: networkx <2.6,>=2.1 ; (python_version < "3.7.0") and extra == 'dev'
Requires-Dist: networkx <3.0,>=2.1 ; (python_version >= "3.7.0") and extra == 'dev'
Provides-Extra: docker
Requires-Dist: docker >=6.0.1 ; extra == 'docker'
Provides-Extra: docker_ssh
Requires-Dist: docker[ssh] >=6.0.1 ; extra == 'docker_ssh'
Provides-Extra: hub
Requires-Dist: pymongo <5.0,>=4.1.0 ; extra == 'hub'
Requires-Dist: beautifulsoup4 ; extra == 'hub'
Requires-Dist: aiocron ==1.8 ; extra == 'hub'
Requires-Dist: asyncssh ==2.11.0 ; extra == 'hub'
Requires-Dist: psutil ; extra == 'hub'
Requires-Dist: jsonpointer ; extra == 'hub'
Requires-Dist: IPython ; extra == 'hub'
Requires-Dist: multiprocessing-on-dill ; extra == 'hub'
Requires-Dist: dill ; extra == 'hub'
Requires-Dist: prettytable ; extra == 'hub'
Requires-Dist: sockjs-tornado ==1.0.7 ; extra == 'hub'
Requires-Dist: jsonschema >=2.6.0 ; extra == 'hub'
Requires-Dist: pip ; extra == 'hub'
Requires-Dist: black ; extra == 'hub'
Requires-Dist: boto3 ; extra == 'hub'
Requires-Dist: requests-aws4auth ; extra == 'hub'
Requires-Dist: biothings-client >=0.2.6 ; extra == 'hub'
Requires-Dist: cryptography >=38.0.3 ; extra == 'hub'
Requires-Dist: pytest ; extra == 'hub'
Requires-Dist: typer[all] >=0.9.0 ; extra == 'hub'
Requires-Dist: networkx <2.6,>=2.1 ; (python_version < "3.7.0") and extra == 'hub'
Requires-Dist: networkx <3.0,>=2.1 ; (python_version >= "3.7.0") and extra == 'hub'
Provides-Extra: opensearch
Requires-Dist: boto3 ; extra == 'opensearch'
Requires-Dist: requests-aws4auth ; extra == 'opensearch'
Provides-Extra: web_extra
Requires-Dist: msgpack >=0.6.1 ; extra == 'web_extra'
Requires-Dist: sentry-sdk >=1.5.3 ; extra == 'web_extra'

# BioThings SDK

[![Downloads](https://pepy.tech/badge/biothings)](https://pepy.tech/project/biothings)
[![biothings package](https://badge.fury.io/py/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![biothings_version](https://img.shields.io/pypi/pyversions/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![biothings_version](https://img.shields.io/pypi/format/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![biothings_version](https://img.shields.io/pypi/status/biothings.svg)](https://pypi.python.org/pypi/biothings)
[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-v2.0%20adopted-ff69b4.svg)](CODE_OF_CONDUCT.md)
[![Build Status](https://github.com/biothings/biothings.api/actions/workflows/test-build.yml/badge.svg)](https://github.com/biothings/biothings.api/actions/workflows/test-build.yml)
[![Tests Status](https://github.com/biothings/biothings.api/actions/workflows/run-tests.yml/badge.svg)](https://github.com/biothings/biothings.api/actions/workflows/run-tests.yml)
[![Documentation Status](https://readthedocs.org/projects/biothingsapi/badge/?version=latest)](https://docs.biothings.io/en/latest/?badge=latest)

## Quick Summary

BioThings SDK provides a Python-based toolkit to build high-performance data APIs (or web services) from a single data source or multiple data sources. It has the particular focus on building data APIs for biomedical-related entities, a.k.a "BioThings" (such as genes, genetic variants, drugs, chemicals, diseases, etc.).

Documentation about BioThings SDK can be found at https://docs.biothings.io

## Introduction

### What's BioThings?

We use "**BioThings**" to refer to objects of any biomedical entity-type
represented in the biological knowledge space, such as genes, genetic
variants, drugs, chemicals, diseases, etc.

### BioThings SDK

SDK represents "Software Development Kit". BioThings SDK provides a
[Python-based](https://www.python.org/) toolkit to build
high-performance data APIs (or web services) from a single data source
or multiple data sources. It has the particular focus on building data
APIs for biomedical-related entities, a.k.a "*BioThings*", though it's
not necessarily limited to the biomedical scope. For any given
"*BioThings*" type, BioThings SDK helps developers to aggregate
annotations from multiple data sources, and expose them as a clean and
high-performance web API.

The BioThings SDK can be roughly divided into two main components: data
hub (or just "hub") component and web component. The hub component
allows developers to automate the process of monitoring, parsing and
uploading your data source to an
[Elasticsearch](https://www.elastic.co/products/elasticsearch) backend.
From here, the web component, built on the high-concurrency [Tornado Web
Server](http://www.tornadoweb.org/en/stable/) , allows you to easily
setup a live high-performance API. The API endpoints expose
simple-to-use yet powerful query features using [Elasticsearch's
full-text query capabilities and query
language](https://www.elastic.co/guide/en/elasticsearch/reference/2.4/query-dsl-query-string-query.html#query-string-syntax).

### BioThings API

We also use "*BioThings API*" (or *BioThings APIs*) to refer to an API
(or a collection of APIs) built with BioThings SDK. For example, both
our popular [MyGene.Info](http://mygene.info/) and
[MyVariant.Info](http://myvariant.info/) APIs are built and maintained
using this BioThings SDK.

### BioThings Studio

*BioThings Studio* is a buildin, pre-configured environment used to build and
administer a BioThings API. At its core is the *Hub*, a backend service responsible for maintaining data up-to-date, producing data releases and
update API frontends.

## Installing BioThings SDK

You can install the latest stable BioThings SDK release with pip from
[PyPI](https://pypi.python.org/pypi), like:

    # default to install web requirements only for running an API
    pip install biothings
    # or include additional requirements useful for running an API on production
    # like msgpack, sentry-sdk pacakages
    pip install biothings[web_extra]

    # install hub requirements for running a hub (including CLI)
    pip install biothings[hub]

    # install CLI-only requirements if you only need CLI for develop a data plugin
    pip install biothings[cli]

    # need support for docker data plugin
    pip install biothings[hub,docker]
    # or if use ssh protocol to connect to a remote docker server
    pip install biothings[hub,docker_ssh]

    # just install everything for dev purpose
    pip install biothings[dev]

You can check more details for the optional dependecy packages directly in [setup.py](setup.py) file.

You can install the latest development version of BioThings SDK directly
from our github repository like:

    pip install git+https://github.com/biothings/biothings.api.git#egg=biothings

    # from a branch or commit
    pip install git+https://github.com/biothings/biothings.api.git@0.12.x#egg=biothings

    # include optional dependecies
    pip install git+https://github.com/biothings/biothings.api.git@0.12.x#egg=biothings[web_extra]

    # can be very useful to install in “editable” mode:
    pip install -e git+https://github.com/biothings/biothings.api.git@0.12.x#egg=biothings[web_extra]

Alternatively, you can download the source code, or clone the [BioThings
SDK repository](https://github.com/biothings/biothings.api) and run:

    pip install .
    # or
    pip install .[web_extra]

## Get started to build a BioThings API

We recommend to follow [this tutorial](https://docs.biothings.io/en/latest/tutorial/studio.html) to develop your first BioThings API in our pre-configured **BioThings Studio** development environment.

## Documentation

The latest documentation is available at https://docs.biothings.io.

## How to contribute

Please check out this [Contribution Guidelines](CONTRIBUTING.md) and [Code of Conduct](CODE_OF_CONDUCT.md) document.

## Active and past contributors

Please see [Contributors](Contributors.md)
