Skip to content

Should improper torsion RMSDs include all topological torsions or only assigned torsions? #201

@mattwthompson

Description

@mattwthompson

Consider ammonia, which could1 get assigned improper torsion parameter(s), but conventionally doesn't:

>>> from openff.toolkit import Molecule, ForceField
>>> ammonia = Molecule.from_smiles("N")
>>> ammonia.smirnoff_impropers
{(Atom(name=, atomic number=1), Atom(name=, atomic number=7), Atom(name=, atomic number=1), Atom(name=, atomic number=1)), (Atom(name=, atomic number=1), Atom(name=, atomic number=7), Atom(name=, atomic number=1), Atom(name=, atomic number=1)), (Atom(name=, atomic number=1), Atom(name=, atomic number=7), Atom(name=, atomic number=1), Atom(name=, atomic number=1)), (Atom(name=, atomic number=1), Atom(name=, atomic number=7), Atom(name=, atomic number=1), Atom(name=, atomic number=1)), (Atom(name=, atomic number=1), Atom(name=, atomic number=7), Atom(name=, atomic number=1), Atom(name=, atomic number=1)), (Atom(name=, atomic number=1), Atom(name=, atomic number=7), Atom(name=, atomic number=1), Atom(name=, atomic number=1))}
>>> len(ammonia.smirnoff_impropers)
6
>>> ForceField("openff-2.0.0.offxml").label_molecules(ammonia.to_topology())[0]['ImproperTorsions']
<openff.toolkit.topology.topology.ImproperDict object at 0x17956bbf0>
>>> len([*ForceField("openff-2.0.0.offxml").label_molecules(ammonia.to_topology())[0]['ImproperTorsions']])
0

Should these be accounted for in ICRMSD analysis at all?

Reason to include all topological torsions:

  • Significantly easier to implement
  • Invariant to different force fields having different SMIRKS patterns
  • Might inform (via outliers) good candidates parameter addition?

Reasons to include only assigned torsions

  • More intuitive
  • Clearer relationship between benchmarking results and force field
  • Probably skips many "false positives" (trivalent centers we wouldn't ever assign an improper to)?

This is the issue I originally meant to bring up in #199. I used a poor example for that, but surfaced a separate point of confusion so I'm leaving it in place.

Footnotes

  1. In the opinion of the toolkit

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions