Strain Prediction
Evaluate the strain energy of a molecular pose by comparing it against the lowest-energy conformer. The job runs a conformer search to find the global or near-global minimum (E_ref), then performs a restrained geometry optimization starting from the input pose (E_pose). The strain energy is E_pose - E_ref.
This is useful for quantifying how far a docked pose, crystal structure, or mechanically constrained geometry is from its relaxed conformation. A high strain energy indicates the pose is energetically unfavourable relative to the conformational minimum.
from atomiverse import StrainPrediction, Atoms
from atomiverse.levels import GFN2_XTB
# A pose you want to evaluate for strain
pose = Atoms.from_smiles("C1CCCCC1")
job = StrainPrediction(
atoms=pose,
charge=0,
multiplicity=1,
level_of_theory=GFN2_XTB,
mode="standard",
)
job.submit()
result = job.require_result()
print(f"Strain: {result.strain_energy * 627.509:.1f} kcal/mol")
print(f"Pose energy: {result.pose_energy:.8f} Ha")
print(f"Ref energy: {result.ref_energy:.8f} Ha")
Inputs
| Field | Type | Description |
|---|---|---|
atoms | Atoms | Molecular geometry to evaluate for strain |
charge | int | Total charge of the system (default 0) |
multiplicity | int | Spin multiplicity, must be >= 1 (default 1) |
level_of_theory | LevelOfTheory | Computational method for conformer search and restrained optimization |
mode | str | One of "loose", "standard", "tight", "verytight" (default "standard") |
Modes
The mode parameter controls both the conformer search preset and the force constant of the harmonic restraint:
| Mode | Restraint (kcal/(mol·Å²)) | Conformer generation | Use case |
|---|---|---|---|
loose | 10 | Standard | Large, flexible molecules where significant local relaxation is expected |
standard | 25 | Standard | General-purpose strain evaluation (default) |
tight | 50 | Tight | Moderately constrained poses, e.g. protein-bound ligands |
verytight | 100 | VeryTight | Highly constrained poses where only minor relaxation is allowed |
Results
result.strain_energy is the strain energy in Hartree. Positive values indicate the pose is higher in energy than the lowest conformer. Multiply by 627.509 to convert to kcal/mol.
result.pose_energy is the absolute energy of the restrained-optimized pose in Hartree.
result.ref_energy is the absolute energy of the lowest conformer found by the conformer search in Hartree.
result.restrained_atoms is the geometry of the pose after the restrained optimization.
result.lowest_conformer_atoms is the geometry of the lowest-energy conformer.
How It Works
-
Conformer search: The molecule is submitted to a conformer generation + optimization + single-point energy ranking pipeline. The lowest absolute energy is recorded as E_ref.
-
Restrained optimization: Starting from the input pose, a geometry optimization is run with a harmonic restraint applied to all heavy atoms (Z > 1). The restraint pulls atoms back toward their starting positions with a force proportional to the displacement:
F_i = -2 k (r_i - r_i^0)where
kis the force constant determined by the mode. This allows bond lengths and angles to relax locally while preventing the molecule from escaping to a different conformation. -
Strain calculation:
strain = E_pose - E_ref
Compute Resources
CPU cores and memory are determined automatically based on the molecule size and level of theory. The walltime estimate accounts for both the conformer search and the restrained optimization.
For a typical small molecule (20-50 atoms) at GFN2-xTB level with standard mode, the job completes in 5-15 minutes. Larger molecules at DFT levels of theory may take several hours.