This repository holds the code that runs The Open Tree Of Life API, which talks to the backend datastore phylesystem.
This repo uses peyotl to interact with a copy of the phylesystem data on a server.
The code here provides a web services API to that data store.
The best description of the phylesystem is in the published paper in Bioinformatics.
See docs/ for examples of how to use the API with curl.
There are a dependencies installable from pypi using pip, and the open tree of life client-side python library is also used on the server side for handling some aspects of NexSON.
$ pip install -r requirements.txt
$ cd ..
The first time you run, you'll need to:
$ git clone https://github.com/OpenTreeOfLife/peyotl.git
$ cd peyotl
$ pip install -r requirements.txt
$ python setup.py develop
Subsequently changing to the peyotl directory and running
$ git pull origin master
should be sufficient to get the latest changes.
$ cp private/config.exampl private/config
then open private/config in a text editor and tweak it.
-
repo_parentshould be a file path which holds 1 or more phyleystem-# repositories with the data. -
git_sshandpkey
The behavior of the log for functions run from with a request is determined by the config file. Specifically, the
[logging]
level = debug
filepath = /tmp/my-api.log
formatter = rich
section of that file.
If you are developer of the phylesystem-api, and you want to see logging for functions that are not called in the context of a request, you can use the environmental variables:
OT_API_LOG_FILE_PATHfilepath of log file (StreamHandler if omitted)OT_API_LOGGING_LEVEL(NotSet, debug, info, warning, error, or critical)OT_API_LOGGING_FORMAT"rich", "simple" or "None" (None is default)
This git repository is meant to be a "web2py application", so you need to
create a symlink in $WEB2PY_ROOT/applications to the API repo directory:
cd $WEB2PY_ROOT/application
ln -sf /dir/with/api.opentreeoflife.org api
See docs/ for examples of how to use the API with curl.
See peyotl has wrappers for accessing phylesystem web services. See the peyotl wiki for details.
See the CREDITS file
Recommended .git/hooks/pre-commit:
#!/bin/sh
if ! black --check phylesystem_api/phylesystem_api phylesystem_api/setup.py phylesystem_api/tests ; then
black phylesystem_api/phylesystem_api phylesystem_api/setup.py phylesystem_api/tests
echo "code reformatted. commit again!"
exit 1
fi
