Commit 708c4246 authored by Lee-Ping's avatar Lee-Ping
Browse files

Merge branch 'master' of github.com:SimTk/openmm

parents d284e2b8 ec90b4bb
...@@ -890,7 +890,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode ...@@ -890,7 +890,7 @@ def readAmberSystem(prmtop_filename=None, prmtop_loader=None, shake=None, gbmode
else: else:
raise Exception("Illegal value specified for implicit solvent model") raise Exception("Illegal value specified for implicit solvent model")
for iAtom in range(prmtop.getNumAtoms()): for iAtom in range(prmtop.getNumAtoms()):
if gbmodel == 'OBC2': if gbmodel == 'OBC2' and implicitSolventKappa == 0:
gb.addParticle(charges[iAtom], gb_parms[iAtom][0], gb_parms[iAtom][1]) gb.addParticle(charges[iAtom], gb_parms[iAtom][0], gb_parms[iAtom][1])
elif gbmodel == 'GBn2': elif gbmodel == 'GBn2':
gb.addParticle([charges[iAtom], gb_parms[iAtom][0], gb_parms[iAtom][1], gb.addParticle([charges[iAtom], gb_parms[iAtom][0], gb_parms[iAtom][1],
......
...@@ -6,9 +6,9 @@ Simbios, the NIH National Center for Physics-Based Simulation of ...@@ -6,9 +6,9 @@ Simbios, the NIH National Center for Physics-Based Simulation of
Biological Structures at Stanford, funded under the NIH Roadmap for Biological Structures at Stanford, funded under the NIH Roadmap for
Medical Research, grant U54 GM072970. See https://simtk.org. Medical Research, grant U54 GM072970. See https://simtk.org.
Portions copyright (c) 2012 University of Virginia and the Authors. Portions copyright (c) 2012-2014 University of Virginia and the Authors.
Authors: Christoph Klein, Michael R. Shirts Authors: Christoph Klein, Michael R. Shirts
Contributors: Jason M. Swails Contributors: Jason M. Swails, Peter Eastman
Permission is hereby granted, free of charge, to any person obtaining a Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"), copy of this software and associated documentation files (the "Software"),
...@@ -31,7 +31,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE. ...@@ -31,7 +31,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
from __future__ import division from __future__ import division
from simtk.openmm import CustomGBForce from simtk.openmm import CustomGBForce, Discrete1DFunction
d0=[2.26685,2.32548,2.38397,2.44235,2.50057,2.55867,2.61663,2.67444, d0=[2.26685,2.32548,2.38397,2.44235,2.50057,2.55867,2.61663,2.67444,
2.73212,2.78965,2.84705,2.9043,2.96141,3.0184,3.07524,3.13196, 2.73212,2.78965,2.84705,2.9043,2.96141,3.0184,3.07524,3.13196,
...@@ -331,8 +331,8 @@ def GBSAGBnForce(solventDielectric=78.5, soluteDielectric=1, SA=None, ...@@ -331,8 +331,8 @@ def GBSAGBnForce(solventDielectric=78.5, soluteDielectric=1, SA=None,
custom.addGlobalParameter("neckScale", 0.361825) custom.addGlobalParameter("neckScale", 0.361825)
custom.addGlobalParameter("neckCut", 0.68) custom.addGlobalParameter("neckCut", 0.68)
custom.addFunction("getd0", d0, 0, 440) custom.addTabulatedFunction("getd0", Discrete1DFunction(d0))
custom.addFunction("getm0", m0, 0, 440) custom.addTabulatedFunction("getm0", Discrete1DFunction(m0))
custom.addComputedValue("I", "Ivdw+neckScale*Ineck;" custom.addComputedValue("I", "Ivdw+neckScale*Ineck;"
"Ineck=step(radius1+radius2+neckCut-r)*getm0(index)/(1+100*(r-getd0(index))^2+0.3*1000000*(r-getd0(index))^6);" "Ineck=step(radius1+radius2+neckCut-r)*getm0(index)/(1+100*(r-getd0(index))^2+0.3*1000000*(r-getd0(index))^6);"
...@@ -380,8 +380,8 @@ def GBSAGBn2Force(solventDielectric=78.5, soluteDielectric=1, SA=None, ...@@ -380,8 +380,8 @@ def GBSAGBn2Force(solventDielectric=78.5, soluteDielectric=1, SA=None,
custom.addGlobalParameter("neckScale", 0.826836) custom.addGlobalParameter("neckScale", 0.826836)
custom.addGlobalParameter("neckCut", 0.68) custom.addGlobalParameter("neckCut", 0.68)
custom.addFunction("getd0", d0, 0, 440) custom.addTabulatedFunction("getd0", Discrete1DFunction(d0))
custom.addFunction("getm0", m0, 0, 440) custom.addTabulatedFunction("getm0", Discrete1DFunction(m0))
custom.addComputedValue("I", "Ivdw+neckScale*Ineck;" custom.addComputedValue("I", "Ivdw+neckScale*Ineck;"
"Ineck=step(radius1+radius2+neckCut-r)*getm0(index)/(1+100*(r-getd0(index))^2+0.3*1000000*(r-getd0(index))^6);" "Ineck=step(radius1+radius2+neckCut-r)*getm0(index)/(1+100*(r-getd0(index))^2+0.3*1000000*(r-getd0(index))^6);"
......
...@@ -116,6 +116,8 @@ class PDBFile(object): ...@@ -116,6 +116,8 @@ class PDBFile(object):
element = elem.lithium element = elem.lithium
elif upper.startswith('K'): elif upper.startswith('K'):
element = elem.potassium element = elem.potassium
elif upper.startswith('ZN'):
element = elem.zinc
elif( len( residue ) == 1 and upper.startswith('CA') ): elif( len( residue ) == 1 and upper.startswith('CA') ):
element = elem.calcium element = elem.calcium
else: else:
......
...@@ -136,6 +136,10 @@ NO_OUTPUT_ARGS = [('LocalEnergyMinimizer', 'minimize', 'context'), ...@@ -136,6 +136,10 @@ NO_OUTPUT_ARGS = [('LocalEnergyMinimizer', 'minimize', 'context'),
STEAL_OWNERSHIP = {("Platform", "registerPlatform") : [0], STEAL_OWNERSHIP = {("Platform", "registerPlatform") : [0],
("System", "addForce") : [0], ("System", "addForce") : [0],
("System", "setVirtualSite") : [1], ("System", "setVirtualSite") : [1],
("CustomNonbondedForce", "addTabulatedFunction") : [1],
("CustomGBForce", "addTabulatedFunction") : [1],
("CustomHbondForce", "addTabulatedFunction") : [1],
("CustomCompoundBondForce", "addTabulatedFunction") : [1],
} }
# This is a list of units to attach to return values and method args. # This is a list of units to attach to return values and method args.
...@@ -179,6 +183,7 @@ UNITS = { ...@@ -179,6 +183,7 @@ UNITS = {
("*", "getSolventDielectric") : (None, ()), ("*", "getSolventDielectric") : (None, ()),
("*", "getStepSize") : ("unit.picosecond", ()), ("*", "getStepSize") : ("unit.picosecond", ()),
("*", "getSystem") : (None, ()), ("*", "getSystem") : (None, ()),
("*", "getTabulatedFunction") : (None, ()),
("*", "getUseDispersionCorrection") : (None, ()), ("*", "getUseDispersionCorrection") : (None, ()),
("*", "getTemperature") : ("unit.kelvin", ()), ("*", "getTemperature") : ("unit.kelvin", ()),
("*", "getUseDispersionCorrection") : (None, ()), ("*", "getUseDispersionCorrection") : (None, ()),
......
...@@ -219,19 +219,21 @@ class State(_object): ...@@ -219,19 +219,21 @@ class State(_object):
# Strings can cause trouble # Strings can cause trouble
# as can any container that has infinite levels of containment # as can any container that has infinite levels of containment
def _is_string(x): def _is_string(x):
# step 1) String is always a container # step 1) String is always a container
# and its contents are themselves containers. # and its contents are themselves containers.
try: try:
first_item = iter(x).next() first_item = iter(x).next()
inner_item = iter(first_item).next() inner_item = iter(first_item).next()
if first_item == inner_item: if first_item == inner_item:
return True return True
else: else:
return False return False
except TypeError: except TypeError:
return False return False
except StopIteration: except StopIteration:
return False return False
except ValueError:
return False
def stripUnits(args): def stripUnits(args):
""" """
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment