MTPNet: Multi-Grained Target Perception for Unified Activity Cliff Prediction

4 months ago 1

Python CUDA License

MTPNet Framework

MTPNet is a novel deep learning framework for activity cliff prediction, a crucial task in drug discovery and material design. Unlike previous models limited to single-target prediction, MTPNet leverages multi-grained semantic information from receptor proteins to guide molecular representation learning, achieving state-of-the-art performance across both regression and classification tasks.

Activity cliff prediction is a critical task in drug discovery and material design. Existing computational methods are limited to handling single binding targets, which restricts the applicability of these prediction models.

MTPNet addresses this limitation by incorporating Macro-level Target Semantic (MTS) and Micro-level Pocket Semantic (MPS) guidance into a unified framework. It dynamically conditions molecular embeddings on protein-level semantics, capturing complex molecular-protein interactions.

On 30 benchmark datasets from MoleculeACE, MTPNet outperforms existing methods with an average 18.95% RMSE improvement across several mainstream GNN architectures.

MTPNet supports two major tasks:

1. Regression Task (MoleculeACE)

  • Benchmark platform: MoleculeACE
  • 30 datasets, each representing an individual macromolecular target
  • Over 35,000 molecules in total
  • 12 datasets contain fewer than 1,000 training samples → ideal for low-data evaluation

2. Classification Task (CYP3A4)

  • Dataset: CYP3A4 activity cliff data
  • Source: [Veith et al., 2009], curated by [Rao et al., 2022]
  • 3,626 active inhibitors/substrates vs. 5,496 inactive compounds

  1. Clone this repository:
git clone https://github.com/ZishanShu/MTPNet cd MTPNet
  1. Create the Conda environment (CUDA 11.8 compatible):
conda env create -f MTPNet.yaml conda activate MTPNet

CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch \ --nproc_per_node=4 --use_env main.py \ --model configs/model/MTPNet.yaml \ --data configs/data/MolACE.yaml \ --task regression --dataset ALL
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch \ --nproc_per_node=4 --use_env main-5z.py \ --model configs/model/Baseline.yaml \ --data configs/data/MolACE.yaml \ --task regression --dataset ALL

Train classification model:

CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch \ --nproc_per_node=4 --use_env main_classify.py \ --model configs/model/Baseline.yaml \ --data configs/data/MolACE.yaml \ --task binary --dataset CYP3A4
CUDA_VISIBLE_DEVICES=0,1,2,3 python -m torch.distributed.launch \ --nproc_per_node=4 --use_env main-5z-all.py \ --model configs/model/MTPNet.yaml \ --data configs/data/MolACE.yaml \ --task regression --dataset ALL

📝 Tip: You can also specify individual datasets using --dataset CHEMBL244_Ki, etc.


python test.py \ --model ./configs/model/MTPNet.yaml \ --data ./configs/data/MolACE.yaml \ --weight ./result/ALL/MTPNet/best_model_epoch.pth \ --task regression \ --dataset ALL

🧠 Tip: Train on Individual Datasets

By default, training uses all datasets (--dataset ALL). You can also train on a single dataset by replacing ALL with one of the dataset names:

--dataset CHEMBL1871_Ki --dataset CHEMBL218_EC50 --dataset CHEMBL244_Ki # ... or any of the 30 MoleculeACE datasets

📌 Each dataset corresponds to a specific protein target. You can find all supported names in the MoleculeACE benchmark.

This project is licensed under the MIT License.

Read Entire Article