GBSA using the python wrapper
Posted: 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?
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?