potential term for restraining the distance between atoms and a plane. Please use the helper function create_PlaneDistPot in the module to simplify creation of this term. constructor: PlaneDistPot(instanceName, oAtom, xAtom, yAtom, restraintList, sim ) instanceName is a user-specified identifier oAtom, xAtom, yAtom are atoms defining the plane. restraintList is an optional XPLOR-style restraint table (string). sim, is an optional .Simulation specification [they default to the current Simulation.] methods planeNorm() - the current value of the plane normal. addRestraints(restraintList) - add the specified XPLOR-style restraints calcEnergy() - calc energy, returns the energy value. calcEnergyAndDerivs(derivs) - calc energy, derivs, returns the energy value. rms() - return the restraint rms violation numRestraints() - return the numbder of restraints defined for this term. violations() - return number of violations info() - current info about the state of this instance showRestraints(violated) - return info on restraints. Argument violated is boolean specifying whether to return only violated restraints. showViolations() - return string containing pretty-printed info on all violated restraints. The following parameters can be set [defaults in square brackets] oAtom - the plane-defining atoms xAtom yAtom nMono - number of monomers [1] verbose - if true, sporadically spit out info [False] scale - scale factor [1] aveExp - exponential to use in sum averaging [6] dOffset - potential offset [0] hardExp - exponential in hard region of potential [2] rSwitch - distance at which to switch from hard form [0.5] softExp - exponential in soft region of potential [1] asympSlope - slope in linear asymptotic region of pot [1] threshold - threshold in violation calculation [0.5] potType - type of potential: "soft" or "hard" [hard] aveType - type of restraint averaging: "average", "center" or "sum" [sum] showAllRestraints - boolean which changes the behavior of showViolations. If this parameter is set to True, the behavior of showViolations is modified such that all restraints are printed. Violated restraints are indicated by an asterisk in the first column. [False] the above quantities may be retrieved using the member function form quantity(), while they are set using the form setQuantity(value). The energy function is defined as if pot=HARD or rrSwitch: scale * (a + b / r^softExp + asympSlope * r) where b = rSwitch^(softExp+1) * (asympSlope - hardExp * rSwitch^(hardExp-1)) / softExp a = rSwitch^hardExp - b * rSwitch^(-softExp) - asympSlope * rSwitch; The distance r is related to the calcualted restraint distance d by: if d < cdist - cMinus: r = cdist - cMinus - d if d > cdist+cPlus-dOffset: r = cdist - ( d + cPlus - dOffset ) otherwise, r = 0 The restraint distance d is calculated as for aveType=average: d = [ sum_i | dot(q_i-p1, n) |^(-aveExp) / Ni ] ^(-1/aveExp) where q_i is the position of the i-th atom, and Ni is the number of atoms in the sum. p1 is the position of oAtom, while n is the unit vector in the direction (p2-p1) X (p3-p1), where p2 is xAtom.pos() and p3 is yAtom.pos() for aveType=sum: d = [ sum_i | dot(q_i-p1, n) |^(-aveExp) / nMono ] ^(-1/aveExp) where q_i is the position of the i-th atom. for aveType=center: d = | dot(sum_i q_i/Ni - p1, n) | XPLOR NOE restraint table format: ASSIgn ! optional comment the statement can be split across muliple lines, but the comment, if specified, should be on the same line at cPlus.