openforcefield / amber-ff-porting

Scratch space for porting amber FFs into SMIRNOFF format
1 stars 3 forks source link

CYS library charges are being mis-applied #20

Closed j-wags closed 3 years ago

j-wags commented 3 years ago

I realized that I'd left CYS out of the OFFXML building and testing. When I include it, I get the following error during OpenFF Toolkit parameterization:


MainChain/CYS/CYS
HarmonicBondForce 1.7237740755081177 kJ/mol
HarmonicAngleForce 3.202056646347046 kJ/mol
PeriodicTorsionForce 46.614627838134766 kJ/mol
NonbondedForce -124.68365478515625 kJ/mol
-73.14317321777344 kJ/mol
[H][C@@](C(=O)N([H])C([H])([H])[H])(C([H])([H])S[H])N([H])C(=O)C([H])([H])[H]
Traceback (most recent call last):
  File "test_parameterize.py", line 85, in <module>
    off_sys = ff.create_openmm_system(mol.to_topology(),)#allow_nonintegral_charges=True)
  File "/Users/jeffreywagner/projects/OpenForceField/openforcefield/openforcefield/typing/engines/smirnoff/forcefield.py", line 1297, in create_openmm_system
    parameter_handler.postprocess_system(system, topology, **kwargs)
  File "/Users/jeffreywagner/projects/OpenForceField/openforcefield/openforcefield/typing/engines/smirnoff/parameters.py", line 3606, in postprocess_system
    raise NonintegralMoleculeChargeException(msg)
openforcefield.typing.engines.smirnoff.parameters.NonintegralMoleculeChargeException: Partial charge sum (0.19329999945122206 e) for molecule 'default_name' (SMILES [H][C@@](C(=O)N([H])C([H])([H])[H])(C([H])([H])S[H])N([H])C(=O)C([H])([H])[H] does not equal formal charge sum (0.0 e). To override this error, provide the 'allow_nonintegral_charges=True' keyword to ForceField.create_openmm_system

This offset is numerically very close to the charge of the HS in the OFFXML (I've done my best to bold it below)

<LibraryCharge smirks="[H:4]C@@:3(C:5([H:7])[S:8][H:9])[N:1][H:2]" charge1="-0.4157 elementary_charge" charge2="0.27190000000000003 elementary_charge" charge3="0.0213 elementary_charge" charge4="0.11239999999999999 elementary_charge" charge5="-0.12309999999999999 elementary_charge" charge6="0.11119999999999998 elementary_charge" charge7="0.11119999999999998 elementary_charge" charge8="-0.3119 elementary_charge" charge9="0.1933 elementary_charge" charge10="0.5973000005487781 elementary_charge" charge11="-0.5679000016463344 * elementary_charge" id="MainChain-CYS_CYS">

These do indeed add up to 0

>>> -0.4157 + .2719 + .0213 + .1124 - .1231 + .1112 + .1112 - .3119 + .1933 + .5973 - .5679
0.0

This is probably due to interference between the CYS and CYX parameter. I'll try switching their order in the hierarchy to see if that resolves it.