# ASHL-DTI **Repository Path**: Tomhappy/ASHL-DTI ## Basic Information - **Project Name**: ASHL-DTI - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-08 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ASHL-DTI **Adaptive Feature Selection with Hierarchical Learning for Drug-Target Interaction Prediction** [![Python 3.8](https://img.shields.io/badge/python-3.8-blue.svg)](https://www.python.org/downloads/release/python-380/) [![PyTorch 2.2](https://img.shields.io/badge/PyTorch-2.2.1-EE4C2C.svg?logo=pytorch)](https://pytorch.org/) [![DGL 1.0.2](https://img.shields.io/badge/DGL-1.0.2-12B522.svg)](https://www.dgl.ai/) [![License](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) --- ## πŸ“Œ Table of Contents - [πŸ“– Introduction](#-introduction) - [πŸ› οΈ Setup](#%EF%B8%8F-setup) - [πŸ“‚ Data Preparation](#-data-preparation) - [🧬 Data Preprocessing](#-data-preprocessing) - [βš™οΈ Configuration](#%EF%B8%8F-configuration) - [πŸš€ Run](#-run) - [πŸ“ Citation](#-citation) - [πŸ“š References](#-references) --- ## πŸ“– Introduction **ASHL-DTI** is a novel framework that integrates **hierarchical learning** with **adaptive feature selection** to significantly boost feature quality and model generalizability. Specifically, it captures multi-level intramolecular associations to learn discriminative representations while employing an **adaptive Top-k selection mechanism** to retain the most predictive features. Extensive experiments demonstrate that ASHL-DTI outperforms state-of-the-art approaches on public benchmarks and exhibits strong generalization in predicting novel drug-target pairs. ## πŸ› οΈ Setup ### 1. Environment Requirements The project is implemented using Python 3.8. We recommend using a virtual environment (Conda) to manage dependencies. ```bash conda create -n ashldti python=3.8 conda activate ashldti ``` ### 2. Install Dependencies Install the required packages using pip: ```bash # Core DL Frameworks pip install torch==2.2.1 torchvision==0.17.1 torchaudio==2.2.1 pip install dgl==1.0.2 dgllife==0.3.2 # Data & Utils pip install numpy==1.24.4 pandas==2.0.3 scipy==1.10.1 scikit-learn==1.3.2 pip install rdkit==2024.3.5 einops==0.8.0 tqdm==4.67.1 yacs==0.1.8 zipp==3.20.2 ``` ## πŸ“‚ Data Preparation The datasets folder contains all experimental data utilized in **ASHL-DTI**, including **BindingDB** [1], **BioSNAP** [2], and **Human** [3]. #### 1. Directory Structure Please organize the datasets within the `datasets/` directory as follows. ```bash datasets/ β”œβ”€β”€ bindingdb/ β”‚ β”œβ”€β”€ train.csv β”‚ β”œβ”€β”€ val.csv β”‚ └── test.csv β”œβ”€β”€ biosnap/ β”‚ β”œβ”€β”€ train.csv β”‚ β”œβ”€β”€ val.csv β”‚ └── test.csv └── human/ β”œβ”€β”€ train.csv β”œβ”€β”€ val.csv └── test.csv ``` #### 2. Data Splitting For all three datasets, the samples are randomly split into **Training**, **Validation**, and **Testing** sets with a fixed ratio. | **Dataset** | **Train Split** | Val Split | Test Split | | :---------: | :-------------: | :-------: | :--------: | | **Ratio** | **70%** | **10%** | **20%** | #### 3. File Format Each `.csv` file contains the following three columns: | **Column** | **Description** | | :---------: | ------------------------------------------------------- | | **SMILES** | Molecular structure representation of the drug (string) | | **Protein** | Amino acid sequence of the target protein (string) | | **Y** | Interaction Label (1 for positive, 0 for negative) | **Example:** ```bash SMILES,Protein,Y CC1=C(C=C(C=C1)NC(=O)...,MALIPDLAMET...,1 ``` ## 🧬 Data Preprocessing The raw data is processed into graph and sequence formats suitable for the model. The preprocessing pipeline includes **Molecular Graph Construction** and **Protein Sequence Encoding**. #### 1. Drug Molecule Representation We utilize `dgllife` to convert SMILES strings into molecular graphs with the following enhancements: - **Featurization:** - **Atoms:** `CanonicalAtomFeaturizer` (74 dimensions). - **Bonds:** `CanonicalBondFeaturizer` (with self-loops). - **Virtual Node Padding:** - To handle variable molecular sizes efficiently, we align all molecular graphs to a fixed size of **290 nodes** (`max_drug_nodes`). - **Virtual Nodes** are added to graphs with fewer atoms. - **Indicator Bit:** A binary channel is appended to the node features to distinguish between real atoms (`0`) and virtual nodes (`1`). - **Final Dimension:** The resulting node feature dimension is **75** . #### 2. Target Protein Representation - **Integer Labeling:** Protein sequences are mapped to integer sequences based on a comprehensive amino acid vocabulary. - **Truncation/Padding:** All sequences are normalized to a fixed length of **1200** (`max_protein_length`) to facilitate batch processing. ## βš™οΈ Configuration Model hyperparameters and training settings are defined in YAML files located in the `configs/` directory. #### 1. Config Files We provide default configurations for each dataset: ```bash configs/ β”œβ”€β”€ bindingdb.yaml β”œβ”€β”€ biosnap.yaml └── human.yaml ``` #### 2. Parameter Details You can modify the hyperparameters in the `.yaml` files. Below is an explanation of the key parameters: ```xml Drug: Nodes: 290 # Maximum number of nodes in the drug graph (padding size) Protein: Length: 1200 # Maximum length of the input protein sequence CNN_Length: 1185 # Effective sequence length after CNN processing fusion: Hidden_Dim: 256 # Dimension of the hidden layers Num_Heads: 8 # Number of attention heads in the fusion module Dropout_Rate: 0.3 # Dropout rate to prevent overfitting Global: Batch_Size: 32 # Batch size for training Epoch: 100 # Total number of training epochs LR: 5e-5 # Initial learning rate ``` ## πŸš€ Run To train and evaluate the model, simply run the `main.py` script with the corresponding configuration file. #### For Human Dataset ```bash python main.py --cfg ./configs/human.yaml --outname human_model --data human --num_worker 0 ``` #### For BioSNAP Dataset ```bash python main.py --cfg ./configs/biosnap.yaml --outname biosnap_model --data biosnap --num_worker 0 ``` #### For BindingDB Dataset ```bash python main.py --cfg ./configs/bindingdb.yaml --outname bindingdb_model --data bindingdb --num_worker 0 ``` ## πŸ“ Citation ```bash @ARTICLE{11457244, author={Tian, Zhen and Jiang, Miao and Li, Jin and Zhang, Wenjie and Xu, Mingliang}, journal={IEEE Journal of Biomedical and Health Informatics}, title={Adaptive Feature Selection With Hierarchical Learning for Drug-Target Interaction Prediction}, year={2026}, volume={}, number={}, pages={1-12}, keywords={Feeds;Filtering;Contacts;Filters;Circuits and systems;Electronic mail;LoRa;Protocols;Communication systems;Wide area networks;Drug-target interaction;deep learning;hierarchical learning;adaptive selection}, doi={10.1109/JBHI.2026.3678266}} ``` ## πŸ“š References - [1] Bai, P.; MiljkoviΔ‡, F.; Ge, Y.; Greene, N.; John, B.; Lu, H. Hierarchical Clustering Split for Low-Bias Evaluation of Drug-Target Interaction Prediction. *2021 IEEE International Conference on Bioinformatics and Biomedicine (BIBM)*. 2021; pp 641–644. - [2] Zitnik, M.; Sosic, R.; Leskovec, J. BioSNAP Datasets: Stanford Biomedical Network Dataset Collection. http://snap.stanford.edu/biodata 2018, 5. - [3] Liu, H.; Sun, J.; Guan, J.; Zheng, J.; Zhou, S. Improving Compound–Protein Interaction Prediction by Building up Highly Credible Negative Samples. *Bioinformatics* 2015, 31, i221–i229.