A Python-based GPU/CPU-accelerated molecular docking platform for computational drug discovery and bioinformatics.
PandaDock is a modern, modular molecular docking toolkit that combines cutting-edge algorithms with high-performance computing capabilities. Built for drug discovery, computational chemistry, and bioinformatics workflows.
- π― Multiple Docking Algorithms: Genetic Algorithm, Monte Carlo, PANDADOCK, Random Search, Metal-based docking
- β‘ Hardware Acceleration: Native GPU (PyTorch/CUDA) and multi-core CPU parallelization
- π Advanced Scoring: Physics-based scoring with MM-GBSA inspired energy decomposition
- 𧬠Flexible Residues: Automatic and manual flexible residue detection
- π Virtual Screening: High-throughput screening with batch processing
- π¬ Comprehensive Analysis: Binding affinity calculations, pose clustering, interaction analysis
- π¨ Rich Visualization: Interactive HTML reports with energy breakdowns and plots
- π οΈ Modular Architecture: Clean, extensible Python API for custom workflows
# Install PandaDock
pip install pandadock
# For GPU acceleration (optional)
pip install pandadock[gpu]
# For RDKit integration (recommended)
pip install pandadock[rdkit]
# Install all optional dependencies
pip install pandadock[gpu,rdkit,dev]
# Clone the repository
git clone https://github.com/pritampanda15/PandaDock.git
cd PandaDock
# Install in development mode
pip install -e .
- Python: 3.8+
- OS: Linux, macOS, Windows
- Memory: 4GB+ RAM (8GB+ recommended)
- GPU: CUDA-compatible GPU (optional, for acceleration)
# Simple protein-ligand docking
pandadock -p protein.pdb -l ligand.sdf -o results
# With binding site specification
pandadock -p protein.pdb -l ligand.sdf -o results -s -15.7 -17.7 8.1 -r 10.0
# Enhanced docking with GPU acceleration
pandadock -p protein.pdb -l ligand.sdf -o results --enhanced --use-gpu
# High-accuracy physics-based scoring
pandadock -p protein.pdb -l ligand.sdf -o results --physics-based
# PANDADOCK algorithm with simulated annealing
pandadock -p protein.pdb -l ligand.sdf -o results -a pandadock --physics-based
# With flexible residues
pandadock -p protein.pdb -l ligand.sdf -o results --physics-based --auto-flex
# High-throughput screening
pandadock -p protein.pdb -l ligand_library/ -o screening_results --enhanced
# Batch processing with parallel execution
pandadock -p protein.pdb -l compounds.sdf -o batch_results --cpu-workers 8
from pandadock.core import DockingEngine
from pandadock.molecules import LigandHandler, ProteinHandler
# Load molecules
protein_handler = ProteinHandler()
ligand_handler = LigandHandler()
protein = protein_handler.load_protein("protein.pdb")
ligand = ligand_handler.load_ligand("ligand.sdf")
# Configure docking
config = {
'algorithm': 'genetic',
'scoring': 'enhanced',
'site_center': [10.0, 20.0, 30.0],
'site_radius': 12.0,
'iterations': 100
}
# Run docking
engine = DockingEngine(config)
results = engine.dock(protein, ligand)
# Analyze results
for pose in results['poses']:
print(f"Pose {pose['rank']}: Score = {pose['score']:.2f}")
from pandadock.scoring import ScoringFunctionFactory
from pandadock.algorithms import AlgorithmFactory
from pandadock.analysis import BindingAffinityCalculator
# Create custom scoring function
scoring_factory = ScoringFunctionFactory()
scorer = scoring_factory.create_scoring_function(
type='physics-based',
use_gpu=True
)
# Use specialized algorithm
algorithm_factory = AlgorithmFactory()
algorithm = algorithm_factory.create_algorithm(
type='pandadock',
population_size=200,
temperature=500
)
# Calculate binding affinities
affinity_calc = BindingAffinityCalculator()
affinities = affinity_calc.calculate_batch_affinities(results['poses'])
for affinity in affinities:
print(f"ΞG: {affinity.delta_g:.2f} kcal/mol, Kd: {affinity.kd:.2e} M")
Each docking run generates comprehensive results:
results/
βββ poses/ # Individual pose PDB files
β βββ pose_1_score_-14.25.pdb
β βββ pose_2_score_-14.07.pdb
βββ complexes/ # Protein-ligand complexes
β βββ complex_pose_1_score_-14.25.pdb
βββ reports/ # Analysis reports
β βββ docking_report.html # Interactive HTML report
β βββ binding_affinity_report.csv
β βββ detailed_analysis.txt
βββ plots/ # Visualization plots
β βββ score_distribution.png
β βββ energy_breakdown.png
β βββ binding_modes.png
βββ docking_results.json # Machine-readable results
π¬ DOCKING ANALYSIS REPORT
βββββββββββββββββββββββββββββββββββββββ
ALGORITHM: Genetic Algorithm (Enhanced)
SCORING: Physics-based with MM-GBSA
POSES GENERATED: 20
BEST SCORE: -14.25 kcal/mol
π BINDING AFFINITY ANALYSIS
βββββββββββββββββββββββββββββ
Pose 1: ΞG = -14.25 kcal/mol, Kd = 3.60e-11 M, IC50 = 7.20e-11 M
Pose 2: ΞG = -14.07 kcal/mol, Kd = 4.87e-11 M, IC50 = 9.75e-11 M
Pose 3: ΞG = -13.94 kcal/mol, Kd = 6.02e-11 M, IC50 = 1.20e-10 M
𧬠INTERACTION ANALYSIS
βββββββββββββββββββββββββ
Hydrogen Bonds: 3
Hydrophobic Contacts: 12
Ο-Ο Stacking: 1
Salt Bridges: 0
Algorithm | Description | Best For |
---|---|---|
Genetic | Evolutionary optimization | General docking, large ligands |
Monte Carlo | Metropolis sampling | Conformational sampling |
PANDADOCK | Simulated annealing + MD | High accuracy, flexible ligands |
Random Search | Stochastic exploration | Quick screening, benchmarking |
Metal Docking | Coordination constraints | Metalloproteins, metal cofactors |
- Basic: VDW + Hydrogen bonding
- Enhanced: + Electrostatics + Desolvation + Hydrophobic
- Physics-based: Full MM-GBSA with entropy estimation
- Metal-aware: Coordination geometry constraints
# Essential options
-p, --protein PROTEIN Protein PDB file
-l, --ligand LIGAND Ligand MOL/SDF file
-o, --output OUTPUT Output directory
-s, --site X Y Z Binding site center
-r, --radius RADIUS Binding site radius (Γ
)
# Algorithm selection
-a, --algorithm {genetic,monte-carlo,pandadock,random}
-i, --iterations N Number of generations/steps
--exhaustiveness N Independent runs
# Hardware acceleration
--use-gpu Enable GPU acceleration
--cpu-workers N Number of CPU cores
# Scoring options
--enhanced-scoring Enhanced scoring function
--physics-based Physics-based scoring (MM-GBSA)
--local-opt Local optimization
# Flexibility
--auto-flex Automatic flexible residues
--flex-residues RES1 RES2 Manual flexible residues
# Output formats
--report-format {html,csv,json,all}
--detailed-energy Energy component breakdown
PandaDock features a clean, modular architecture:
pandadock/
βββ core/ # Core docking engine
βββ algorithms/ # Docking algorithms
βββ scoring/ # Scoring functions
βββ molecules/ # Molecule handling
βββ analysis/ # Post-processing & analysis
βββ hardware/ # GPU/CPU abstraction
βββ screening/ # Virtual screening
βββ cli/ # Command-line interface
βββ utils/ # Utilities & helpers
# Run tests
pytest
# Run with coverage
pytest --cov=pandadock
# Run specific test categories
pytest tests/test_basic.py
pytest tests/test_scoring.py
- GitHub Wiki: Comprehensive guides and tutorials
- API Reference: Full Python API documentation
- Examples: Sample scripts and workflows
- Paper: [Cite PandaDock] (if published)
We welcome contributions! Please see our Contributing Guidelines.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- GitHub Issues: Report bugs or request features
- Discussions: Community Q&A
- Email: [email protected]
If you use PandaDock in your research, please cite:
@software{pandadock2025,
title={PandaDock: A Python-based Molecular Docking Platform},
author={Panda, Pritam Kumar},
year={2025},
url={https://github.com/pritampanda15/PandaDock},
version={3.0.0}
}
- RDKit community for cheminformatics tools
- PyTorch team for GPU acceleration framework
- AutoDock Vina for inspiration
- Scientific Python ecosystem
βοΈ Dock Smarter. Discover Faster. Build Better.