HDXRank is an deep learning pipeline that applies HDX-MS (Hydrogen-Deuterium Exchange Mass Spectrometry) restraints to rank protein-protein complex predictions.
HDXRank addresses the challenge of selecting accurate protein complex models by integrating experimental HDX-MS data with graph-based deep learning. The method uses HDX restraints to evaluate how well predicted complex structures align with experimental binding interface data, providing a robust framework for complex model ranking with improved prediction accuracy.
- HDX-MS data integration for experimental restraints
- Support for multiple input sources (docking predictions, AlphaFold models)
- Flexible and extensible framework for incorporating new experimental data
HDXRank requires Python with CUDA 11.8 support. We provide both Docker and Conda installation options.
- Docker (recommended) or Conda
- CUDA 11.8 compatible GPU (for model training/prediction)
- Clone the repository:
git clone https://github.com/SuperChrisW/HDXRank.git
cd HDXRank
- Run with Docker:
docker pull superchrisw/hdxrank:latest
docker run -it --rm -v $(pwd):/job/code superchrisw/hdxrank:latest /bin/bash
cd /job/code
python main.py --help
chmod +x ./install.sh
./install.sh
conda activate HDXRank
python main.py --help
HDXRank requires four main types of input files:
- Protein Structure Files (
.pdb
) - Complex structure predictions to be ranked + apo structures - Multiple Sequence Alignments (
.hhm
) - Generated using HHblits against UniRef30 - HDX-MS Data (
.xlsx
) - Experimental HDX data with specific column format - Configuration File (
.yaml
) - Pipeline settings and parameters
HDXRank requires .hhm
format multiple sequence alignments generated using HHblits:
conda create -n hhblits -y
conda activate hhblits
conda install hhsuite -c conda-forge -c bioconda -y
mkdir -p databases
cd databases
wget http://wwwuser.gwdg.de/~compbiol/uniclust/2020_06/UniRef30_2020_06_hhsuite.tar.gz
tar -xvfz UniRef30_2020_06_hhsuite.tar.gz
rm UniRef30_2020_06_hhsuite.tar.gz
cd ..
bash ./scripts/hhblits.sh
This processes all .fasta
files in /HDXRank/fasta_files/
and saves .hhm
files to /HDXRank/hhm_files/
Your Excel file should contain the following columns:
protein
- Protein identifierstate
- Experimental state (apo/complex)start
- Peptide start positionend
- Peptide end positionsequence
- Peptide sequencelog_t
- Log exchange timeRFU
- Relative fractional uptake
HDXRank uses YAML configuration files to define all pipeline parameters. See configs/config.template.yaml
for a complete template.
GeneralParameters: File paths and execution mode
TaskParameters: Control protein embedding and graph construction
PredictionParameters: Model prediction settings
ScorerParameters: Scoring and ranking settings
python main.py --config path/to/config.yaml
Results are saved to the specified output directory:
HDX_scores.csv
- Ranked structures with HDXRank scorespredictions/
- Raw RFU predictions for each structureresults/scores/
- Detailed scoring analysis and plots
Download example datasets and configurations:
# HDX-MS dataset for training/validation
wget -O dataset.zip https://zenodo.org/records/15426072/files/dataset.zip?download=1
unzip dataset.zip
# Example structures and configurations
wget -O example.zip https://zenodo.org/records/15426072/files/example.zip?download=1
unzip example.zip
rm dataset.zip example.zip
Users can repeat rigid docking by using HDock program in prog.tar.gz
.
- Add new HDX-MS files to
dataset/HDX_files/
- Update the dataset record in
dataset/250110_HDXRank_dataset.xlsx
- Generate embeddings and graphs:
python main.py --config ./configs/config_retrain_HDXRank.yaml
python ./hdxrank/HDXRank_train.py --config ./configs/config_retrain_HDXRank.yaml
If you use HDXRank in your research, please cite:
@article{Wang2025HDXRank,
author = {Liyao Wang and Andrejs Tucš and Songting Ding and Koji Tsuda and Adnan Sljoka},
title = {HDXRank: A Deep Learning Framework for Ranking Protein Complex Predictions With Hydrogen–Deuterium Exchange Data},
journal = {Journal of Chemical Theory and Computation},
year = {2025},
volume = {21},
number = {14},
pages = {7173--7187},
doi = {10.1021/acs.jctc.5c00175}
}
For questions, bug reports, or feature requests, please open an issue on GitHub