OnToma is a python module that helps you map your disease/phenotype terms to the
ontology we use in the Open Targets platform.
The ontology we use in the Open Targets platform is a subset (aka. _slim_) of
the EFO ontology _plus_ any HPO terms for which a valid EFO mapping could
not be found.
*features*
* Wrap OLS, OXO, Zooma in a pythonic API
* Always tries to output full URI
* Tries to find mappings iteratively using the faster methods first
* Checks if mapping is in the subset of EFO that gets included in the
Open Targets platform
* *tries to* follow the procedure highlighted in https://github.com/opentargets/data_release/blob/master/diagram.jpg
# Usage
## Installing
`pip install ontoma`
## Quickstart
Looking for a disease or phenotype string is simple:
```python
from ontoma import OnToma
otmap = OnToma()
print(otmap.find_term('asthma'))
#outputs:
'http://www.ebi.ac.uk/efo/EFO_0000270'
```
you can obtain more details using the `verbose` flag:
```python
print(otmap.find_term('asthma',verbose=True))
#outputs something similar to:
{'term':'http://www.ebi.ac.uk/efo/EFO_0000270','label':'asthma',
'source':'EFO OBO','quality':'match' ...}
```
**From the command line**
The command line version can be invoked with `ontoma`
(type `ontoma --help` to find out about the usage):
```sh
ontoma <input_file> <output_file>
```
where input file can be replaced with `-` to read from stdin and write to stdout.
Which means that to read from a previous command, using pipes:
```sh
echo 'asthma' | ontoma - <output_file>
```
will output a file `test.txt` containing the result, where it came from and the
degree of confidence of the match (one of {match, fuzzy, check}):
```
http://www.ebi.ac.uk/efo/EFO_0000270 asthma EFO OBO match
```
Piping also works for the output. If you want to find the string "mymatch" from
the results, you can:
```sh
ontoma <input_file> - | grep "mymatch"
```
More detailed documentation is at [![Documentation Status](https://readthedocs.org/projects/ontoma/badge/?version=stable)](http://ontoma.readthedocs.io/en/stable/?badge=stable)
http://ontoma.readthedocs.io/en/stable/
# Developing
## set up your environment
First clone this repo
```
git clone https://github.com/opentargets/OnToma.git
```
[Install pipenv](https://pipenv.readthedocs.io/en/latest/install/#homebrew-installation-of-pipenv) and then run
```sh
pipenv install --dev
```
to get all development dependencies installed.
Test everything is working:
```sh
pipenv run pytest
```
**if you don't like pipenv** you can stick with the more traditional
setuptools/virtualenv setup:
```sh
git clone https://github.com/opentargets/OnToma.git
virtualenv -p python3 venv
source venv/bin/activate
pip install --editable .
```
## How to add a dependency
**Add to both pipenv AND setup.py**
To add a dep for a library, add it by hand to `setup.py`, then add it separately
to `Pipfile`, so that it shows up both as a transitive dependency and in your
locked dev environment
## Release to PyPi
Simply run `./bumpversion.sh`
The script will tag, push and trigger a new CI run.
The package will be automatically uploaded to pypi.