MTPNet
MTPNet: Multi-Grained Target Perception for Unified Activity Cliff Prediction
Install / Use
/learn @ZishanShu/MTPNetREADME
MTPNet: Multi-Grained Target Perception for Unified Activity Cliff Prediction

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.
🔬 Abstract
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.
📁 Tasks and Datasets
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
🚀 Installation
- Clone this repository:
git clone https://github.com/ZishanShu/MTPNet
cd MTPNet
- Create the Conda environment (CUDA 11.8 compatible):
conda env create -f MTPNet.yaml
conda activate MTPNet
🏃♂️ Usage
Train with 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
Train baseline model:
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
5-Fold Cross-Validation:
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.
🔍 Testing
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.
📎 License
This project is licensed under the MIT License.
Related Skills
node-connect
352.5kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
111.3kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
352.5kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
352.5kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
