Hi all,
Thanks for your work with OFF. I noticed a call to submit questions and feedback so here I am!
I'd like to simulate a protein/ligand system with the ligand being parameterized by openforcefield, and the protein being parameterized by OpenMM using an Amber forcefield. This works really well in implicit solvent!
My sticking point is with the addition of explicit water. I've been working from this example (Im using streptavidin though), and used PDBFixer to add the solvent:
example
That example calls createSystem from a parmed Structure object. Parmed expects BondType parameters, which don't exist for the water molecules. This is documented in these issues:
https://github.com/ParmEd/ParmEd/issues/930
https://github.com/ParmEd/ParmEd/issues/868
So, after all that my question is - have you used OpenMM to simulate a solvated protein system including an OFF-parameterized ligand, and how is that done?
Thanks!
Things I've tried:
Adding false BondType parameters and then using rigidWater. It appears that the false BondType parameres are honoured by OpenMM, because the water molecules have really bizarre shapes. I can provide example files but it looks like the missing BondType issue is already pretty well understood
The answer was in there all along.
At this line in that example code:
# Parameterize the protein.
t4_system = omm_forcefield.createSystem(t4_pdbfile.topology)
add rigidWater=False as an argument to createSystem. This fills in the water BondTypes. Then, later, rigidWater can be made True at this line:
complex_system = complex_structure.createSystem(nonbondedMethod=NoCutoff,
nonbondedCutoff=9.0*unit.angstrom,
constraints=HBonds,
removeCMMotion=False)
Thank you for the report and for posting the workaround! I think this is definitely worth of at least a note on the example. I believe many people will run into similar issues so maybe we could even consider solvating that protein in tip3p water with pdbfixer.addSolvent() and explain the workaround.
I'm tentatively placing this for the 2.2 milestone.
Most helpful comment
The answer was in there all along.
At this line in that example code:
add
rigidWater=Falseas an argument tocreateSystem. This fills in the water BondTypes. Then, later, rigidWater can be made True at this line: