A sophisticated molecular docking pipeline for constraint-based ligand screening with advanced interaction validation and PyMOL visualization.
- Chemistry-Aware Constraint Validation: Sophisticated interaction scoring based on chemical compatibility and geometry
- Unified Ligand Screening: Batch process multiple ligands with comprehensive ranking
- Enhanced PyMOL Visualizations: Color-coded interactions, toggleable groups, and detailed legends
- Multiple Validation Methods: Sophisticated (chemistry-aware) and distance-only approaches
- Detailed Analysis Reports: Complete interaction breakdowns and constraint satisfaction metrics
# Clone the repository
git clone <repository-url>
cd opendock
# Install dependencies
conda create -n opendock-env python=3.9
conda activate opendock-env
pip install numpy pathlib subprocess
# Install SMINA for docking
# Download from https://sourceforge.net/projects/smina/
# Or install via conda: conda install -c bioconda smina
# Screen multiple ligands against receptor
python unified_ligand_screening.py data/7R1O_receptor_H.pdb designed_ligands/ results/
# Use specific validation method
python unified_ligand_screening.py data/7R1O_receptor_H.pdb designed_ligands/ results/ sophisticated
opendock/
├── README.md # This file
├── unified_ligand_screening.py # Main screening pipeline
├── scripts/ # Core analysis scripts
│ ├── enhanced_constraint_validation.py
│ ├── analyze_smina_poses.py
│ ├── smina_local_docking.py
│ └── ...
├── data/ # Sample data and references
├── designed_ligands/ # Example ligand library
├── examples/ # Usage examples (if any)
└── archive/ # Legacy code and frameworks
├── experimental_scripts/ # Development scripts
├── deprecated_workflows/ # OpenDock framework & workflows
├── old_results/ # Historical results
├── test_directories/ # Test runs
└── ...
The main pipeline (unified_ligand_screening.py
) provides:
- Multi-format support: SDF, PDB, PDBQT ligands
- SMINA-based docking: Expanded pose generation with local optimization
- Constraint validation: Chemistry-aware interaction scoring
- Comprehensive reporting: Detailed rankings and visualizations
- Chemistry-aware: Validates H-bond donor/acceptor compatibility
- Geometric validation: Considers angles and interaction geometry
- Optimal distance scoring: Based on interaction-specific optimal distances
- Continuous scoring: 0.0-1.0 range with multiple factors
- Simple proximity: Distance-based cutoffs only
- Discrete scoring: 0.0, 0.4, 0.7, or 1.0 based on distance thresholds
- Fast computation: When chemistry validation fails
- Color-coded interactions: Different colors for interaction types
- Thickness indicates strength: Line thickness shows interaction quality
- Toggleable groups: Show/hide interaction types independently
- Visual legend: Built-in legend explaining symbols and quality indicators
ENHANCED LIGAND SCREENING RESULTS
Generated: 2025-08-25 15:35:08
Total ligands processed: 8
Rank Ligand Constraints SMINA Status
--------------------------------------------------------------------------------
1 RIVPA_sdf 68.3 % -6.025 ✅ GOOD
2 A-40_sdf 67.4 % -5.474 ✅ GOOD
====================================================================================================
DETAILED CONSTRAINT INTERACTION ANALYSIS
====================================================================================================
RANK 1: RIVPA_sdf
--------------------------------------------------
Overall: 68.3% satisfaction (Score: 4.10/6.0)
CONSTRAINT INTERACTIONS:
Constraint Type Score Distance Atoms Status
-------------------------------------------------------------------------------------
D:ILE8 hydrophobic 0.734 3.85 CZ↔CB ✅ GOOD
D:ASP10 h_bond 0.736 2.90 NH2↔OD2 ✅ GOOD
...
results/
├── ligand_ranking.txt # Enhanced ranking with interaction details
├── summary_report.json # JSON summary for programmatic access
├── compare_top_ligands.pml # PyMOL script comparing top 5 ligands
└── ligand_name/
├── best_pose.pdb # Best constraint-satisfying pose
├── pose_01.pdb to pose_50.pdb # All generated poses
├── detailed_analysis.json # Complete analysis results
├── constraint_validation.json # Validation details
└── visualize_ligand.pml # Individual PyMOL visualization
Constraints are defined in unified_ligand_screening.py
:
self.constraint_residues = {
'D:ILE8': {'type': 'hydrophobic', 'atoms': 'CB+CG1+CG2+CD1'},
'D:ASP10': {'type': 'h_bond_acceptor', 'atoms': 'OD1+OD2'},
'D:ASN13': {'type': 'h_bond_donor_acceptor', 'atoms': 'OD1+ND2'},
'D:ARG20': {'type': 'h_bond_donor', 'atoms': 'NH1+NH2+NE'},
'E:ASP4': {'type': 'h_bond_acceptor', 'atoms': 'OD1+OD2'},
'E:ASP6': {'type': 'h_bond_acceptor', 'atoms': 'OD1+OD2'}
}
self.binding_center = [19.344, -1.356, 28.097] # Binding site center
self.binding_box_size = [25.0, 25.0, 25.0] # Search space
README_UNIFIED_SCREENING.md
- Detailed pipeline documentationVISUALIZATION_GUIDE.md
- PyMOL visualization guideTRANSFORMATION_SUMMARY.md
- Development historyQUICK_START.md
- Getting started guide
# Basic docking example
python examples/framework_success_demo.py
# Constraint comparison
python examples/constraint_comparison.py
All experimental scripts, old workflows, and test results have been moved to the archive/
directory:
archive/experimental_scripts/
- Development and debugging scriptsarchive/old_results/
- Historical docking resultsarchive/test_directories/
- Test runs and iterationsarchive/analysis_iterations/
- OpenDock analysis experimentsarchive/deprecated_workflows/
- Superseded workflows
- Keep the main directory clean - use
archive/
for experimental work - Update documentation when adding new features
- Follow the established naming conventions
- Test with both validation methods (sophisticated and distance_only)
[Add license information]
[Add contact information]