acemd.restraints module#

class acemd.restraints.IntermolecularRepulsion(sel, sigma, epsilon, sel2=None)#

Bases: object

Excluded-volume repulsion between distinct molecules of a selection.

Purely repulsive WCA among the selected atoms, with same-molecule pairs excluded, leaving their interaction with everything else untouched. Stops copies of a molecule aggregating: cosolvent probes, ligand copies, ions. sel2 repels two groups from each other instead; the intramolecular exclusion stays on so overlapping selections cannot repel one molecule apart.

sigma is deliberately far above any atomic LJ sigma, so each atom becomes a broad soft sphere so molecules repel as blobs. Coarse on purpose.

From the fragment-repulsion term in acerelax, itself following openmm/openmm#4853

ENERGY = '(1-delta(body1-body2))*step(rcut - r) * (4*epsilon*((sigma/r)^12 - (sigma/r)^6) + epsilon); rcut = 2^(1/6) * sigma; sigma=0.5*(sigma1+sigma2); epsilon = sqrt(epsilon1*epsilon2);'#
WCA_CUTOFF_FACTOR = 1.122462048309373#
static from_restraint_dict(restraint_dict)#
static parse_restraint(restraint)#
setupForce(idx, mol, fbrefmol, timestep, directory, system=None)#
to_dict()#
class acemd.restraints.PositionalRestraint(sel, axes='xyz', fb_width=None, fb_center=None, fb_center_offset=None, setpoints=None, legacy=False)#

Bases: object

static from_restraint_dict(restraint_dict)#
static from_restraint_str(restraint_str)#
static parse_restraint(restraint)#
setupForce(idx, mol, fbrefmol, timestep, directory, system=None)#
to_dict()#
acemd.restraints.get_force_str(axes, i, x1, x2, y1, y2, z1, z2, center_offset, distfun)#
acemd.restraints.parse_setpoint(setpoint, timestep)#
acemd.restraints.parse_setpoints(_setpoints, timestep)#
acemd.restraints.setup_extforces(mol, restraints, fbrefcoor, system, timestep, directory)#
acemd.restraints.update_restraints(simulation, restraints, step, log=False)#