Skip to content
VitruvesPublic

About

GPU-accelerated molecular docking studio for macOS

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Repository files navigation

Druse

Druse

GPU-accelerated structure-based drug design for macOS

macOS Apple Silicon Metal Version License: Apache 2.0

Druse performs receptor preparation, binding-site identification, flexible-ligand docking into a rigid or partly flexible receptor, pose rescoring, interaction analysis and analog enumeration. Search, scoring, neural-network inference and rendering are implemented as Metal compute kernels and run on the integrated GPU; the cheminformatics layer is RDKit, gemmi, OpenMM and a native GFN2-xTB implementation behind a C interface.

The application is a single bundle with no external runtime, and every operation is also available as a command, either in the built-in terminal or headless from a shell.

Druse on launch


Installation

Download Druse 0.1.1

macOS 26.0 or later, Apple Silicon. The build is unsigned: on first launch, Control-click Druse.app and choose Open, or run xattr -cr /path/to/Druse.app.

Homebrew dependencies, the C++ core build and the DMG script are in Docs/Installation.md.


Receptor preparation

Preparation step

A crystal structure is read from PDB or mmCIF and reduced to a docking-ready receptor in one pass, or stage by stage. Alternate locations are resolved by occupancy then B-factor; waters are kept, removed, or retained within a radius of the site; non-standard residues and cofactors are optionally stripped, with structural metal ions preserved. Missing heavy atoms are rebuilt, gaps of up to 15 residues are modelled as loops, and chain-break termini are capped with ACE/NME. Rebuilt side chains are repacked with FASPR against the backbone-dependent Dunbrack rotamer library.

Hydrogens are added for a target pH, with residue pKa values from a PROPKA-style empirical model: a model pKa per titratable group shifted for desolvation, hydrogen bonding and Coulomb interactions. The hydrogen-bond network is then optimized over Asn/Gln amide flips and His tautomers. Partial charges are assigned by EEM (GPU), QEq with Klopman–Ohno shielding, Gasteiger, RDKit templates or GFN2-xTB Mulliken populations, and the receptor is relaxed by restrained L-BFGS on the GPU, with rebuilt loops optionally refined under OpenMM.

→ Docs/Preparation.md

Binding-site definition

Binding Site step

Sites are detected geometrically by alpha-sphere probing, clustered with DBSCAN and ranked by a 26-direction buriedness score, optionally combined with a CoreML pocket predictor. Each candidate reports volume in ų, buriedness, a druggability score and its lining residues. The search box can equally be fitted around a co-crystallized ligand with a chosen padding, centred on a selection, or specified numerically.

→ Docs/BindingSite.md

Docking

Docking step

The default protocol propagates a population of ligand poses against precomputed grid maps, alternating stochastic perturbation under a Metropolis acceptance criterion with periodic local optimization; local optimization uses analytical gradients with SIMD-cooperative reduction rather than finite differences. Alternatives are hierarchical fragment growth with anchor placement and beam-search pruning, replica-exchange Monte Carlo, and a reverse-diffusion search guided by DruseAF attention gradients. Receptor side chains in the site can be sampled together with the ligand pose.

Search effort is set by preset or by explicit population, generation and run counts. Pharmacophore constraints — hydrogen bond, hydrophobic, aromatic, salt bridge, metal coordination — can be imposed with per-constraint weights, and search parameters can be auto-tuned from receptor size, site shape and ligand rotatable-bond count. Libraries are docked in batch with grid reuse.

→ Docs/Docking.md · Docs/VirtualScreening.md

Scoring

Function Type Quantity Terms
Vina Empirical kcal/mol Gaussian steric, repulsion, hydrophobic, hydrogen bond, torsion penalty
Drusina Extended empirical kcal/mol Vina baseline plus electrostatics, salt bridges, π–π, π–cation, halogen bonds, metal coordination, CH–π, amide–π, chalcogen bonds, torsion strain
DruseAF v4 Pairwise geometric network over interatomic distances pKd Learned (~134 K parameters), native Metal inference
PIGNet2 Physics-informed graph neural network kcal/mol Learned with physics-based interaction constraints

Vina and Drusina terms are reported per pose and sum to the total: the intramolecular contribution is re-referenced to the best pose, and the residual is surfaced separately. PIGNet2 is applied as a reranker over the final population and explicit cluster representatives, not as the per-generation search potential. Both neural functions score against the 256 receptor heavy atoms nearest the site centre within 10 Å.

Post-processing covers explicit-atom rescoring with basin hopping, MMFF94 torsion-strain filtering and optional GFN2-xTB refinement.

→ Docs/Scoring.md

Pose analysis

Results step

Poses are grouped by greedy leader clustering on symmetry-aware RMSD, evaluated leader-against-candidate rather than as a full matrix, with cluster representatives retained for rescoring. Each pose carries its term decomposition, a PoseBusters-style validity verdict, RMSD to a reference ligand when one is loaded, and a detected interaction set drawn in 3D and as a 2D diagram. Selected poses can be overlaid and compared by pairwise RMSD matrix and shared-interaction map. Results export to SDF, CSV or a PDB complex.

→ Docs/Analysis.md

Ligand handling

Ligand Database

Compounds are imported from SDF, MOL2, PDB, SMILES or delimited text with column mapping, or taken from a loaded structure. Preparation enumerates protomers and tautomers at a target pH with Boltzmann-weighted populations under an energy window, then embeds and MMFF94-minimizes conformers per retained form. The database stores structures, properties and measured affinities, and is filterable on any column.

→ Docs/Ligands.md

Analog enumeration

Lead Opt step

Analogs are generated from a docked reference by curated substitution rules, restricted to R-groups when the scaffold is to be preserved and filtered by Tanimoto similarity to the parent. Generation is biased along polarity, rigidity, lipophilicity and size, gated on Lipinski and Veber criteria, then each analog is docked into the same site at reduced budget and compared to the parent by score difference, a property profile and predicted ADMET. Generated analogs enter the ligand database.

→ Docs/LeadOptimization.md

Visualization

Surface and interactions

A triple-buffered Metal renderer with analytic impostor spheres and cylinders, ribbon secondary structure, Connolly surfaces coloured by electrostatic potential, hydrophobicity or pharmacophore features, interaction lines, ghost poses, Z-slab clipping and GPU object-ID picking. Redraw is on demand. Offscreen snapshots can be rendered at arbitrary resolution, including headless.

→ Docs/Visualization.md


Command language

Built-in DruseScript terminal

Every operation above is a DruseScript command. The same language drives the terminal inside the window (⌃`, with Tab completion, inline suggestion, history and reverse search) and the binary run without a window:

druse Examples/dock_one_ligand.druse
druse --eval "fetch 1hsg; prep; pocket detect; dock preset=fast; results top=5"

Statements are verb [subverb] [positional…] [key=value…], separated by newlines or ;, with # comments, set name = value assignments and $name substitution. There is no control flow: it is a console language, not a scripting language. Headless runs report through exit codes and write no window; commands that only affect the 3D view are skipped with a warning, except view snapshot, which renders offscreen.

The druse command and fish/zsh/bash completions are installed from Settings ▸ Command Line, or with cli install and cli completions install.

→ Docs/Console.md · Docs/DruseScript.md · Examples/


Documentation

Installation Requirements, Gatekeeper, building from source, packaging
Preparation Parsing, cleanup, repair, packing, protonation, charges, minimization
Ligands Import, form enumeration, conformers, the database
Binding site Detection, metrics, grid box definition
Docking Search algorithms, presets, constraints, batch runs
Scoring Vina, Drusina, DruseAF v4, PIGNet2, post-docking refinement
Analysis Clustering, interactions, validity, comparison, export
Virtual screening Library docking, filters, ranked output
Lead optimization Analog generation, property bias, mini-docking
Visualization Representations, surfaces, camera, snapshots
Console In-app terminal and headless mode
DruseScript Language and complete command reference
Settings Core limit, viewport, logging, command-line install
Benchmark CASF-2016 harness and scoring-function comparison
Architecture C++ core, Metal kernels and Swift application

License

Apache License 2.0 — see LICENSE. Third-party attributions and citation details are in NOTICE.

Copyright © 2026 Johan H.G. Natter

About

GPU-accelerated molecular docking studio for macOS

Topics

Resources

Stars

15 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages