-
Notifications
You must be signed in to change notification settings - Fork 2
Open
Description
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']])
0Should 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
-
In the opinion of the toolkit ↩
Metadata
Metadata
Assignees
Labels
No labels