Systemic Evolutionary Chemical Space Exploration for Drug Discovery

Overview

SECSE


SECSE: Systemic Evolutionary Chemical Space Explorer

plot

Chemical space exploration is a major task of the hit-finding process during the pursuit of novel chemical entities. Compared with other screening technologies, computational de novo design has become a popular approach to overcome the limitation of current chemical libraries. Here, we reported a de novo design platform named systemic evolutionary chemical space explorer (SECSE). The platform was conceptually inspired by fragment-based drug design, that miniaturized a “lego-building” process within the pocket of a certain target. The key of virtual hits generation was then turned into a computational search problem. To enhance search and optimization, human intelligence and deep learning were integrated. SECSE has the potential in finding novel and diverse small molecules that are attractive starting points for further validation.

Tutorials and Usage


  1. Set Environment Variables
    export $SECSE=path/to/SECSE
    if you use AutoDock Vina for docking: (download here)
    export $VINA=path/to/AutoDockVINA
    if you use Gilde for docking (additional installation & license required):
    export $SCHRODINGER=path/to/SCHRODINGER

  2. Give execution permissions to the SECSE directory
    chmod -R +X path/to/SECSE

  3. Input fragments: a tab split .smi file without header. See demo here.

  4. Parameters in config file:
    [DEFAULT]

    • workdir, working directory, create if not exists, otherwise overwrite, type=str
    • fragments, file path to seed fragments, smi format, type=str
    • num_gen, number of generations, type=int
    • num_per_gen, number of molecules generated each generation, type=int
    • seed_per_gen, number of selected seed molecules per generation, default=1000, type=int
    • start_gen, number of staring generation, default=0, type=int
    • docking_program, name of docking program, AutoDock-Vina (input vina) or Glide (input glide) , default=vina, type=str

    [docking]

    • target, protein PDBQT if use AutoDock Vina; Grid file if choose Glide, type=str
    • RMSD, docking pose RMSD cutoff between children and parent, default=2, type=float
    • delta_score, decreased docking score cutoff between children and parent, default=-1.0, type=float
    • score_cutoff, default=-9, type=float

    Parameters when docking by AutoDock Vina:

    • x, Docking box x, type=float
    • y, Docking box y, type=float
    • z, Docking box z, type=float
    • box_size_x, Docking box size x, default=20, type=float
    • box_size_y, Docking box size y, default=20, type=float
    • box_size_z, Docking box size z, default=20, type=float

    [deep learning]

    • mode, mode of deep learning modeling, 0: not use, 1: modeling per generation, 2: modeling overall after all the generation, default=0, type=int
    • dl_per_gen, top N predicted molecules for docking, default=100, type=int
    • dl_score_cutoff, default=-9, type=float

    [properties]

    • MW, molecular weights cutoff, default=450, type=int
    • logP_lower, minimum of logP, default=0.5, type=float
    • logP_upper, maximum of logP, default=7, type=float
    • chiral_center, maximum of chiral center,default=3, type=int
    • heteroatom_ratio, maximum of heteroatom ratio, default=0.35, type=float
    • rotatable_bound_num, maximum of rotatable bound, default=5, type=int
    • rigid_body_num, default=2, type=int

    Config file of a demo case phgdh_demo_vina.ini

  5. Run SECSE
    python $SECSE/run_secse.py --config path/to/config

  6. Output files

    • merged_docked_best_timestamp_with_grow_path.csv: selected molecules and growing path
    • selected.sdf: 3D conformers of all selected molecules

Dependencies


GNU Parallel installation

numpy~=1.20.3, pandas~=1.3.3, pandarallel~=1.5.2, tqdm~=4.62.2, biopandas~=0.2.9, openbabel~=3.1.1, rdkit~=2021.03.5, chemprop~=1.3.1, torch~=1.9.0+cu111

Citation


Lu, C.; Liu, S.; Shi, W.; Yu, J.; Zhou, Z.; Zhang, X.; Lu, X.; Cai, F.; Xia, N.; Wang, Y. Systemic Evolutionary Chemical Space Exploration For Drug Discovery. ChemRxiv 2021. This content is a preprint and has not been peer-reviewed.

License


SECSE is released under Apache License, Version 2.0.

You might also like...
ETMO: Evolutionary Transfer Multiobjective Optimization

ETMO: Evolutionary Transfer Multiobjective Optimization To promote the research on ETMO, benchmark problems are of great importance to ETMO algorithm

Guiding evolutionary strategies by (inaccurate) differentiable robot simulators @ NeurIPS, 4th Robot Learning Workshop
Guiding evolutionary strategies by (inaccurate) differentiable robot simulators @ NeurIPS, 4th Robot Learning Workshop

Guiding Evolutionary Strategies by Differentiable Robot Simulators In recent years, Evolutionary Strategies were actively explored in robotic tasks fo

BESS: Balanced Evolutionary Semi-Stacking for Disease Detection via Partially Labeled Imbalanced Tongue Data

Balanced-Evolutionary-Semi-Stacking Code for the paper ''BESS: Balanced Evolutionary Semi-Stacking for Disease Detection via Partially Labeled Imbalan

This is the repo for the paper `SumGNN: Multi-typed Drug Interaction Prediction via Efficient Knowledge Graph Summarization'. (published in Bioinformatics'21)

SumGNN: Multi-typed Drug Interaction Prediction via Efficient Knowledge Graph Summarization This is the code for our paper ``SumGNN: Multi-typed Drug

Cancer Drug Response Prediction via a Hybrid Graph Convolutional Network
Cancer Drug Response Prediction via a Hybrid Graph Convolutional Network

DeepCDR Cancer Drug Response Prediction via a Hybrid Graph Convolutional Network This work has been accepted to ECCB2020 and was also published in the

Multi-modal co-attention for drug-target interaction annotation and Its Application to SARS-CoV-2

CoaDTI Multi-modal co-attention for drug-target interaction annotation and Its Application to SARS-CoV-2 Abstract Environment The test was conducted i

The code for SAG-DTA: Prediction of Drug–Target Affinity Using Self-Attention Graph Network.

SAG-DTA The code is the implementation for the paper 'SAG-DTA: Prediction of Drug–Target Affinity Using Self-Attention Graph Network'. Requirements py

[ICLR 2021] Rank the Episodes: A Simple Approach for Exploration in Procedurally-Generated Environments.
[ICLR 2021] Rank the Episodes: A Simple Approach for Exploration in Procedurally-Generated Environments.

[ICLR 2021] RAPID: A Simple Approach for Exploration in Reinforcement Learning This is the Tensorflow implementation of ICLR 2021 paper Rank the Episo

A mini library for Policy Gradients with Parameter-based Exploration, with reference implementation of the ClipUp optimizer  from NNAISENSE.
A mini library for Policy Gradients with Parameter-based Exploration, with reference implementation of the ClipUp optimizer from NNAISENSE.

PGPElib A mini library for Policy Gradients with Parameter-based Exploration [1] and friends. This library serves as a clean re-implementation of the

Comments
  • Problem running demo

    Problem running demo

    Hi!

    When I try to run the demo with the command below. python $SECSE/run_secse.py --config demo/phgdh_demo_vina.ini

    It generates pandas.errors.EmptyDataError: No columns to parse from file, what should I do to solve it? Thank you!

    Here is the output

    **************************************************************************************** 
          ____    _____    ____   ____    _____ 
         / ___|  | ____|  / ___| / ___|  | ____|
         \___ \  |  _|   | |     \___ \  |  _|  
          ___) | | |___  | |___   ___) | | |___ 
         |____/  |_____|  \____| |____/  |_____|
    /home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/core/generic.py:2882: UserWarning: The spaces in these column names will not be changed. In pandas versions < 0.14, spaces were converted to underscores.
     method=method,
    Table 'G-001' already exists.
    
    ******************************************************************
    Input fragment file: /home/bruce/Work/CADD/SECSE/code/demo/demo_1020.smi
    Target grid file: /home/bruce/Work/CADD/SECSE/code/demo/PHGDH_6RJ3_for_vina.pdbqt
    Workdir: /home/bruce/Work/CADD/SECSE/code/res/
    
    
    ************************************************** 
    Generation  0 ...
    Step 1: Docking with Autodock Vina ...
    /home/bruce/Work/CADD/SECSE/code/secse/evaluate/ligprep_vina_parallel.sh /home/bruce/Work/CADD/SECSE/code/res/generation_0 /home/bruce/Work/CADD/SECSE/code/demo/demo_1020.smi /home/bruce/Work/CADD/SECSE/code/demo/PHGDH_6RJ3_for_vina.pdbqt 20.9 -10.4 3.0 20.0 20.0 25.0 10
    find /home/bruce/Work/CADD/SECSE/code/res/generation_0/sdf_files -name "*sdf" | xargs -n 100 cat > /home/bruce/Work/CADD/SECSE/code/res/generation_0/docking_outputs_with_score.sdf
    Docking time cost: 0.12 min.
    Step 2: Ranking docked molecules...
    9 cmpds after evaluate
    The evaluate score cutoff is: -9.0
    9 final seeds.
    
    ************************************************** 
    Generation  1 ...
    Step 1: Mutation
    No rule class:  B-001
    No rule class:  G-003
    No rule class:  G-004
    No rule class:  G-005
    No rule class:  G-006
    No rule class:  G-007
    No rule class:  M-001
    No rule class:  M-002
    No rule class:  M-003
    No rule class:  M-004
    No rule class:  M-005
    No rule class:  M-006
    No rule class:  M-007
    No rule class:  M-008
    No rule class:  M-009
    No rule class:  M-010
    No rule class: G-002
    Step 2: Filtering all mutated mols
    sh /home/bruce/Work/CADD/SECSE/code/secse/growing/filter_parallel.sh /home/bruce/Work/CADD/SECSE/code/res/generation_1 1 demo/phgdh_demo_vina.ini 10
    Filter runtime: 0.00 min.
    Traceback (most recent call last):
     File "/home/bruce/Work/CADD/SECSE/code/secse/run_secse.py", line 80, in <module>
       main()
     File "/home/bruce/Work/CADD/SECSE/code/secse/run_secse.py", line 65, in main
       workflow.grow()
     File "/home/bruce/Work/CADD/SECSE/code/secse/grow_processes.py", line 208, in grow
       self._filter_df = pd.read_csv(os.path.join(self.workdir_now, "filter.csv"), header=None)
     File "/home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/util/_decorators.py", line 311, in wrapper
       return func(*args, **kwargs)
     File "/home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/io/parsers/readers.py", line 586, in read_csv
       return _read(filepath_or_buffer, kwds)
     File "/home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/io/parsers/readers.py", line 482, in _read
       parser = TextFileReader(filepath_or_buffer, **kwds)
     File "/home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/io/parsers/readers.py", line 811, in __init__
       self._engine = self._make_engine(self.engine)
     File "/home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/io/parsers/readers.py", line 1040, in _make_engine
       return mapping[engine](self.f, **self.options)  # type: ignore[call-arg]
     File "/home/bruce/Downloads/Softwares/Anaconda/envs/secse/lib/python3.7/site-packages/pandas/io/parsers/c_parser_wrapper.py", line 69, in __init__
       self._reader = parsers.TextReader(self.handles.handle, **kwds)
     File "pandas/_libs/parsers.pyx", line 549, in pandas._libs.parsers.TextReader.__cinit__
    pandas.errors.EmptyDataError: No columns to parse from file
    
    opened by BW15061999 17
  • Question about running the demo code

    Question about running the demo code

    Hi authors,

    I have tried to run your demo code in README.md, but got some errors.

    Command

    python /home/xxx/workspace/off-SECSE/secse/run_secse.py --config ./config.ini
    

    Output

     **************************************************************************************** 
           ____    _____    ____   ____    _____ 
          / ___|  | ____|  / ___| / ___|  | ____|
          \___ \  |  _|   | |     \___ \  |  _|  
           ___) | | |___  | |___   ___) | | |___ 
          |____/  |_____|  \____| |____/  |_____|
    
    ******************************************************************
    Input fragment file: /home/xxx/workspace/off-SECSE/fy-run/demo001/ligand.smi
    Target grid file: /home/xxx/workspace/off-SECSE/fy-run/demo001/receptor.pdbqt
    Workdir: /home/xxx/workspace/off-SECSE/fy-run/demo001/
    
    Step 1: Docking with Autodock Vina ...
    /home/xxx/workspace/off-SECSE/secse/evaluate/ligprep_vina_parallel.sh /home/xxx/workspace/off-SECSE/fy-run/demo001/generation_0 /home/xxx/workspace/off-SECSE/fy-run/demo001/ligand.smi /home/t-yafan/workspace/off-SECSE/fy-run/demo001/receptor.pdbqt 20.9 -10.4 3.0 20.0 20.0 25.0 10
    find /home/xxx/workspace/off-SECSE/fy-run/demo001/generation_0/sdf_files -name "*sdf" | xargs -n 100 cat > /home/xxx/workspace/off-SECSE/fy-run/demo001/generation_0/docking_outputs_with_score.sdf
    Docking time cost: 0.11 min.
    Step 2: Ranking docked molecules...
    9 cmpds after evaluate
    The evaluate score cutoff is: -9.0
    9 final seeds.
    
     ************************************************** 
    Generation  1 ...
    Step 1: Mutation
    Traceback (most recent call last):
      File "/home/xxx/workspace/off-SECSE/secse/run_secse.py", line 70, in <module>
        main()
      File "/home/xxx/workspace/off-SECSE/secse/run_secse.py", line 55, in main
        workflow.grow()
      File "/home/xxx/workspace/off-SECSE/secse/grow_processes.py", line 159, in grow
        header = mutation_df(self.winner_df, self.workdir, self.cpu_num, self.gen)
      File "/home/xxx/workspace/off-SECSE/secse/growing/mutation/mutation.py", line 166, in mutation_df
        mutation = Mutation(5000, workdir)
      File "/home/xxx/workspace/off-SECSE/secse/growing/mutation/mutation.py", line 29, in __init__
        self.load_common_rules()
      File "/home/xxx/workspace/off-SECSE/secse/growing/mutation/mutation.py", line 50, in load_common_rules
        c.execute(sql)
    sqlite3.OperationalError: no such table: B-001
    

    It seems that the file secse/growing/mutation/rules_demo.db is missing in the repo. How can I fix it?

    Thanks!

    opened by fyabc 5
  • All dockings do not work because there's no gridding process.

    All dockings do not work because there's no gridding process.

    Hi, I was trying out the repo when I realised that neither the autodock nor glide is able to run because there was no gridding process, resulting in no grid files. >.<

    opened by yipy0005 3
Releases(v1.1.0)
Generating Fractals on Starknet with Cairo

StarknetFractals Generating the mandelbrot set on Starknet Current Implementation generates 1 pixel of the fractal per call(). It takes a few minutes

Orland0x 10 Jul 16, 2022
[ArXiv 2021] Data-Efficient Instance Generation from Instance Discrimination

InsGen - Data-Efficient Instance Generation from Instance Discrimination Data-Efficient Instance Generation from Instance Discrimination Ceyuan Yang,

GenForce: May Generative Force Be with You 93 Dec 25, 2022
Source code for the plant extraction workflow introduced in the paper “Agricultural Plant Cataloging and Establishment of a Data Framework from UAV-based Crop Images by Computer Vision”

Plant extraction workflow Source code for the plant extraction workflow introduced in the paper "Agricultural Plant Cataloging and Establishment of a

Maurice Günder 0 Apr 22, 2022
Image Segmentation using U-Net, U-Net with skip connections and M-Net architectures

Brain-Image-Segmentation Segmentation of brain tissues in MRI image has a number of applications in diagnosis, surgical planning, and treatment of bra

Angad Bajwa 8 Oct 27, 2022
Learning Modified Indicator Functions for Surface Reconstruction

Learning Modified Indicator Functions for Surface Reconstruction In this work, we propose a learning-based approach for implicit surface reconstructio

4 Apr 18, 2022
ICNet for Real-Time Semantic Segmentation on High-Resolution Images, ECCV2018

ICNet for Real-Time Semantic Segmentation on High-Resolution Images by Hengshuang Zhao, Xiaojuan Qi, Xiaoyong Shen, Jianping Shi, Jiaya Jia, details a

Hengshuang Zhao 594 Dec 31, 2022
A PyTorch implementation for V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation

A PyTorch implementation of V-Net Vnet is a PyTorch implementation of the paper V-Net: Fully Convolutional Neural Networks for Volumetric Medical Imag

Matthew Macy 606 Dec 21, 2022
[BMVC2021] The official implementation of "DomainMix: Learning Generalizable Person Re-Identification Without Human Annotations"

DomainMix [BMVC2021] The official implementation of "DomainMix: Learning Generalizable Person Re-Identification Without Human Annotations" [paper] [de

Wenhao Wang 17 Dec 20, 2022
Source codes for Improved Few-Shot Visual Classification (CVPR 2020), Enhancing Few-Shot Image Classification with Unlabelled Examples

Source codes for Improved Few-Shot Visual Classification (CVPR 2020), Enhancing Few-Shot Image Classification with Unlabelled Examples (WACV 2022) and Beyond Simple Meta-Learning: Multi-Purpose Model

PLAI Group at UBC 42 Dec 06, 2022
The `rtdl` library + The official implementation of the paper

The `rtdl` library + The official implementation of the paper "Revisiting Deep Learning Models for Tabular Data"

Yandex Research 510 Dec 30, 2022
ROS Basics and TurtleSim

Waypoint Follower Anna Garverick This package draws given waypoints, then waits for a service call with a start position to send the turtle to each wa

Anna Garverick 1 Dec 13, 2021
Subdivision-based Mesh Convolutional Networks

Subdivision-based Mesh Convolutional Networks The official implementation of SubdivNet in our paper, Subdivion-based Mesh Convolutional Networks Requi

Zheng-Ning Liu 181 Dec 28, 2022
Official implementation of particle-based models (GNS and DPI-Net) on the Physion dataset.

Physion: Evaluating Physical Prediction from Vision in Humans and Machines [paper] Daniel M. Bear, Elias Wang, Damian Mrowca, Felix J. Binder, Hsiao-Y

Hsiao-Yu Fish Tung 18 Dec 19, 2022
In Search of Probeable Generalization Measures

In Search of Probeable Generalization Measures Exciting News! In Search of Probeable Generalization Measures has been accepted to the International Co

Mahdi S. Hosseini 6 Sep 11, 2022
Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line Segment Detection"

M-LSD: Towards Light-weight and Real-time Line Segment Detection Official Tensorflow implementation of "M-LSD: Towards Light-weight and Real-time Line

NAVER/LINE Vision 357 Jan 04, 2023
PyTorch implementation of "Debiased Visual Question Answering from Feature and Sample Perspectives" (NeurIPS 2021)

D-VQA We provide the PyTorch implementation for Debiased Visual Question Answering from Feature and Sample Perspectives (NeurIPS 2021). Dependencies P

Zhiquan Wen 19 Dec 22, 2022
Fine-Tune EleutherAI GPT-Neo to Generate Netflix Movie Descriptions in Only 47 Lines of Code Using Hugginface And DeepSpeed

GPT-Neo-2.7B Fine-Tuning Example Using HuggingFace & DeepSpeed Installation cd venv/bin ./pip install -r ../../requirements.txt ./pip install deepspe

Nikita 180 Jan 05, 2023
Implementation of "JOKR: Joint Keypoint Representation for Unsupervised Cross-Domain Motion Retargeting"

JOKR: Joint Keypoint Representation for Unsupervised Cross-Domain Motion Retargeting Pytorch implementation for the paper "JOKR: Joint Keypoint Repres

45 Dec 25, 2022
Blind visual quality assessment on 360° Video based on progressive learning

Blind visual quality assessment on omnidirectional or 360 video (ProVQA) Blind VQA for 360° Video via Progressively Learning from Pixels, Frames and V

5 Jan 06, 2023
Designing a Practical Degradation Model for Deep Blind Image Super-Resolution (ICCV, 2021) (PyTorch) - We released the training code!

Designing a Practical Degradation Model for Deep Blind Image Super-Resolution Kai Zhang, Jingyun Liang, Luc Van Gool, Radu Timofte Computer Vision Lab

Kai Zhang 804 Jan 08, 2023