proteneer / timemachine

Differentiate all the things!
Other
140 stars 17 forks source link

Split of propers and impropers from torsions, add ST symmetry test. #1422

Closed proteneer closed 1 week ago

proteneer commented 1 week ago

This PR:

  1. Splits improper and proper torsions from a single torsion array - this will allow us to fine-tune the alignment and the interpolation logic in a separate PR. This can change expected results for single topology simulations: since we no longer allow an proper torsion to be accidentally aligned and interpolated into an improper torsion - they are now strictly separated. For all other types of simulations, (eg. vanilla MD, AHFE, water sampling etc.) results should be bitwise identical.
  2. Removes Optional[] tags from the [Vacuum/HostGuest]System classes, enforcing a stronger requirement upfront and removing the need to check for None downstream.
  3. Adds a strong symmetry check for consistency of energies, forces, and the definition of the potentials themselves. Roughly, we test that ST(mol_a, mol_b, lamb) == ST(mol_b, mol_a, 1-lamb).