Molecular surfaces and geometric interactions¶
Open Molecular surfaces and interactions in the structure controls. Choose settings, then Apply inspection. The panel reports surface area (Ų), enclosed volume (ų), grid spacing and an interaction table. Screenshot capture uses these same polygonal actors; solid, mesh and dot styles also apply to existing field isosurfaces. Translucency is controlled by surface opacity. Browser transport uses ordinary vtk.js geometry; live-browser qualification is tracked separately.
Selection¶
Both tools use the same finite input-cell selection:
allornoneindex 1,2,3(one-based atom numbers)chain Aorresidue A/24within 4 of (chain A)(Å, inclusive, includes the seed)
A surface is built from only the selected atoms. Interactions are restricted to that selection, or to pairs crossing it and an optional partner selection. No periodic images or crystal neighbours are implicitly included. A molecular surface around a cut-out selection is its own boundary, not a cropped portion of the whole molecule’s surface.
Surfaces, colours and numerical meaning¶
VdW is the boundary of the union of atom-radius spheres. SAS expands every
radius by the probe radius (default 1.4 Å). SES first constructs the expanded
union and then erodes it by the probe radius using a Euclidean distance
transform. The boundary location is interpolated from the sphere-union signed
distance field before contouring. This is an independent implementation of the
published distance-transform construction of Xu and Zhang (2009),
using NumPy, BSD-licensed SciPy and BSD-licensed VTK/PyVista. No EDTSurf or GPL
source code is used. SES requires the optional surfaces extra. VdW and SAS do not.
SES includes reentrant regions; it is not SAS with a different label. Internal void boundaries large enough to accommodate the probe can remain. Grid spacing (default 0.25 Å) is an explicit numerical approximation, not an analytical Connolly surface. Small cavities below the grid resolution can disappear. Area is the sum of mesh triangle areas; volume is the signed closed-mesh volume including cavity orientation. Open meshes refuse a volume. A 16-million-voxel limit refuses oversized requests rather than silently coarsening them.
Element and chain colours match the atoms (CPK by element, the ribbon palette
by chain) and have categorical keys; each surface vertex takes its nearest
atom’s colour, so a seam between two categories blends only those two colours.
The browser’s colour bar shows the category index, while screenshots and
exports label each colour. Atomic charges (Mulliken,
Löwdin, Hirshfeld, IAO) require aligned stored atom properties. Hydrophobicity
uses the Kyte–Doolittle scale
for standard amino-acid residue names. Vertex attribution uses the closest atom
sphere surface. Stored volume.potential is trilinearly sampled in its full
lattice basis, including skew grids and bohr-to-Å conversion. Missing properties,
nonfinite values and insufficient potential-grid coverage refuse colouring;
they are not replaced with invented zero values.
Numerical checks¶
Tests fix tolerances before measuring: 5% for isolated-sphere VdW/SAS/SES area and volume at 0.1 Å, and 3% for analytic overlapping-sphere VdW/SAS unions. For deposited crambin 1CRN, using the viewer’s radii, 0.25 Å VdW/SAS meshes are compared with independent 4096-point-per-atom Shrake–Rupley area sampling and 262144-point deterministic Sobol volume sampling, at 5% tolerance. The reference sampling uncertainties are retained with the fixture.
1CRN, 0.25 Å |
Area Ų |
Reference area Ų |
Volume ų |
Reference volume ų |
|---|---|---|---|---|
VdW |
4108.132 |
4248.324 |
3568.034 |
3570.137 |
SAS, probe 1.4 Å |
2921.604 |
2971.440 |
8355.575 |
8349.968 |
SES, probe 1.4 Å |
2295.159 |
2307.259 |
4779.138 |
4705.374 |
The SES protein reference is the same construction at 0.1 Å, with a 10%
coarse/fine tolerance. It demonstrates discretization convergence, not an
independent analytical protein-surface benchmark. Do not interpret these
case-specific checks as a universal error bound; refine spacing for quantitative
work. The fixture records and explicit regeneration script are under
tests/fixtures/inspection/.
Interaction definitions¶
These are geometric candidates, not computed interaction energies or inferred protonation states. Explicit hydrogens are required for hydrogen bonds. The existing simple hydrogen-bond toggle retains its older 3 Å/150° display rule; use this panel when choosing criteria or obtaining a table.
Kind |
Definition |
|---|---|
H-bond |
N/O donor with a bonded explicit H, N/O acceptor, D–A < configured distance (default 3.5 Å), D–H–A ≥ configured angle (110°). |
Contact |
Nonbonded heavy-atom distance ≤ summed VdW radii + configured gap (0.5 Å). |
Clash |
Nonbonded heavy-atom VdW overlap ≥ configured overlap (0.4 Å). |
Salt bridge |
Oppositely charged atoms < 4 Å. Standard ASP OD1/OD2, GLU OE1/OE2, LYS NZ, ARG NH1/NH2 annotations plus explicitly selected charged ligand atoms. |
Halogen bond |
Covalent C–Cl/Br/I donor to O, X–O < summed VdW radii, C–X–O ≥ 120°. |
Parallel π-stack |
Aromatic ring centres < 7 Å, unoriented plane-normal angle < 30°, each normal within 45° of the centre–centre direction. |
H-bond, salt and parallel-stack definitions follow the published GetContacts criteria. Halogen candidates follow the short directional contact survey of Auffinger et al. (2004). The halogen definition deliberately identifies that survey’s candidates, not all chemically possible halogen acceptors. Fluorine is excluded. Covalent and 1–3 neighbours are excluded from contact/clash lists. Supplied bonds take precedence; inferred connectivity can obscure exceptionally short clashes, so provide correct bonds when investigating those cases.
PHE/TYR/TRP residue annotations supply protein aromatic rings. Enter ligand
aromatic rings as complete atom selections separated by ;; planarity alone
never establishes aromaticity. Explicit ligand charge selections represent
formal charged sites, not fractional population-analysis charges. Review
protein protonation assumptions; the standard residue-name convention is not
a pKa calculation. π candidates require complete selected rings.
Tests include a straight water donor–H–acceptor, collinear and rejected bent C–Cl···O pairs, salt and parallel-ring examples, and deposited 1STP biotin O3 contacts to ASN23 ND2, SER27 OG and TYR43 OH (2.992381, 2.771046, 2.584910 Å). The latter are contacts, not claimed hydrogen bonds: the input lacks explicit H.
Python use¶
from vibeview.molecular_inspection import add_inspection
from vibeview.molecular_selection import select, within
from vibeview.molecular_surfaces import build_surface
from vibeview.interactions import find_interactions
surface = build_surface(structure, kind="ses", probe=1.4, spacing=0.25)
print(surface.area, surface.volume)
rows = find_interactions(structure, selection="chain A", partner="residue B/1",
kinds=("hbond", "contact", "clash"))
result = add_inspection(plotter, structure,
{"surface": "sas", "style": "mesh", "colour": "chain"}, reader)
Python interaction atom indices and explicit charged/ring tuples are zero-based;
the panel and selection expressions display one-based numbers. within() is the
shared selection operator intended for scripting and subsequent selection tools.