An Interactive Graphical User Interface for Virtual Screening and Hit Selection
Structure-based drug discovery · Molecular docking · Hit prioritisation
VSpipe-GUI is a cross-platform, open-source Python application that provides an accessible graphical interface for structure-based virtual screening. Built upon the original VSpipe command-line pipeline, it extends the workflow with spatial pose filtering and interaction-based hit selection — enabling researchers to prioritise compounds for experimental validation without requiring command-line expertise. The software integrates AutoDock Vina and AutoDock 4 docking engines, automates physicochemical property extraction and Lipinski filtering, computes nine ligand efficiency metrics per compound, and generates publication-quality diagnostic plots. It has been validated against established benchmarking datasets.
Published in International Journal of Molecular Sciences (2024) — peer-reviewed, open access.
Hussain, R.; Hackett, A. S.; Álvarez-Carretero, S.; Tabernero, L. Int. J. Mol. Sci. 2024, 25, 2002. https://doi.org/10.3390/ijms25042002
- Key Features
- How It Works
- Scoring Metrics
- Bundled Compound Libraries
- Output Files
- Helper Scripts Reference
- Prerequisites
- Installation
- Usage
- Citation
- Authors
- License
| Feature | Description |
|---|---|
| Graphical Interface | Tkinter-based GUI — no command-line required for routine screening |
| Dual Docking Engine Support | Compatible with AutoDock Vina and AutoDock 4 |
| Receptor Preparation | Automated PDB cleaning, chain extraction, metalloprotein handling, PDBQT correction |
| Ligand Preparation | SDF parsing, unsupported-atom removal, Lipinski / custom Rule-of-Five filtering, PDBQT conversion |
| Spatial Pose Filtering | Filters docked poses by geometric proximity to a user-defined binding site |
| Nine Ligand Efficiency Metrics | Computes δG, Ki, LE, BEI, SEI, NSEI, NBEI, nBEI, mBEI per compound |
| Post-docking Filtering | Filter and rank results by any of 16 physicochemical or scoring parameters |
| Diagnostic Plots | Auto-generates PDF plots (NSEI–NBEI, SEI–BEI, MW, PSA, cLogP, HBA distributions) |
| ATLAS-Compatible Output | Exports results in ATLAS-ready format |
| Batch Screening | Supports screening of large compound libraries |
| Bundled Libraries | Ships with 10 pre-minimised fragment and natural product libraries |
| Cross-Platform | Runs on Linux, macOS and Windows |
VSpipe-GUI orchestrates a multi-step virtual screening pipeline through four GUI modules:
┌─────────────────────────────────────────────────────────────┐
│ VSpipe-GUI │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ 1. Receptor Prep │ │ 2. Ligand Prep │ │
│ │ │ │ │ │
│ │ • PDB cleaning │ │ • SDF parsing │ │
│ │ • Chain extract │ │ • Atom filtering │ │
│ │ • Metal handling │ │ • Lipinski RO5 │ │
│ │ • PDBQT convert │ │ • PDBQT convert │ │
│ └────────┬─────────┘ └────────┬─────────┘ │
│ │ │ │
│ └──────────┬────────────┘ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ 3. Docking Engine │ │
│ │ │ │
│ │ AutoDock Vina ──► │ .pdbqt poses │
│ │ AutoDock 4 ──► │ .dlg / .pdbqt │
│ └──────────┬───────────┘ │
│ ▼ │
│ ┌──────────────────────┐ │
│ │ 4. Results & Filter │ │
│ │ │ │
│ │ • Metric extraction │ output.csv / .tsv │
│ │ • Spatial filtering │ lowest_energy_pdb/ │
│ │ • Property filter │ ordered_output.* │
│ │ • PDF plots │ NSEI-NBEI.pdf etc. │
│ └──────────────────────┘ │
└─────────────────────────────────────────────────────────────┘
clean_protein.py— extracts the first protein chain from the input PDB, writes*_clean.pdbadding_metal_ion.py— handles metalloprotein targets: extracts chain, waters, and metal ion into a clean PDBadding_metal_charge.py— assigns correct AutoDock charge type to metal ions in the PDBQT filereceptor_pdbqt_correction.py— validates and corrects column alignment in receptor PDBQT files to prevent docking failures- AutoDockTools
prepare_receptor4.py— final PDBQT preparation via MGLTools
atom_deletion.py— scans canonical SMILES in the SDF and removes compounds containing atoms unsupported by AutoDock force fieldsdatasheet.py— parses SDF files, extracts physicochemical properties (MW, cLogS, cLogP, HBD, HBA, PSA, rotatable bonds), applies Lipinski Rule of Five or user-defined thresholds, outputsoutput.csvandoutput.tsvto_sdf_correction.py— inserts compound code IDs into SDF files when not presentpdbs_rename.py— renames PDB files according to compound code IDs from the SDF- AutoDockTools
prepare_ligand4.py— PDBQT preparation;prepare_gpf4.py/prepare_dpf4.py— grid and docking parameter file generation
generating_correct_dpf.py— auto-generates docking parameter files (DPF) from the receptor GPF, resolving ligand type compatibilitydpf_rewrite.py— patches receptor and ligand paths in GPF/DPF files; setsunbound_modeltoboundcreating_etc_dir.py— builds thedocking.listfile required for multi-node AutoDock 4 runs
values_extraction_vina.py— parses Vina log and PDBQT output; extracts lowest-energy pose; calculates δG, Ki, LE, BEI, SEI, NSEI, NBEI, nBEI, mBEI; writes lowest-energy pose tolowest_energy_pdb/values_extraction_AD4.py— equivalent pipeline for AutoDock 4 DLG outputfiltering.R— filters and ranks compounds by any of 16 parameters; generates six PDF diagnostic plots; exports filtered results in CSV, TSV, and ATLAS formats
For every docked compound, VSpipe-GUI computes the following metrics (written to output.csv / output.tsv):
| Column | Metric | Definition |
|---|---|---|
DG |
Free energy of binding (δG) | kcal/mol; lower is better |
Ki |
Inhibition constant | μmol/L; calculated from δG at 298.15 K using R = 1.987 × 10⁻³ kcal/mol·K |
LIGAND_EFFICIENCY |
Ligand efficiency (LE) | δG / number of heavy atoms |
BEI |
Binding efficiency index | pKi / MW (kDa) |
SEI |
Surface efficiency index | pKi / PSA (100 Ų) |
NSEI |
Normalised SEI | pKi / number of polar atoms |
NBEI |
Normalised BEI | pKi / number of heavy atoms |
nBEI |
nBEI | −log(Ki / heavy atoms) |
mBEI |
mBEI | −log(Ki / MW in kDa) |
Physicochemical properties extracted per compound from the SDF file:
MolecularWeight · cLogS · cLogP · HBD · HBA · PSA · ROTATABLE_BONDS
Post-docking filtering (filtering.R) supports all 16 columns above. Filtering operators: >value, <value, or min,max range. Results are automatically ordered by δG when no filter is applied.
Diagnostic PDF plots generated automatically:
| Plot file | Content |
|---|---|
NSEI-NBEI.pdf |
NSEI vs NBEI scatter plot with compound labels |
SEI-BEI.pdf |
SEI vs BEI scatter plot with compound labels |
MW-numComp.pdf |
Molecular weight frequency distribution |
PSA-numComp.pdf |
PSA frequency distribution |
clogP-NumComp.pdf |
cLogP frequency distribution |
NumHBA-NumComp.pdf |
Hydrogen bond acceptor frequency distribution |
VSpipe-GUI ships with ten pre-minimised, ready-to-dock compound libraries in minimised_libs/:
| Library | Description |
|---|---|
ENAMINE_fragment_library |
Enamine fragment library |
Indofine_Natural_Products |
Indofine natural products collection |
Maybridge_Pre_Fragment_COCL_PFP |
Maybridge pre-fragment (acyl chloride / PFP ester) |
Maybridge_Pre_Fragment_NCO |
Maybridge pre-fragment isocyanate set |
Maybridge_Pre_Fragment_NCO_min |
Minimised Maybridge NCO fragments |
Maybridge_Pre_Fragment_NCO_min_4comp |
4-component minimised NCO fragments |
Maybridge_Pre_Fragment_SO2Cl |
Maybridge pre-fragment sulfonyl chloride set |
Maybridge_Ro3_1000_Fragment_Library |
Maybridge Rule-of-Three 1000-compound fragment library |
Maybridge_Ro3_500_Fragment_Library |
Maybridge Rule-of-Three 500-compound fragment library |
Specs_Natural_Products |
Specs natural products collection |
Custom libraries in SDF or SMILES format can be used by loading them through the Ligand Preparation module.
After a completed screening run, the results directory contains:
| File / Directory | Description |
|---|---|
output.csv / output.tsv |
Full results table: all physicochemical properties + nine scoring metrics |
ordered_output.csv / .tsv |
Results sorted by δG (no filter applied) |
ordered_output_ATLAS.txt |
ATLAS-compatible output: CodeID; SMILES; Ki type; Ki value |
ordered_filt_output.csv / .tsv |
Filtered and sorted results (when a filter is applied) |
lowest_energy_pdb/ |
Lowest-energy docked pose for each compound as a PDB file |
NSEI-NBEI.pdf |
Scatter plot: NSEI vs NBEI |
SEI-BEI.pdf |
Scatter plot: SEI vs BEI |
MW-numComp.pdf |
MW distribution histogram |
PSA-numComp.pdf |
PSA distribution histogram |
clogP-NumComp.pdf |
cLogP distribution histogram |
NumHBA-NumComp.pdf |
HBA distribution histogram |
All helper scripts reside in vspipe-tools_mac/ and are called internally by the GUI.
| Script | Language | Function |
|---|---|---|
clean_protein.py |
Python 3 | Extracts first protein chain from PDB |
adding_metal_ion.py |
Python 3 | Extracts chain + waters + metal ion for metalloprotein targets |
adding_metal_charge.py |
Python 3 | Assigns correct AutoDock charge type to metal ions in PDBQT |
receptor_pdbqt_correction.py |
Python 3 | Validates and corrects PDBQT column alignment |
atom_deletion.py |
Python 2.7 | Removes compounds with unsupported atoms from SDF |
datasheet.py |
Python 2.7 | Parses SDF; extracts physicochemical properties; applies RO5 filter; writes output.csv / output.tsv |
to_sdf_correction.py |
Python 2.7 | Inserts compound code IDs into SDF files |
pdbs_rename.py |
Python 2.7 | Renames PDB files by compound code ID |
values_extraction_vina.py |
Python 3 | Extracts δG, Ki, LE, BEI/SEI/NBEI/nBEI/mBEI from Vina output |
values_extraction_AD4.py |
Python 3 | Extracts same metrics from AutoDock 4 DLG output |
generating_correct_dpf.py |
Python 3 | Auto-generates docking parameter file (DPF) from receptor GPF |
dpf_rewrite.py |
Python 3 | Patches receptor/ligand paths in GPF/DPF; sets unbound_model to bound |
creating_etc_dir.py |
Python 3 | Builds docking.list for multi-node AutoDock 4 runs |
filtering.R |
R | Filters ranked results; generates six PDF diagnostic plots |
prepare_receptor4.py |
AutoDockTools | Receptor PDBQT preparation (MGLTools) |
prepare_ligand4.py |
AutoDockTools | Ligand PDBQT preparation (MGLTools) |
prepare_gpf4.py |
AutoDockTools | Grid parameter file generation (MGLTools) |
prepare_dpf4.py |
AutoDockTools | Docking parameter file generation (MGLTools) |
summarize_results4.py |
AutoDockTools | Summarises AutoDock 4 results |
The following tools must be installed and available on your PATH before running VSpipe-GUI.
| Dependency | Version | Purpose | Verify |
|---|---|---|---|
| Python 3.x | ≥ 3.6 | GUI runtime + most helper scripts | python3 --version |
| Python 2.7 | 2.7.x | Legacy helper scripts (atom_deletion.py, datasheet.py, pdbs_rename.py) |
python2.7 --version |
| MGLTools / AutoDockTools | ≥ 1.5.6 | Receptor & ligand PDBQT preparation | pythonsh path required |
| AutoDock Vina | ≥ 1.1.2 | Docking engine | vina --version |
| AutoDock 4 + AutoGrid 4 | ≥ 4.2 | Docking engine | binaries in /usr/local/bin |
| Open Babel | ≥ 2.4 | Format conversion | obabel -V |
| R + Rscript | ≥ 3.5 | Post-docking filtering and plots | Rscript --version |
Python packages (installed via requirements.sh):
numpy pandas scikit-spatial openpyxl biopython pdb-tools
Requirement: Administrative privileges are needed for steps that install tools into
/usr/local/binand/usr/local/lib.
These steps follow the layout used on the development machine, where everything is first placed in a working folder such as ~/0_vspipe/.
Create a working directory and place the following items inside it:
-
vspipe-gui-linux_v002.py
Main VSpipe-GUI Python script for Linux (v002). -
vspipe-tools_mac/
Folder containing the helper scripts used by VSpipe-GUI
(used on Linux as well despite the folder name). -
sdf_add_code.py
Helper script for SDF handling (if not already invspipe-tools_mac). -
minimised_libs/
Folder with pre-minimised compound libraries
(unzipped fromvspipe-libraries.zipor distributed separately). -
requirements.sh
Convenience script for installing Python dependencies.
Typical layout:
~/0_vspipe/
vspipe-gui-linux_v002.py
vspipe-tools_mac/
sdf_add_code.py
minimised_libs/
requirements.sh
Install all dependencies first, then copy the VSpipe tools and libraries.
-
System Python 3 (for the GUI itself):
sudo apt update sudo apt install -y python3 python3-tk python3-pip
-
Python 2.7 (for legacy helper scripts:
atom_deletion.py,datasheet.py,pdbs_rename.py):On newer Ubuntu releases Python 2.7 is not shipped by default. If your system does not provide
python2.7, you have two options:- Install Python 2.7 from source and ensure
/usr/local/bin/python2.7exists. - Port the legacy helper scripts to Python 3 and update the calls inside
vspipe-gui-linux_v002.pyfrompython2.7topython3.
The current pipeline assumes that
python2.7is available unless you have ported the tools. - Install Python 2.7 from source and ensure
VSpipe-GUI uses AutoDockTools scripts for receptor and ligand preparation:
prepare_receptor4.pyprepare_ligand4.pyprepare_gpf4.pyprepare_dpf4.pysummarize_results4.py
Steps:
-
Download and install MGLTools from Scripps.
-
Locate the
pythonshexecutable from your MGLTools installation, for example:/opt/mgltools_x.y.z/bin/pythonsh -
After copying these scripts into
/usr/local/bin(see Step 1.3), open each one and update the first line (shebang) so that it points to yourpythonshpath. For example:#! /opt/mgltools_x.y.z/bin/pythonsh
This allows the AutoDockTools preparation scripts to run correctly from within the GUI.
VSpipe-GUI uses an R script for post-docking filtering, ranking, and plot generation:
sudo apt install -y r-baseCheck that Rscript is available:
Rscript --versionAny additional R packages required by filtering.R should be installed from within R using install.packages().
Open Babel is used for ligand preparation and format conversion:
sudo apt install -y openbabelConfirm that obabel is on your path:
obabel -VVSpipe-GUI uses both AutoDock Vina and AutoDock 4.
-
AutoDock Vina:
sudo apt install -y autodock-vina vina --version
-
AutoDock 4 and AutoGrid 4:
Download the AutoDock 4 distribution from Scripps and place
autodock4andautogrid4in your path, for example/usr/local/bin:sudo cp autodock4 autogrid4 /usr/local/bin/ sudo chmod 755 /usr/local/bin/autodock4 /usr/local/bin/autogrid4
Option A – using requirements.sh (recommended)
From inside your working directory:
cd ~/0_vspipe # folder containing requirements.sh
chmod +x requirements.sh
./requirements.shThis script installs all Python packages required by VSpipe-GUI. Open it in a text editor to see exactly what it installs.
Option B – manual installation
python3 -m pip install \
numpy \
pandas \
scikit-spatial \
openpyxl \
biopython \
pdb-toolsAdditional libraries can be installed later if the GUI reports that something is missing.
Once all dependencies are in place, copy the helper scripts and minimised libraries:
# Copy all VSpipe helper tools into /usr/local/bin
sudo cp -r vspipe-tools_mac/* /usr/local/bin/
# Copy the SDF helper script
sudo cp sdf_add_code.py /usr/local/bin/
# Copy pre-minimised libraries into /usr/local/lib
sudo cp -r minimised_libs /usr/local/lib/
# Make everything executable and readable
sudo chmod 755 /usr/local/bin/*.py
sudo chmod -R 755 /usr/local/lib/minimised_libsAfter this step, all VSpipe helper scripts are available system-wide and the minimised libraries are accessible to the GUI. You can now also adjust the shebang lines in the AutoDockTools scripts as described in Section 1.2.2.
From your working directory:
cd ~/0_vspipe
python3 vspipe-gui-linux_v002.pyIf all dependencies and tools are correctly installed, the VSpipe-GUI window will open and you can configure your project folders, receptor, libraries, and docking settings from the interface.
git clone https://github.com/rashid-bioinfo/vspipe-gui.git
cd vspipe-guiInside the repository you will find:
-
vspipe-gui-mac_v002.py
macOS launcher script for VSpipe-GUI. -
vspipe-tools_mac/
Folder containing the helper scripts used by the macOS app. -
minimised_libs/
Folder containing the pre-minimised compound libraries. -
requirements.sh
Script for installing Python dependencies.
You need the same core dependencies as on Linux:
-
Python 3
Install via Homebrew:
brew install python
-
MGLTools
Download and install MGLTools from Scripps, then locate the
pythonshexecutable. -
R and Rscript
brew install --cask r
Then install any additional packages used by
filtering.Rviainstall.packages()from within R. -
Open Babel
brew install open-babel
-
AutoDock Vina and AutoDock 4
- Install AutoDock Vina via Homebrew or manually from Scripps and ensure
vinais on your path. - Download AutoDock 4 from Scripps, then copy
autodock4andautogrid4to/usr/local/binand mark them executable.
- Install AutoDock Vina via Homebrew or manually from Scripps and ensure
-
Python libraries
Using
requirements.sh(recommended):cd /path/to/vspipe-gui chmod +x requirements.sh ./requirements.shOr manually:
python3 -m pip install \ numpy \ pandas \ scikit-spatial \ openpyxl \ biopython \ pdb-tools
Unzip the libraries if they were provided as an archive, then copy tools and libraries to standard locations:
cd /path/to/vspipe-gui
# Copy VSpipe helper tools
sudo cp -r vspipe-tools_mac/* /usr/local/bin/
sudo chmod 755 /usr/local/bin/*
# Copy minimised libraries
sudo cp -r minimised_libs /usr/local/lib/
sudo chmod -R 755 /usr/local/lib/minimised_libsAfter copying, update the shebang line in the following scripts in /usr/local/bin so that the first line points to the correct pythonsh from your MGLTools installation:
prepare_receptor4.pyprepare_ligand4.pyprepare_gpf4.pyprepare_dpf4.pysummarize_results4.py
cd /path/to/vspipe-gui
python3 vspipe-gui-mac_v002.pyIf the required tools are installed and on the path, the GUI will open and behave identically to the Linux version.
Older versions of VSpipe-GUI (including the original Installation_Guide and Source_Files folders) are preserved in the legacy-old-version branch of this repository. If you need legacy executables, example projects, or the original CLI pipeline, switch to that branch on GitHub or via:
git checkout legacy-old-versionOnce launched, the GUI presents four sequential modules:
- Load a PDB file and define the project output directory
- Optionally fetch a PDB structure by accession ID
- Enable metalloprotein mode to retain metal ions and coordinating waters
- The GUI calls
clean_protein.py,adding_metal_ion.py,adding_metal_charge.py,receptor_pdbqt_correction.py, andprepare_receptor4.pyin sequence
- Select a bundled pre-minimised library or load a custom SDF / SMILES file
- Configure Lipinski Rule-of-Five thresholds (default: MW < 500, cLogP < 5, HBD < 5, HBA < 10, PSA < 150, RotBonds < 8) or disable filtering
- The GUI calls
atom_deletion.py,datasheet.py,to_sdf_correction.py,pdbs_rename.py, andprepare_ligand4.py
- Set the docking engine (AutoDock Vina or AutoDock 4)
- Define grid box centre coordinates and dimensions
- Configure number of runs / exhaustiveness
- The GUI generates GPF/DPF files via
prepare_gpf4.py,generating_correct_dpf.py, anddpf_rewrite.py, then runs the docking engine
- After docking, values are extracted via
values_extraction_vina.pyorvalues_extraction_AD4.py - Apply spatial filtering to retain only poses within a user-defined distance of the binding site
- Apply property-based filtering (any of 16 parameters) via
filtering.R - Results exported as CSV, TSV, ATLAS format, and PDF diagnostic plots
For detailed workflow documentation and benchmarking data, refer to the published paper:
https://doi.org/10.3390/ijms25042002
If you use VSpipe-GUI in your research, please cite:
Hussain, R.; Hackett, A. S.; Álvarez-Carretero, S.; Tabernero, L. (2024).
VSpipe-GUI, an Interactive Graphical User Interface for Virtual Screening and Hit Selection.
International Journal of Molecular Sciences, 25, 2002.
https://doi.org/10.3390/ijms25042002
BibTeX:
@article{hussain2024vspipegui,
author = {Hussain, Rashid and Hackett, Andrew Scott and
{\'A}lvarez-Carretero, Sandra and Tabernero, Lydia},
title = {{VSpipe-GUI}, an Interactive Graphical User Interface for
Virtual Screening and Hit Selection},
journal = {International Journal of Molecular Sciences},
volume = {25},
pages = {2002},
year = {2024},
doi = {10.3390/ijms25042002}
}-
Rashid Hussain (R.H.)
School of Biological Sciences, Faculty of Biology Medicine and Health
University of Manchester, Manchester Academic Health Science Centre, Manchester M13 9PT, UK
rashid.bioinfo@gmail.com -
Andrew Scott Hackett (A.S.H.)
School of Biological Sciences, Faculty of Biology Medicine and Health
University of Manchester, Manchester Academic Health Science Centre, Manchester M13 9PT, UK
andrew.hackett-2@postgrad.manchester.ac.uk -
Sandra Álvarez-Carretero (S.Á.C.)
Bristol Palaeobiology Group, School of Earth Sciences
University of Bristol, Life Sciences Building, Tyndall Avenue, Bristol BS8 1TH, UK
sandra.ac93@gmail.com · s.alvarez-carretero@bristol.ac.uk -
Lydia Tabernero (L.T.)
School of Biological Sciences, Faculty of Biology Medicine and Health
University of Manchester, Manchester Academic Health Science Centre, Manchester M13 9PT, UK
lydia.tabernero@manchester.ac.uk
For questions, bug reports, or feature requests, please open an issue or contact rashid.bioinfo@gmail.com or vspipe.local@gmail.com.
This software is released under the Creative Commons Attribution 4.0 International (CC BY 4.0) licence. You are free to share and adapt the material provided appropriate credit is given.
Developed at the University of Manchester · Published in Int. J. Mol. Sci. (2024)