Copyright (c) 2009-2022 EPAM Systems, Inc.
Licensed under the Apache License version 2.0
This repository includes:
- Bingo: Chemistry search engine for Oracle, Microsoft SQL Server and PostgreSQL databases
- Bingo-Elastic: Set of APIs for efficient chemistry search in Elasticsearch
- Indigo: Universal cheminformatics library with bindings to .NET, Java, Python, R and WebAssembly, and the following tools:
- Legio: GUI application for combinatorial chemistry
- ChemDiff: Visual comparison of two SDF or SMILES files
- indigo-depict: Molecule and reaction rendering utility
- indigo-cano: Canonical SMILES generator
- indigo-deco: R-Group deconvolution utility
Detailed documentation is available at http://lifescience.opensource.epam.com
Changelog could be found in CHANGELOG.md.
https://lifescience.opensource.epam.com/download/indigo.html
- .NET: https://www.nuget.org/packages/Indigo.Net
- Java: https://search.maven.org/search?q=g:com.epam.indigo
- Python: https://pypi.org/project/epam.indigo/
Main directory structure layout:
api
: Indigo API sourcesbingo
: Bingo sourcescore
: Core algorithms and data structures sourcesthird_party
: sources for third-party librariesutils
: utilities sources
Each project is placed in the corresponding directory with CMakeList.txt configuration file, that does not include other projects. In order to build the whole project with the correct references you need to use CMake configurations from the build_scripts directory.
To build the project from the sources, the following tools should be installed:
Required:
- GIT 1.8.2+
- C/C++ compilers with C++14 support (GCC, Clang and MSVC are officially supported)
- CMake 3.4+
- Python 3.6+
Required to build all targets:
- JDK 1.8+
- .NET Standard 2.0+
Required to build Indigo-WASM:
- Emscripten SDK
- Ninja
On Linux use python3 insted of python. Using virtual environment might be required as well.
To be able to run backend API test set environment variable by running this command export INDIGO_SERVICE_URL=http://localhost:5000/v2
or
$env:INDIGO_SERVICE_URL="http://localhost:5000/v2"
(in powershell)
Python
- wheel package installed. Command:
python -m pip install wheel
- setuptools version less than 72.0.0 package installed. Command:
python -m pip install setuptools==68.0.0
- waitress package installed (to run backend API test). Command:
python -m pip install waitress
- flasgger package installed (to run backend API test). Command:
python -m pip install flasgger
- psycopg2 package installed (to run backend API test). Command:
python -m pip install psycopg2
- sqlalchemy package installed (to run backend API test). Command:
python -m pip install sqlalchemy
- numpy package installed (to run backend API test). Command:
python -m pip install numpy
- celery package installed (to run backend API test). Command:
python -m pip install celery
- marshmallow package installed (to run backend API test). Command:
python -m pip install marshmallow
- redis package installed (to run backend API test). Command:
python -m pip install redis
- flask_httpauth package installed (to run backend API test). Command:
python -m pip install flask_httpauth
- pyparsing package installed (to run backend API test). Command:
python -m pip install pyparsing
- requests package installed (to run backend API test). Command:
python -m pip install requests
On Windows use cmd to run the commands.
-
Create build folder
mkdir build
-
Move to build folder
cd build
-
Run CMake to configure the project with desired options. For instance:
cmake .. -DBUILD_INDIGO=ON -DBUILD_INDIGO_WRAPPERS=ON -DBUILD_INDIGO_UTILS=ON
-
Build Indigo from console:
cmake --build . --config Release --target <target name>
Replace <target name> with any of the following targets you need: { ALL_BUILD (on Windows) or all (on Linux) | indigo-dotnet | indigo-java | indigo-python }
Build results could be collected from Indigo/dist folder.
'indigo-python' target is commonly used.
Befor run any test you have to build and install indigo-python
- Build indigo-python using
--target indigo-python
or--target ALL_BUILD
(on Windows) or--target all
(on Linux). See Build instruction above.
- On Windows the package should be in 'Indigo/api/python/dist' folder
- On Linux it is located in 'Indigo\dist' folder
Package will be named like 'epam.indigo-<version-arch>.whl'. For instance: epam.indigo-1.29.0.dev2-py3-none-win_amd64.whl
-
Install package using pip
python -m pip uninstall <path-to-.whl-file> -y
Replace <path-to-.whl-file> with the right path to .whl package. For instance:
python -m pip uninstall ../api/python/dist/epam.indigo-1.29.0.dev2-py3-none-win_amd64.whl
-
Run integration test
to run all test
python api/tests/integration/test.py -t 1
to run tests by mask
test_name
python api/tests/integration/test.py -t 1 -p test_name
- Install epam-indigo
- Run backend service :
cd utils/indigo-service/backend/service
cp v2/common/config.py .
waitress-serve --listen="127.0.0.1:5000 [::1]:5000" app:app
you may use any port instead of 5000
- Run backend API test:
- run test
python utils/indigo-service/backend/service/tests/api/indigo_test.py
use-k test_name
to run test by pattern.
- run test
- Git
Make sure git is running from path:
>git --version
git version 2.26.2.windows.1
- Python (https://www.python.org/downloads/)
Make sure python is running from path:
>python --version
Python 3.9.0
- cmake (https://cmake.org/download/)
Make sure cmake is running from path:
>cmake --version
cmake version 3.18.4
- Install ninja (https://github.com/ninja-build/ninja/releases)
Download corresponding ninja-xxx.zip and unpack to folder on path. Make sure it's running from path:
>ninja --version
1.10.2
- Install emscripten sdk (https://github.com/emscripten-core/emsdk)
>git clone https://github.com/emscripten-core/emsdk.git
>cd emsdk
>./emsdk install latest
>./emsdk activate latest
>source ./emsdk_env.sh
Note: On Windows, run emsdk
instead of ./emsdk
, and emsdk_env.bat
instead of source ./emsdk_env.sh
, use cmd
instead of powershell
.
Clone (or checkout) Indigo repository
>git clone https://github.com/epam/Indigo.git
For each new session, set environment anew:
>cd emsdk
>./emsdk activate latest
If fresh build:
>mkdir build
>cd build
Now build:
>emcmake cmake .. -DCMAKE_BUILD_TYPE=Debug -G Ninja
>ninja indigo-ketcher-js-test