openforcefield / discussions

Contains organisation-wide discussions relating to science, infrastructure, etc.
MIT License
0 stars 0 forks source link

Is OpenFF 2.0 compatible with AMBER ff19sb? and if yes how to combine the protein and ligand prmtop file? #7

Closed aniketsh closed 1 year ago

aniketsh commented 3 years ago

Is OpenFF 2.0 compatible with AMBER ff19sb? and if yes how to combine the protein and ligand prmtop file?

j-wags commented 3 years ago

Hi @aniketsh,

Is OpenFF 2.0 compatible with AMBER ff19sb?

I believe that they are compatible, since both ff19sb and openff-2.0.0 were fit using similar methods to a mix of QM and physical property data, and both force fields use compatible functional forms.

if yes how to combine the protein and ligand prmtop file?

This is the hard part - My understanding is that we generally recommend use of ff14sb or earlier, since ff19sb introduces "CMAP" terms which aren't consistently supported in other force field definitions/simulation engines. I think that OpenMM may be able to handle them, but don't have first-hand experience. So sander/pmemd may be the best simulation engines of choice to ensure that the terms are interpreted correctly.

Generally, there are two options for making systems that use a mix of multiple force fields: 1) Use openmmforcefields to assign parameters to everything, then export the resulting OpenMM System to a ParmEd Structure and convert that to your format of choice 2) Assemble the different components using the tool that's best suited for the job, and then combine them using ParmEd.

Since openmmforcefields doesn't seem to support ff19sb yet, I think that approach 2 is the only option right now. It would look something like this example

I'd note, however, that you should look very closely at the results of this conversion. All of the CMAP-handling functionality in OpenMM and ParmEd seems to be just a few months old, so there may be conversion/interpretation bugs that people haven't found yet!

aniketsh commented 3 years ago

Thanks Jeff. I use parmed usually to combine the system and it had worked before. With CMAP though it works in only one direction.

Parmed version (3.4.3)

import parmed as pmd

ptn=pmd.amber.AmberParm(prm_name='host.prmtop',rst7_name='host.crd') lig=pmd.amber.AmberParm(prm_name='MOL.prmtop',rst7_name='MOL.inpcrd')

system=ptn+lig # This works system=lig+ptn # However this doesn't

system.save('sys.prmtop',overwrite=True) system.save('sys.crd',overwrite=True)

mattwthompson commented 3 years ago
system=ptn+lig # This works
system=lig+ptn # However this doesn't

This looks like a ParmEd bug of some sort, could you open an issue there?