██████╗ ██╗ ██╗███████╗████████╗ █████╗ ██████╗ ██████╗ ██╔══██╗╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██╔════╝ ██████╔╝ ╚████╔╝ ███████╗ ██║ ███████║██████╔╝██║ ██╔═══╝ ╚██╔╝ ╚════██║ ██║ ██╔══██║██╔══██╗██║ ██║ ██║ ███████║ ██║ ██║ ██║██║ ██║╚██████╗ ╚═╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ╚═════╝
GPU-accelerated rigid body and flexible chain Brownian dynamics for bimolecular association rate constants (kon)
PySTARC computes the bimolecular association rate constants (kon) by implementing rigid body Brownian dynamics within the Northrup-Allison-McCammon formalism. kon is the diffusion limited rate of reaching an outer surface, multiplied by the probability of subsequently reaching reactive contact before escaping. Trajectories run in parallel on the GPU with a NumPy CPU fallback. Applications include protein-ligand and protein-protein association, as well as other diffusion controlled encounters.
Forces combine Adaptive Poisson-Boltzmann Solver (APBS) electrostatic grids near the receptor, a screened Coulomb (Yukawa) multipole far field outside the grid, Rotne-Prager-Yamakawa hydrodynamics, and Born desolvation. Reactions are captured by the closed form Brownian bridge crossing probability, such that a crossing between two recorded positions is detected without shrinking the timestep. Diffusion constants come from a Monte Carlo hydrodynamic radius.
- Batch propagation. All trajectories advance as GPU arrays.
- Multi-GPU. Trajectories are divided across the available GPUs, while every GPU uses the same APBS grids.
- Blocked Born desolvation. The reverse-direction desolvation is evaluated in blocks so it fits in GPU memory.
- Brownian bridge reactions. The crossing probability between two recorded positions is P = exp(-x₀·x₁ / (D_eff·Δt)), exact at a constant cost per step.
- Yukawa multipole far field. Outside the APBS grid the screened (Yukawa) potential is expanded as a multipole series through the monopole, dipole, and quadrupole terms.
- Rotne-Prager-Yamakawa hydrodynamics. The mobility tensor stays valid through the sphere overlap regime.
- Monte Carlo hydrodynamic radius. The radius comes from the solvent-excluded surface using a Kirkwood double sum, within ~1% of the analytical value.
- Bidirectional Born desolvation. Both the receptor in the ligand field and the ligand in the receptor field are evaluated, coupled by Newton's third law.
- Wilson score interval. The confidence interval holds for any Prxn and any N ≥ 1.
- Adaptive timestep. A user configurable
max_dtceiling prevents b-surface overshoot. - Quaternion rotation. Orientations compose directly, with no interpolation error.
- Scripted setup.
setup.pybuilds PQR files, APBS grids, reaction criteria, andinput.xmlfrom PDB and topology files. - Convergence diagnostics. Convergence is tracked by the relative standard error, the Wilson interval, a convergence curve, and a split-half test.
- Structured output. Each run produces trajectories, encounters, first passage times, radial densities, occupancy maps, pose clusters, fluxes, transition matrices, commitment probabilities, and energetics.
- Live progress. kon and Prxn are reported at a configurable interval.
- Checkpointing. Long runs can be saved and resumed.
GPU (Linux / HPC):
git clone https://github.com/anandojha/PySTARC.git
cd PySTARC
bash install_PySTARC.shThe hsp90_inhibitors/ and ttk_inhibitors/ examples require the OpenEye Toolkits (academic license available, https://www.eyesopen.com).
Mac / CPU:
git clone https://github.com/anandojha/PySTARC.git
cd PySTARC
conda create -n PySTARC python=3.11 -y
conda activate PySTARC
conda install -c conda-forge ambertools apbs rdkit openbabel -y
conda install -c openeye openeye-toolkits -y
pip install matplotlib pdb2pqr
pip install dist/pystarc-1.1.0-py3-none-any.whl --force-reinstallpython -m pytest tests/
python -m pytest tests/ -vconda activate PySTARC
module load cuda # HPC only
cd examples/two_charged_spheres
bash run.shSee examples/ and examples/PARAMETERS.md for the parameter guide.
examples/
├── two_charged_spheres/ Analytical validation (exact Smoluchowski solution)
├── trypsin_benzamidine/ Protein-ligand (charged ligand, surface pocket)
├── beta_cyclodextrin_guests/ Host-guest (7 neutral guests, same receptor)
├── thrombin_thrombomodulin/ Protein-protein (electrostatically steered)
├── p38_mapk_sb203580/ Protein-ligand (neutral kinase inhibitor)
├── carbonic_anhydrase_inhibitors/ Protein-ligand (7 sulfonamides, 3 CA isozymes)
├── hsp90_inhibitors/ Protein-ligand (6 HSP90 inhibitors)
├── ttk_inhibitors/ Protein-ligand (8 TTK/MPS1 kinase inhibitors)
├── trypsin_benzamidine_multi_GPUs/ Cluster SLURM demo (single-GPU and multi-GPU)
└── barnase_barstar_chainbd/ Flexible chain BD (protein-protein, under active validation)
- Python 3.11+
- AmberTools
- APBS
- OpenBabel
- RDKit
- OpenEye Toolkits
- NumPy
- SciPy
- Click
- Numba
- Matplotlib
- pdb2pqr
- CuPy
MIT
When using PySTARC, please cite:
Ojha et al. PySTARC: GPU-accelerated Brownian dynamics for bimolecular association rate constants (2026).
