proteneer / timemachine

Differentiate all the things!
Other
140 stars 17 forks source link

Add resolve_intramol_clashes #1413

Open maxentile opened 1 month ago

maxentile commented 1 month ago

Add a utility function that energy-minimizes a mol's 0'th conformer, while otherwise remaining as close as possible to the input conformer.

For example, if mol has a pair of atoms placed on top of each other:

image

(resulting in |force(x)| of +inf)

resolve_intramol_clashes(mol, ff) will produce:

image

This is implemented by introducing a softened potential function U(x, lam), with lam increasing the distances used in NonbondedPairListPrecomputed. At lam=1 all intramolecular pairs ij have their effective distance d_ij increased to >= 0.75 * sig_ij, and at lam=0 we recover the original U(x).

A restrained minimization is performed at lam=1, then another restrained minimization is performed at lam=0.