-
Notifications
You must be signed in to change notification settings - Fork 26
Description
Describe the bug
Some chemically equivalent C-N-H angles in arginine are assigned different harmonic angle parameters.
To Reproduce
Save arginine.pdb.txt as arginine.pdb and run
from openff.toolkit import ForceField, Topology
from openmm import HarmonicAngleForce, unit
force_field_path = "openff-2.3.0.offxml"
topology = Topology.from_pdb("arginine.pdb")
molecule = topology.molecule(0)
system = ForceField(force_field_path).create_openmm_system(topology)
angles, = (force for force in system.getForces() if isinstance(force, HarmonicAngleForce))
for angle_index in range(angles.getNumAngles()):
*indices, theta, k = angles.getAngleParameters(angle_index)
if indices in ([9, 10, 20], [9, 10, 21], [9, 11, 22], [9, 11, 23]):
print(
*(molecule.atom(index).name for index in indices),
theta.in_units_of(unit.degree),
k.in_units_of(unit.kilocalorie_per_mole / unit.radian ** 2),
sep="\t"
)Output
CZ NH1 HH11 119.104777675 deg 97.22432164919 kcal/(mol rad**2)
CZ NH1 HH12 119.104777675 deg 97.22432164919 kcal/(mol rad**2)
CZ NH2 HH21 117.15139543910001 deg 128.6229511823 kcal/(mol rad**2)
CZ NH2 HH22 117.15139543910001 deg 128.6229511823 kcal/(mol rad**2)
Both NH* nitrogen atoms attached to the CZ carbon atom should be chemically equivalent, as well as the HH** hydrogen atoms attached to those nitrogen atoms. However, the C-N-H angles get assigned quite different parameters.
It seems like these two different SMIRKS are matching the two pairs of angles:
openff-forcefields/openforcefields/offxml/openff-2.3.0.offxml
Lines 123 to 124 in 1ddd930
| <Angle smirks="[*:1]~[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]~[*:3]" angle="119.104777675 * degree ** 1" k="97.22432164919 * kilocalorie_per_mole ** 1 * radian ** -2" id="a20"></Angle> | |
| <Angle smirks="[#1:1]-[#7X3$(*~[#6X3,#6X2,#7X2+0]):2]-[*:3]" angle="117.1513954391 * degree ** 1" k="128.6229511823 * kilocalorie_per_mole ** 1 * radian ** -2" id="a21"></Angle> |
When loaded, the resonance form of the molecule is such that one C-N bond is a single bond and the other is a double bond:

But the different resonance forms of the guanidinium group should make all four of these angles equivalent.
Incidentally, switching out the force field for openff_no_water-3.0.0-alpha0.offxml gives
CZ NH1 HH11 119.75608417580001 deg 156.29492916679996 kcal/(mol rad**2)
CZ NH1 HH12 119.75608417580001 deg 156.29492916679996 kcal/(mol rad**2)
CZ NH2 HH21 118.04593704200002 deg 70.86640775433 kcal/(mol rad**2)
CZ NH2 HH22 118.04593704200002 deg 70.86640775433 kcal/(mol rad**2)
i.e., the issue is still present, and in fact, the difference between the force constants more significant.
Computing environment (please complete the following information):
macOS 15.7.4, conda 25.11.1, environment is conda_list.txt
Additional context
This seems related to #56, although that issue discusses torsions, and this one demonstrates a problem with angles.