Skip to content

Laboratoire-de-Chemoinformatique/SynPlanner

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

docs/images/banner.png

SynPlanner – a tool for synthesis planning

Docs | Tutorials | Preprint | Paper | GUI demo

License Badge PyPI Version Supported Python Versions

SynPlanner is an open-source tool for retrosynthetic planning, designed to increase flexibility in training and developing customized retrosynthetic planning solutions from raw chemical data. It integrates Monte Carlo Tree Search (MCTS) with graph neural networks to evaluate applicable reaction rules (policy network) and the synthesizability of intermediate products (value network).

Overview

Unlock the power of SynPlanner for your chemical synthesis projects:

  • βœ… Ensure Data Quality: Effortlessly standardize and filter raw chemical reaction data.
  • πŸ§ͺ Customize Reaction Templates: Extract versatile reaction rules (templates) with a wide array of options.
  • 🧠 Advanced Model Training: Train robust policy and value networks using both supervised and reinforcement learning techniques.
  • πŸ—ΊοΈ Flexible Retrosynthesis: Perform in-depth retrosynthetic planning with diverse MCTS-based search strategies.
  • πŸ“Š Intuitive Visualization: Clearly visualize discovered synthetic paths and interact with an easy-to-use graphical user interface.

πŸš€ Quick Start

Get started with SynPlanner in a flash!

  1. Download Essential Data: Fetch the necessary pre-trained models and example data to begin your journey.

    synplan download_all_data --save_to synplan_data
  2. Explore Planning: Once the data is downloaded, you can try running a planning example. For more detailed instructions, see the Command-line interface or Tutorials sections.

    synplan planning --config configs/planning.yaml --targets synplan_data/benchmarks/sascore/targets_with_sascore_1.5_2.5.smi --reaction_rules synplan_data/uspto/uspto_reaction_rules.pickle --building_blocks synplan_data/building_blocks/building_blocks_em_sa_ln.smi --policy_network synplan_data/uspto/weights/ranking_policy_network.ckpt --results_dir planning_results_quickstart

    (Note: Ensure configs/planning.yaml exists or adjust the path accordingly. You might need to create a basic one or use one from the cloned repository if you haven't installed all package data globally.)

Installation

PyPI / pip

SynPlanner can also be installed directly using pip:

pip install SynPlanner

You can find the package on PyPI: SynPlanner on PyPI.

Conda (Linux)

SynPlanner can be installed using conda/mamba package managers. For more information on conda installation please refer to the official documentation.

To install SynPlanner, first clone the repository and move the package directory:

git clone https://github.com/Laboratoire-de-Chemoinformatique/SynPlanner.git
cd SynPlanner/

Next, create SynPlanner environment with synplan_linux.yaml file:

conda env create -f conda/synplan_linux.yaml
conda activate synplan
pip install .

After installation, SynPlanner can be added to Jupyter platform:

conda install ipykernel
python -m ipykernel install --user --name synplan --display-name "synplan"

Docker (CLI)

You can run the SynPlanner command-line interface inside a Docker container. Follow these steps to build, name, and test the image.

  1. Build the image

    Use the provided cli.Dockerfile to build a Linux AMD64 image. Name (tag) the image using the convention:

    <semver>-<interface>-<platform>

    For example, to build version 1.1.0 with the CLI interface on AMD64:

docker build \
  --platform linux/amd64 \
  -t synplan:1.1.0-cli-amd64 \
  -f cli.Dockerfile .
  1. Verify the image

    List your local images to confirm the tag:

docker images | grep synplan

You should see an entry similar to:

synplan 1.1.0-cli-amd64 ...
  1. Run and test the CLI

    Launch a container to execute the --help command and confirm the CLI is working:

docker run --rm --platform linux/amd64 -it synplan:1.1.0-cli-amd64 --help
  1. Example: planning with Docker

    You can also mount a local directory for data persistence. For example:

docker run --rm \
  --platform linux/amd64 \
  -v "$(pwd)":/app \
  -w /app \
  synplan:1.1.0-cli-amd64 \
  planning \
    --config configs/planning.yaml \
    --targets tutorials/synplan_data/benchmarks/sascore/targets_with_sascore_1.5_2.5.smi \
    --reaction_rules tutorials/synplan_data/uspto/uspto_reaction_rules.pickle \
    --building_blocks tutorials/synplan_data/building_blocks/building_blocks_em_sa_ln.smi \
    --policy_network tutorials/synplan_data/uspto/weights/ranking_policy_network.ckpt \
    --results_dir tutorials/planning_results

Tutorials

Colab

Colab tutorials do not require the local installation of SynPlanner but their performance is limited by available computational resources in Google Colab

Currently, two tutorials are available:

  • Retrosynthetic planning can be used for retrosynthetic planning of any target molecule with pre-trained retrosynthetic models and advanced analysis of the search tree.
  • SynPlanner benchmarking can be used for retrosynthetic planning of many target molecules for benchmarking or comparison analysis.

Jupyter

Jupyter Tutorials requires the local installation of SynPlanner but can be executed with advanced computational resources on local servers

Currently, five tutorials are available:

Quick-start tutorials. These tutorials can be used for easy execution of the default SynPlanner pipeline:

  • SynPlanner pipeline presents the full pipeline of SynPlanner starting from raw reaction data and resulting in ready-to-use retrosynthetic planning.

Advanced tutorials. These tutorials provide advanced explanations and options for each step in the SynPlanner pipeline:

Command-line interface

SynPlanner pipeline can be accessed by neat command-line interface (CLI). For example, retrosynthetic planning of several target molecules with pre-trained models can performed with the following commands:

synplan download_all_data --save_to synplan_data
synplan planning --config configs/planning.yaml --targets synplan_data/benchmarks/sascore/targets_with_sascore_1.5_2.5.smi --reaction_rules synplan_data/uspto/uspto_reaction_rules.pickle --building_blocks synplan_data/building_blocks/building_blocks_em_sa_ln.smi --policy_network synplan_data/uspto/weights/ranking_policy_network.ckpt --results_dir planning_results

More details about CLI can be found in SynPlanner Documentaion

Contributing

Contributions are welcome, in the form of issues or pull requests.

If you have a question or want to report a bug, please submit an issue.

Maintainers

Contributors

πŸ“œ How to Cite

If you use SynPlanner in your research, please cite our work:

Akhmetshin, T.; Zankov, D.; Gantzer, P.; Babadeev, D.; Pinigina, A.; Madzhidov, T.; Varnek, A. SynPlanner: An End-to-End Tool for Synthesis Planning. J. Chem. Inf. Model. 2025, 65 (1), 15–21. DOI: 10.1021/acs.jcim.4c02004

@article{akhmetshin2025synplanner,
    title = {SynPlanner: An End-to-End Tool for Synthesis Planning},
    author = {Akhmetshin, Tagir and Zankov, Dmitry and Gantzer, Philippe and Babadeev, Dmitry and Pinigina, Anna and Madzhidov, Timur and Varnek, Alexandre},
    journal = {Journal of Chemical Information and Modeling},
    volume = {65},
    number = {1},
    pages = {15--21},
    year = {2025},
    doi = {10.1021/acs.jcim.4c02004},
    note = {PMID: 39739735},
    url = {https://doi.org/10.1021/acs.jcim.4c02004}
}