poli 🧪: a library of discrete objective functions#
poli is a library of discrete objective functions for benchmarking optimization algorithms. Examples include:
🔬 stability of mutations from a wildtype protein (using foldx or rasp).
🧪 docking scores of ligands to proteins (using dockstring, pyscreener and pytdc).
đź’Š druglikeness or synthetic acccesibility of small molecules (using rdkit and pytdc).
Some of poli
’s features:
🔲 isolation of black box function calls inside conda environments. Don’t worry about clashes w. black box requirements, poli will create the relevant conda environments for you.
🗒️ logging each black box call using observers.
A numpy interface. Inputs are
np.array
s of strings, outputs arenp.array
s of floats.SMILES
andSELFIES
support for small molecule manipulation.
This documentation also discusses poli-baselines
, a collection of optimizers of these discrete black box functions.
We are running a benchmark!
Using poli
and poli-baselines
, we are running a benchmark comparing high-dimensional Bayesian optimization algorithms for discrete sequence.
Getting started#
A good place to start is the next chapter! Go to Getting Started.
To install poli
and poli-baselines
, we recommend creating a fresh conda environment
conda create -n poli-base python=3.9
conda activate poli-base
pip install git+https://github.com/MachineLearningLifeScience/poli.git@dev
pip install git+https://github.com/MachineLearningLifeScience/poli-baselines.git@main
poli
also runs on Google Colab. Here is a small example of how to run one of the objective functions..
Black-box objective functions#
Toy problems#
Small molecules#
Proteins#
Black-box optimization algorithms#
On top of poli
, we provide poli-baselines
, a collection of black-box optimization algorithms (focusing especially on discrete sequences). Examples include
Discrete#
Continuous#
Cite us and other relevant work#
If you use certain black boxes, we expect you to cite the relevant work. Check inside the documentation of each black box for the relevant references.
Contribute problems or solvers#
These are a couple of guides about how to contribute a new problem factory (i.e. black-box objective function), or a new optimization algorithm.