GBSA using the python wrapper

The functionality of OpenMM will (eventually) include everything that one would need to run modern molecular simulation.
POST REPLY
User avatar
Saugat Kandel
Posts: 7
Joined: Wed Nov 05, 2014 4:50 pm

GBSA using the python wrapper

Post by Saugat Kandel » Fri Jan 09, 2015 6:22 pm

I am looking at the various GBSA options available for use with OpenMM(6.2), with the Amber forcefield parameters, and I am left a little confused.

I have been trying to use the python wrappers, and here is what I have discovered so far:

1. If I start with a pdb, then I can create a forcefield object from the xml files and the topology from the pdb. I usually use the amber99sb.xml and the amber99_obc.xml to create the forcefield. Using the forcefield object, I then create a system object using the createSystem function in forcefield.py. The function definition is as follows:
"
def createSystem(self, topology, nonbondedMethod=NoCutoff, nonbondedCutoff=1.0*unit.nanometer,
constraints=None, rigidWater=True, removeCMMotion=True, hydrogenMass=None, **args)
"
The function seems to eventually create a GBSAOBCForce object from the C++ API.

2. Instead of a pdb, I can also start with Amber parameter files. In this case, I use the Amber99SB forcefield to create a prmtop file using tleap. Using the prmtop, I can create an AmberPrmtopFile object. Now, to use GBSA, I have to create a system object using the createSystem function in amberprmtopfile.py. The function definition is as follows:
"
def createSystem(self, nonbondedMethod=ff.NoCutoff, nonbondedCutoff=1.0*unit.nanometer,
constraints=None, rigidWater=True, implicitSolvent=None,
implicitSolventSaltConc=0.0*(unit.moles/unit.liter),
implicitSolventKappa=None, temperature=298.15*unit.kelvin,
soluteDielectric=1.0, solventDielectric=78.5,
removeCMMotion=True, hydrogenMass=None, ewaldErrorTolerance=0.0005):
"
This function gives me the option to select the type of implicit solvent I want to use - with different types corresponding to different Amber igb parameters. The function seems to eventually create a CustomGBForce object from the C++ API.

Options 1) and 2) seem to do different things, and I am not sure which one I should be using. Do they produce different results? Is there a difference in how efficient these methods are?

User avatar
Peter Eastman
Posts: 2546
Joined: Thu Aug 09, 2007 1:25 pm

Re: GBSA using the python wrapper

Post by Peter Eastman » Sun Jan 11, 2015 1:21 pm

If you specify implicitSolvent=OBC2 and implicitSolventSaltConc=0, AmberPrmtopFile will also create a GBSAOBCForce. The amber99_obc.xml file specifies one particular implicit solvent model. AmberPrmtopFile also supports that same model, but it also supports lots of others. All of them (including OBC) can be implemented with a CustomGBForce, but when possible it uses GBSAOBCForce instead since that's slightly faster (typically around 10%).

If you're not sure what implicit solvent model you want to use, OBC2 is probably a pretty good choice. That's why we chose it as the one to include XML files for. But implicit solvent models are an active field of research, so that advice could change in the future.

Peter

User avatar
Saugat Kandel
Posts: 7
Joined: Wed Nov 05, 2014 4:50 pm

Re: GBSA using the python wrapper

Post by Saugat Kandel » Mon Jan 12, 2015 2:38 pm

That makes sense. Thanks!

User avatar
martin spichty
Posts: 10
Joined: Thu Jul 23, 2009 12:36 am

Re: GBSA using the python wrapper

Post by martin spichty » Tue Mar 31, 2015 7:55 am

Hi, Peter,

If I understand your post correctly, using amber99_obc.xml (with forcefield object) and the argument implicitSolvent=OBC2 (with AmberPrmtopFile) should give the same solvation model.

In the User Guid documentation of OpenMM 6.2, it says, however, that *_obc.xml uses specialized GBSA-Parameters from Tinker. So, does implicitSolvent=OBC2 (with AmberPrmtopFile) also use these Tinker-Parameters?

Thanks in advance!
Best,
Martin

User avatar
Peter Eastman
Posts: 2546
Joined: Thu Aug 09, 2007 1:25 pm

Re: GBSA using the python wrapper

Post by Peter Eastman » Tue Mar 31, 2015 9:17 am

Hi Martin,

If you load from a prmtop file, it uses whatever parameters are stored in the file. So those will probably be different from the ones in amber99_obc.xml. It's still using the same solvation model (OBC2), but with slightly different values for the atomic radii.

Peter

User avatar
martin spichty
Posts: 10
Joined: Thu Jul 23, 2009 12:36 am

Re: GBSA using the python wrapper

Post by martin spichty » Tue Mar 31, 2015 9:57 am

Hi, Peter,
OK, this is clear now!
Thanks for the speedy reply,
Martin

POST REPLY