Summary
Generalise the Voronoi (and SASA) hydration-shell dummy weights from pure
geometry to a residue-resolved hydration contrast, seeded from
MD-derived per-amino-acid hydration data.
Motivation
All current SAXS calculators (CRYSOL, FoXS, Pepsi-SAXS, AUSAXS) — and
pripps today — model the hydration shell with a single uniform contrast
parameter (c2 / contrast_density). But the first water layer is not
uniform: Linse, Fischbach & Hub (bioRxiv 2025.06.10.658889) rank the 20
amino acids by hydration-shell density and find acidic residues
(Asp/Glu) generate the strongest excess (~+1 to +1.5 waters relative to
Ala), cationic/polar residues a milder excess, and apolar residues a
depletion layer (locally below bulk). This chemical texture is exactly
what a uniform shell cannot represent.
Proposal
Generalise the per-dummy weight:
weight_i = (V_i / V_water) * a(residue_i)
where a(·) is a per-residue (or per-atom-kind) hydration affinity:
a > 1 for acidic, mild > 1 for cationic/polar, a < 1 (toward local
negative contrast) for apolar; anchor a(ALA) = 1. Seed the default table
from Linse et al. 2025.
Parameter economy (important): fix the relative table and keep the
single global c2 as the overall scale. The shell becomes chemically
textured at no extra fitted parameter — this is not a 20-dim free
vector (that would overfit).
Why it fits pripps specifically
- The Voronoi hydration dummies already carry
parent_index
(voronota-ltr SolventSphere), and pripps atom kinds already encode
residue context (e.g. ASP:OD, LYS:NZ). Each surface water already
knows its residue — the hook exists, it just isn't used in
src/solvent/voronoi_hydration.rs (weights are currently
s.weight / WATER_VOLUME only).
- Natural API: optional
hydration_weight: 1.0 field per species in the
form-factor YAML, read by the Voronoi/SASA hydration models. Keeps the
user-editable ethos and extends to CG (per-bead Martini hydration
affinities).
- Geometric Voronoi placement answers where the water sits and how much
volume it occupies; the Linse table answers how strongly it deviates
from bulk. FoXS atom-centred SASA dummies / Pepsi grid cells lack a
clean per-surface-water residue handle; the discrete Voronoi waters have
it — so the two ideas compound.
Validation before claiming anything
- Compare uniform-
c2 Voronoi shell vs Linse-weighted Voronoi shell on the
SASBDB benchmark; report χ² improvement and where it concentrates
(highly charged proteins, IDPs such as Hub's XAO peptide).
- Demonstrate the weighted shell uses the same single fitted
c2 — any
improvement comes from chemistry, not extra free parameters.
Caveats
- Linse scores are explicit-solvent, water-model- and force-field-dependent,
and defined relative to alanine; transferring them to a dummy-contrast
amplitude is an approximation that needs calibration, not a
first-principles mapping.
- Source is currently a preprint — recheck for the peer-reviewed version.
References
- Linse, J.-B., Fischbach, T. M. & Hub, J. S. (2025). Hydration shells of
globular and intrinsically disordered proteins… bioRxiv
2025.06.10.658889.
Summary
Generalise the Voronoi (and SASA) hydration-shell dummy weights from pure
geometry to a residue-resolved hydration contrast, seeded from
MD-derived per-amino-acid hydration data.
Motivation
All current SAXS calculators (CRYSOL, FoXS, Pepsi-SAXS, AUSAXS) — and
pripps today — model the hydration shell with a single uniform contrast
parameter (
c2/contrast_density). But the first water layer is notuniform: Linse, Fischbach & Hub (bioRxiv 2025.06.10.658889) rank the 20
amino acids by hydration-shell density and find acidic residues
(Asp/Glu) generate the strongest excess (~+1 to +1.5 waters relative to
Ala), cationic/polar residues a milder excess, and apolar residues a
depletion layer (locally below bulk). This chemical texture is exactly
what a uniform shell cannot represent.
Proposal
Generalise the per-dummy weight:
where
a(·)is a per-residue (or per-atom-kind) hydration affinity:a > 1for acidic, mild> 1for cationic/polar,a < 1(toward localnegative contrast) for apolar; anchor
a(ALA) = 1. Seed the default tablefrom Linse et al. 2025.
Parameter economy (important): fix the relative table and keep the
single global
c2as the overall scale. The shell becomes chemicallytextured at no extra fitted parameter — this is not a 20-dim free
vector (that would overfit).
Why it fits pripps specifically
parent_index(
voronota-ltrSolventSphere), and pripps atom kinds already encoderesidue context (e.g.
ASP:OD,LYS:NZ). Each surface water alreadyknows its residue — the hook exists, it just isn't used in
src/solvent/voronoi_hydration.rs(weights are currentlys.weight / WATER_VOLUMEonly).hydration_weight: 1.0field per species in theform-factor YAML, read by the Voronoi/SASA hydration models. Keeps the
user-editable ethos and extends to CG (per-bead Martini hydration
affinities).
volume it occupies; the Linse table answers how strongly it deviates
from bulk. FoXS atom-centred SASA dummies / Pepsi grid cells lack a
clean per-surface-water residue handle; the discrete Voronoi waters have
it — so the two ideas compound.
Validation before claiming anything
c2Voronoi shell vs Linse-weighted Voronoi shell on theSASBDB benchmark; report χ² improvement and where it concentrates
(highly charged proteins, IDPs such as Hub's XAO peptide).
c2— anyimprovement comes from chemistry, not extra free parameters.
Caveats
and defined relative to alanine; transferring them to a dummy-contrast
amplitude is an approximation that needs calibration, not a
first-principles mapping.
References
globular and intrinsically disordered proteins… bioRxiv
2025.06.10.658889.