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

Releases

Packages

Contributors

Languages