Bindigo
Protein-Ligand Binding Affinity Prediction using Molecular Docking and Machine Learning
Bindigo is a Python package for predicting protein-ligand binding affinities. It combines molecular docking (AutoDock Vina) with machine learning to provide fast, accurate predictions for early-stage drug discovery.
Status: v0.1.0 is an alpha skeleton. The CLI, input validation, and dependency checks work. The docking and machine learning steps are not implemented yet, so
bindigo predictdoes not yet produce a binding affinity or write a results file. The output shown below is the target behaviour, not what this release does.
Features
- Hybrid Prediction: Combines AutoDock Vina docking with pre-trained ML models
- Simple Interface: A single
bindigocommand-line tool - Automated Workflow: Handles all preprocessing automatically
- Database Integration: Fetch structures from PDB, compounds from ChEMBL
- Flexible Input: Accepts PDB IDs, files, SMILES strings, or SDF files
- Fast Results: Get predictions in minutes
Installation
From PyPI (when released)
pip install bindigo
From Source (Development)
git clone https://github.com/Siavashghaffari/Bindigo.git
cd Bindigo
pip install -e .
Dependencies
Bindigo requires Python 3.9+ and the following packages:
- RDKit (cheminformatics)
- BioPython (protein handling)
- AutoDock Vina (molecular docking)
- scikit-learn (machine learning)
- Click (CLI interface)
All of these except AutoDock Vina are installed automatically via pip.
AutoDock Vina must be installed separately - it is a native binary and pip cannot install it:
conda install -c conda-forge vina # conda
brew install autodock-vina # macOS
On Linux and Windows, download a binary from the
AutoDock Vina releases page
and add it to your PATH. If Vina is installed somewhere else, point Bindigo
at it with the BINDIGO_VINA_PATH environment variable:
export BINDIGO_VINA_PATH=/full/path/to/vina
Bindigo checks for Vina before running and prints installation instructions if it is missing.
Quick Start
Command Line Interface
Basic prediction using PDB ID and SMILES:
bindigo predict --protein 1HSG --ligand "CC(=O)Nc1ccc(O)cc1" --output results.csv
Using local files:
bindigo predict --protein protein.pdb --ligand ligand.sdf --output results.csv
Custom binding site:
bindigo predict --protein 1HSG --ligand "CCO" --center 10.5 20.3 15.2 --size 25 --output results.csv
Verbose output:
bindigo predict --protein 1HSG --ligand "CCO" --output results.csv --verbose
Example Output (planned)
The following shows the intended output once docking and ML prediction are implemented; v0.1.0 does not produce it yet.
╔══════════════════════════════════════════════════════════════════╗
║ Bindigo v0.1.0 ║
║ Protein-Ligand Binding Affinity Prediction ║
╚══════════════════════════════════════════════════════════════════╝
[1/5] Loading inputs...
✓ Ligand: CC(=O)Nc1ccc(O)cc1 (Acetaminophen)
✓ Protein: Fetching PDB ID 1HSG from RCSB...
[2/5] Preparing protein...
✓ Loaded structure: HIV-1 Protease (198 residues, Chain A)
[3/5] Preparing ligand...
✓ Generated 3D structure (11 atoms)
[4/5] Running molecular docking...
✓ Best pose: -6.2 kcal/mol
[5/5] Predicting binding affinity...
✓ ML model prediction complete
╔══════════════════════════════════════════════════════════════════╗
║ PREDICTION RESULTS ║
╠══════════════════════════════════════════════════════════════════╣
║ Predicted Kd: 245.7 nM ║
║ Confidence: High ║
║ Docking Score: -6.2 kcal/mol ║
╚══════════════════════════════════════════════════════════════════╝
Results saved to: results.csv
✓ Prediction completed in 2m 34s
Output Format (planned)
CSV Output
ligand_id,smiles,predicted_kd_nM,confidence,docking_score_kcal_mol,pose_file
ligand_1,CC(=O)Nc1ccc(O)cc1,245.7,High,-6.2,ligand_1_pose.pdb
Fields:
predicted_kd_nM: Predicted dissociation constant in nanomolarconfidence: High/Medium/Low based on model applicabilitydocking_score_kcal_mol: AutoDock Vina docking scorepose_file: Path to docked structure PDB file
Documentation
- Installation Guide: See above
- User Guide: Coming soon
- API Reference: Coming soon
- Examples: See
examples/directory
Use Cases
- Virtual Screening: Screen compound libraries against protein targets
- Lead Optimization: Evaluate binding affinities of compound analogs
- Drug Repurposing: Test existing drugs against new targets
- Research: Computational binding affinity studies
Limitations
Current version (v0.1.0) has the following limitations:
- Single predictions only (no batch mode yet)
- Rigid protein docking (no flexible residues)
- Small molecule ligands only (MW < 1000 Da)
- CPU only (no GPU acceleration)
License
MIT - see LICENSE.
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Citation
If you use Bindigo in your research, please cite:
Bindigo: A Python package for protein-ligand binding affinity prediction
https://github.com/Siavashghaffari/Bindigo
Bindigo uses the following tools:
- AutoDock Vina: Eberhardt et al., J. Chem. Inf. Model. 2021
- RDKit: https://www.rdkit.org
- BioPython: Cock et al., Bioinformatics 2009
- scikit-learn: Pedregosa et al., JMLR 2011
Acknowledgments
- PDBbind database for training data
- RCSB PDB for protein structures
- RDKit and BioPython communities
Development Status
Current version: 0.1.0 (Alpha)
This is an early development version. APIs may change. Production use is not recommended yet.
Authors
This work was developed by Siavash Ghaffari. For any questions, feedback, or additional information, please feel free to reach out. Your input is highly valued and will help improve and refine this pipeline further.
Metadata
Release files for bindigo 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bindigo-0.1.0.tar.gz | 43.7 kB | Without provenance | Details for bindigo-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bindigo-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for bindigo-0.1.0-py3-none-any.whl |
Total release size: 68.6 kB
Release files / bindigo-0.1.0.tar.gz
| Download URL | bindigo-0.1.0.tar.gz |
|---|---|
| Size | 43.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
07fb446bd0e6f419cd9e6ecc4ebb16b24b77f1c724e5cfe5e0acc5b01d86e62b
|
|
BLAKE2b-256 checksum How to use checksums |
c569eaa028433a7a6d515cd058fda4403c278be57267a06be90dc294e9793362
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.9
|
Release files / bindigo-0.1.0-py3-none-any.whl
| Download URL | bindigo-0.1.0-py3-none-any.whl |
|---|---|
| Size | 25.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3923238d37d00ed37a3c588c92650b40ee5cb5514bed8cf744bc862feb62deab
|
|
BLAKE2b-256 checksum How to use checksums |
eac16b74f76125d42f07947157afbb793e23946903dd250d080dac56fd1d42ad
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.10.9
|
Security for bindigo 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.