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 --helpchmod +x ./install.sh ./install.sh conda activate HDXRank python main.py --helpHDXRank 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 -ymkdir -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.shThis 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.yamlResults 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.zipUsers 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.yamlIf 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
