You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
perf: use AMBER99SB + OBC (native GBSAOBCForce) for relaxation
Revert the relaxation force field from ff14SB + GBn2 back to AMBER99SB +
amber99_obc. Every amber14/ff14SB implicit-solvent model (gbn2/obc2/obc1)
falls back to OpenMM's generic CustomGBForce, which benchmarks several-fold
slower than the native, hand-tuned GBSAOBCForce that amber99_obc.xml uses
(~4x on a 26-residue test). GBn2's accuracy edge over OBC was marginal for
this pipeline, so the speedup is the better trade for high-throughput runs.
Keeps FASPR packing, OBC implicit solvent (no vacuum collapse), the two-stage
minimisation and PROPKA unchanged.
3.**`relax_structure()`** (optional, `--relax`) — two-stage OpenMM energy minimisation using the ff14SB force field with GBn2 generalised-Born implicit solvent. Since ESM3 emits backbone only, sidechains are rebuilt before minimisation: when the **FASPR** binary is available (default), `pack_sidechains()` repacks them with a combinatorial backbone-dependent rotamer search; otherwise it falls back to `optimize_sidechains()` (a local GBn2 minimisation). Either way PROPKA then assigns protonation states from the packed geometry. Stage 1 uses strong Cα restraints to settle sidechains/hydrogens; stage 2 uses weak restraints to allow limited backbone movement. Implicit solvent (rather than vacuum) keeps surface charges/salt bridges from collapsing inward.
35
+
3.**`relax_structure()`** (optional, `--relax`) — two-stage OpenMM energy minimisation using the AMBER99SB force field with OBC generalised-Born implicit solvent (`amber99_obc.xml`, OpenMM's native fast `GBSAOBCForce`; the newer ff14SB/GBn2 implicit models fall back to a several-fold slower `CustomGBForce`). Since ESM3 emits backbone only, sidechains are rebuilt before minimisation: when the **FASPR** binary is available (default), `pack_sidechains()` repacks them with a combinatorial backbone-dependent rotamer search; otherwise it falls back to `optimize_sidechains()` (a local GB-solvent minimisation). Either way PROPKA then assigns protonation states from the packed geometry. Stage 1 uses strong Cα restraints to settle sidechains/hydrogens; stage 2 uses weak restraints to allow limited backbone movement. Implicit solvent (rather than vacuum) keeps surface charges/salt bridges from collapsing inward.
36
36
- FASPR is optional with graceful fallback. Disable with `--no-faspr`; point at a custom binary with `--faspr-bin PATH` (default: `$FASPR_BIN`, else `FASPR` on `PATH`). The Docker image builds and bundles FASPR automatically. For local runs, build it once: `git clone --depth 1 https://github.com/tommyhuangthu/FASPR && g++ -O3 --fast-math -o FASPR/FASPR FASPR/src/*.cpp`, then set `FASPR_BIN=$PWD/FASPR/FASPR` (the `dun2010bbdep.bin` rotamer library must sit next to the binary).
0 commit comments