Molecular reinforcement learning
Molecular Reinforcement Learning
Unlocking reinforcement learning for drug design
MRL is an open source python library designed to unlock the potential of drug design with reinforcement learning.
MRL bridges the gap between generative models and practical drug discovery by enabling fine-tuned control over chemical spaces. Control what structures are generated and where they occur.
MRL is suitable for all stages of drug discovery, from high diversity hit expansion screens to hyper-focused lead optimization
MRL can be applied to:
View our tutorials for more examples
MRL can be used without installing via Google Collab. Open any page in the documentation and click the "Open in Collab" button to open the notebook in Google Collab. Make sure to change the runtime to GPU.
MRL is available via Anaconda.
conda create -n mrl python=3.7 conda install -c dmai -c rdkit -c pytorch -c fastai -c conda-forge mrl pip install selfies>=2.0.0
MRL is available via pypi. First install pytorch. Then run the following:
pip install mrl-pypi
If you plan to develop the library or want the most up to date release, use an editable install. First install pytorch. Then run the following:
git clone https://github.com/DarkMatterAI/mrl pip install -e .
How to use
Here's an example of using a MRL pre-trained model to generate compounds based on the ChEMBL library:
from mrl.model_zoo import LSTM_LM_Small_Chembl agent = LSTM_LM_Small_Chembl() preds, log_probs = agent.model.sample_no_grad(512, 90) smiles = agent.reconstruct(preds) smiles[:10] >['COC(=O)C1=C(Nc2ccc(Br)cc2)SCC1=O', 'Cc1nnc2n1CN(C(C)=O)CC2c1ccc2c(c1)OCO2', 'COc1ccc(C(=O)NNc2c(C#N)cnn2-c2ccccc2)c(OC)c1', 'COC(=O)C1(C)C=C(N2CC2)C(=O)C(C(C)=O)=C1', 'CC(O)(c1cccc(Cl)c1)c1nc(-c2cccc(-n3cncn3)c2)co1', 'Clc1cccc2ccc(-n3c(-c4ccccc4)nc4ccccc4c3=O)nc12', 'Cc1cccc(NC(=O)CSc2nnnn2-c2ccc3c(c2)OCCO3)c1', 'Nc1n[nH]c(=O)c2cc(NCc3ccc(C(=O)O)c(Cl)c3)ccc12', 'CCOc1ccc(NC(=O)c2oc3ccccc3c2NC(=O)c2ccccc2OC)cc1', 'Cc1ccc2c(N3CCN(CC(=O)Nc4ccc(N5CCCCC5=O)cc4)CC3)cccc2n1']
See the MRL documentation page for full documentaion
See the MRL tutorials page for examples
MRL uses nbdev for development. This allows us to build code, tests and documentation at the same time.
To contribute, install nbdev. Then run
nbdev_install_git_hooks in your terminal. This sets up git hooks, which clean up the notebooks to remove the extraneous stuff stored in the notebooks which causes unnecessary merge conflicts.
If you make changes to a notebook, run
nbdev_build_lib to update the library.
If you make changes to the library, run
nbdev_update_lib to update the notebooks.
Submit PRs to the
Before submitting a PR, run
nbdev_diff_nbs to verify the notebooks and the library match.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.