Skip to content

scottcsh/binder-scoring-GUI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Binder Scoring GUI

A lightweight PySide6 desktop GUI for scoring protein binder structures with several external structural analysis tools:

  • FoldX + Aggrescan3D
  • PISA
  • RosettaDock
  • Weighted total score calculation

The GUI is designed for Rocky Linux workstation/server environments and focuses on batch scoring .pdb, .cif, and .mmcif structure files.


Table of Contents


Installation

Clone or upload this project directory to your Rocky Linux machine.

Create a virtual environment and install Python dependencies:

cd binder_score_gui
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt

If your system does not already provide virtualenv support:

sudo dnf install -y python3 python3-pip python3-virtualenv

System Requirements

This project depends on external tools that are not installed through pip.

Required external programs:

  • FoldX
  • Aggrescan3D standalone command: aggrescan
  • PDBe-KB PISA REST access
  • RosettaDock binaries:
    • docking_prepack_protocol
    • docking_protocol
  • Rosetta database

Python packages are listed in:

requirements.txt

Current Python dependencies:

  • PySide6
  • Biopython
  • requests

First-run Configuration

Open the GUI and click Settings.

Configure the following paths/commands:

FoldX

  • FoldX
    • FoldX executable used for RepairPDB and Stability

FoldX + Aggrescan3D

  • FoldX4 (A3D)
    • FoldX4 path used by local Aggrescan3D
  • A3D Activation
    • shell command used to activate the Aggrescan3D environment
    • example:
module load miniforge3/25.3.0-3 && conda activate a3d

RosettaDock

  • Docking Prepack Protocol
    • path to docking_prepack_protocol
  • Docking Protocol
    • path to docking_protocol
  • Rosetta DB
    • path to the Rosetta database directory

Settings are stored locally in:

resources/settings.json

This file is intentionally ignored by Git because it contains machine-specific paths.


Running the App

From the project root:

source .venv/bin/activate
python main.py

If Qt reports DBus warnings in SSH/X11 or non-GNOME sessions, the app may still work normally. If the GUI does not open, try:

dbus-run-session -- python main.py

Input and Output

Input directory:

  • .pdb
  • .cif
  • .mmcif

The GUI requires:

  • Target chain
  • Design chain
  • At least one selected scoring program

Default output:

<input_directory>/results.csv

The output file is tab-delimited even though the extension is .csv, so it opens cleanly in Excel.

Runtime intermediate files are written under:

_binder_score_gui/

Scoring Workflow

FoldX + Aggrescan3D

Uses the design chain only.

For each input structure:

  1. Convert .cif/.mmcif to PDB if needed.
  2. Extract the design chain.
  3. Run FoldX:
foldx --command=RepairPDB --pdb=<design_chain.pdb>
foldx --command=Stability --pdb=<repaired_pdb>
  1. Parse the FoldX Stability .fxout score.
  2. Run local Aggrescan3D:
aggrescan -i <design_chain.pdb> -w <work_dir> -D 10 -f <foldx4_path> -v 1
  1. Calculate A3D score as the sum of the score column in A3D.csv.

FoldX and Aggrescan3D jobs are run in parallel with a maximum concurrency of 5.

PISA

Uses target + design chains.

For each input structure:

  1. Convert .cif/.mmcif to PDB if needed.
  2. Extract target and design chains.
  3. Submit PDB files to the PDBe-KB PISA REST API in batches.
  4. Use the interface with the lowest int_solv_energy.

Reported columns:

  • Interface area
  • Interface solvation E
  • p-value

PISA jobs are submitted with concurrency 5.

RosettaDock

Uses target + design chains.

For each input structure:

  1. Convert .cif/.mmcif to PDB if needed.
  2. Extract target and design chains.
  3. Run prepack:
docking_prepack_protocol -s <input.pdb> -docking:partners <target>_<design>
  1. Run 20 parallel docking jobs.
  2. Each docking job runs:
docking_protocol -s <prepack_pdb> -partners <target>_<design> -dock_pert 3 8 -nstruct 50

This produces 1000 total docking structures per input.

Reported columns:

  • RosettaDock score
  • Interface score

The best RosettaDock result is selected by minimum total_score; the matching I_sc is reported as Interface score.

Total Score

Total score is calculated only when all required metrics are available:

  • FoldX score
  • A3D score
  • Interface area
  • Interface solvation E
  • RosettaDock score
  • Interface score

Direction:

  • Interface area: higher is better
  • All other metrics: lower is better

Weights:

  • FoldX score: 0.1
  • A3D score: 0.1
  • Interface area: 0.1
  • Interface solvation E: 0.1
  • RosettaDock score: 0.4
  • Interface score: 0.2

Reference statistics are stored in:

resources/total_score_reference.json

The current score scale is calibrated so the reference dataset roughly spans 0 to 100. Future values may go below 0 or above 100 if they fall outside the reference range.


Project Layout

binder_score_gui/
  app/
    main_window.py
    services/
      processor.py
    widgets/
  resources/
    random_cats/
    total_score_reference.json
    reference_stats.json
  scripts/
    pisa_batch_dir_to_csv.py
    a3d_batch_rest_async.py
  main.py
  README.md
  requirements.txt

Acknowledgements

This GUI is a thin interface layer around external tools and services including:

  • FoldX
  • Aggrescan3D
  • PDBe-KB PISA
  • RosettaDock

Please follow the licenses, citation policies, and usage requirements of each upstream project.



Return to top

About

Protein binder scoring GUI

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages