Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
tsoc
openmm
Commits
7abba925
"platforms/cuda2/src/CudaParameterSet.cpp" did not exist on "72d6b6a90dac6f459516c22f4551ca6991d845b3"
Commit
7abba925
authored
Jul 03, 2025
by
Evan Pretti
Browse files
Add check for consistent force field/solvent model version
parent
166c5963
Changes
19
Show whitespace changes
Inline
Side-by-side
Showing
19 changed files
with
167 additions
and
3 deletions
+167
-3
wrappers/python/openmm/app/data/charmm36.xml
wrappers/python/openmm/app/data/charmm36.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/spce.xml
wrappers/python/openmm/app/data/charmm36/spce.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/tip3p-pme-b.xml
wrappers/python/openmm/app/data/charmm36/tip3p-pme-b.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/tip3p-pme-f.xml
wrappers/python/openmm/app/data/charmm36/tip3p-pme-f.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/tip4p2005.xml
wrappers/python/openmm/app/data/charmm36/tip4p2005.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/tip4pew.xml
wrappers/python/openmm/app/data/charmm36/tip4pew.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/tip5p.xml
wrappers/python/openmm/app/data/charmm36/tip5p.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/tip5pew.xml
wrappers/python/openmm/app/data/charmm36/tip5pew.xml
+8
-0
wrappers/python/openmm/app/data/charmm36/water.xml
wrappers/python/openmm/app/data/charmm36/water.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024.xml
wrappers/python/openmm/app/data/charmm36_2024.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/spce.xml
wrappers/python/openmm/app/data/charmm36_2024/spce.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/tip3p-pme-b.xml
...pers/python/openmm/app/data/charmm36_2024/tip3p-pme-b.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/tip3p-pme-f.xml
...pers/python/openmm/app/data/charmm36_2024/tip3p-pme-f.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/tip4p2005.xml
wrappers/python/openmm/app/data/charmm36_2024/tip4p2005.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/tip4pew.xml
wrappers/python/openmm/app/data/charmm36_2024/tip4pew.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/tip5p.xml
wrappers/python/openmm/app/data/charmm36_2024/tip5p.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/tip5pew.xml
wrappers/python/openmm/app/data/charmm36_2024/tip5pew.xml
+8
-0
wrappers/python/openmm/app/data/charmm36_2024/water.xml
wrappers/python/openmm/app/data/charmm36_2024/water.xml
+8
-0
wrappers/python/tests/TestForceField.py
wrappers/python/tests/TestForceField.py
+23
-3
No files found.
wrappers/python/openmm/app/data/charmm36.xml
View file @
7abba925
...
...
@@ -103763,4 +103763,12 @@
<NBFixPair epsilon="0.8631592000000001" sigma="0.25134925534893393" type1="MG" type2="SO"/>
<NBFixPair epsilon="0.8414024" sigma="0.25219560913116723" type1="MG" type2="SS1"/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/spce.xml
View file @
7abba925
...
...
@@ -121,4 +121,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/tip3p-pme-b.xml
View file @
7abba925
...
...
@@ -121,4 +121,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/tip3p-pme-f.xml
View file @
7abba925
...
...
@@ -121,4 +121,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/tip4p2005.xml
View file @
7abba925
...
...
@@ -127,4 +127,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/tip4pew.xml
View file @
7abba925
...
...
@@ -127,4 +127,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/tip5p.xml
View file @
7abba925
...
...
@@ -129,4 +129,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/tip5pew.xml
View file @
7abba925
...
...
@@ -129,4 +129,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OC2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
type1=
"OG2D2"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36/water.xml
View file @
7abba925
...
...
@@ -127,4 +127,12 @@
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.2877602859593296"
type1=
"OG2D2"
type2=
"SOD"
/>
<NBFixPair
epsilon=
"0.31388368000000005"
sigma=
"0.28152399493234725"
type1=
"OG2P1"
type2=
"SOD"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
wrappers/python/openmm/app/data/charmm36_2024.xml
View file @
7abba925
...
...
@@ -259418,4 +259418,12 @@ if harmonic_impropers:
harmonic_force.addTorsion(*improper)
sys.addForce(harmonic_force)</Script>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/spce.xml
View file @
7abba925
...
...
@@ -449,4 +449,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/tip3p-pme-b.xml
View file @
7abba925
...
...
@@ -449,4 +449,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/tip3p-pme-f.xml
View file @
7abba925
...
...
@@ -449,4 +449,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/tip4p2005.xml
View file @
7abba925
...
...
@@ -455,4 +455,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/tip4pew.xml
View file @
7abba925
...
...
@@ -455,4 +455,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/tip5p.xml
View file @
7abba925
...
...
@@ -458,4 +458,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/tip5pew.xml
View file @
7abba925
...
...
@@ -458,4 +458,12 @@
<NBFixPair
class1=
"OC2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
<NBFixPair
class1=
"OG2D2"
class2=
"SOD"
epsilon=
"0.31388368000000005"
sigma=
"0.28419669108676826"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/openmm/app/data/charmm36_2024/water.xml
View file @
7abba925
...
...
@@ -491,4 +491,12 @@
<NBFixPair
class1=
"CAL"
class2=
"OC2D2"
epsilon=
"0.50208"
sigma=
"0.28793846570295767"
/>
<NBFixPair
class1=
"CAL"
class2=
"OG2D2"
epsilon=
"0.50208"
sigma=
"0.28793846570295767"
/>
</LennardJonesForce>
<InitializationScript>
EXPECTED_VERSION = "charmm36_2024"
if hasattr(self, "_charmm_ff_version"):
if self._charmm_ff_version != EXPECTED_VERSION:
raise RuntimeError(f"CHARMM force field versions ({self._charmm_ff_version} and {EXPECTED_VERSION}) incompatible")
else:
self._charmm_ff_version = EXPECTED_VERSION
</InitializationScript>
</ForceField>
\ No newline at end of file
wrappers/python/tests/TestForceField.py
View file @
7abba925
...
...
@@ -1391,6 +1391,9 @@ END"""))
"""Tests that the CHARMM force fields are capable of parameterizing systems."""
charmm_models
=
(
"charmm36"
,
"charmm36_2024"
)
water_models_3
=
(
"water"
,
"spce"
,
"tip3p-pme-b"
,
"tip3p-pme-f"
)
water_models_4
=
(
"tip4p2005"
,
"tip4pew"
)
water_models_5
=
(
"tip5p"
,
"tip5pew"
)
# Checks that the numbers of various types of terms in a system matches expected counts.
def
check_system
(
system
,
particle_count
,
site_count
,
constraint_count
,
bond_count
,
angle_count
,
cmap_count
,
exception_count
,
override_count
,
drude_count
,
screen_count
):
...
...
@@ -1420,13 +1423,30 @@ END"""))
pdb_peptide_4
=
PDBFile
(
"systems/test_charmm_peptide_4.pdb"
)
pdb_peptide_5
=
PDBFile
(
"systems/test_charmm_peptide_5.pdb"
)
for
charmm_model
in
charmm_models
:
for
water_model
in
(
"
water
"
,
"spce"
,
"tip3p-pme-b"
,
"tip3p-pme-f"
)
:
for
water_model
in
water
_models_3
:
check_system
(
ForceField
(
f
"
{
charmm_model
}
.xml"
,
f
"
{
charmm_model
}
/
{
water_model
}
.xml"
).
createSystem
(
pdb_peptide_3
.
topology
),
1136
,
0
,
984
,
234
,
249
,
8
,
1727
,
353
,
0
,
0
)
for
water_model
in
(
"tip4p2005"
,
"tip4pew"
)
:
for
water_model
in
water_models_4
:
check_system
(
ForceField
(
f
"
{
charmm_model
}
.xml"
,
f
"
{
charmm_model
}
/
{
water_model
}
.xml"
).
createSystem
(
pdb_peptide_4
.
topology
),
1464
,
328
,
984
,
234
,
249
,
8
,
2711
,
353
,
0
,
0
)
for
water_model
in
(
"tip5p"
,
"tip5pew"
)
:
for
water_model
in
water_models_5
:
check_system
(
ForceField
(
f
"
{
charmm_model
}
.xml"
,
f
"
{
charmm_model
}
/
{
water_model
}
.xml"
).
createSystem
(
pdb_peptide_5
.
topology
),
1792
,
656
,
984
,
234
,
249
,
8
,
4023
,
353
,
0
,
0
)
def
test_CharmmVersionMismatchCheck
(
self
):
"""
Tests that CHARMM force fields cannot be loaded with the wrong water model versions.
"""
charmm_models
=
(
"charmm36"
,
"charmm36_2024"
)
water_models
=
(
"water"
,
"spce"
,
"tip3p-pme-b"
,
"tip3p-pme-f"
,
"tip4p2005"
,
"tip4pew"
,
"tip5p"
,
"tip5pew"
)
for
base_charmm_model
in
charmm_models
:
for
water_charmm_model
in
charmm_models
:
if
base_charmm_model
!=
water_charmm_model
:
for
water_model
in
water_models
:
with
self
.
assertRaises
(
Exception
):
ForceField
(
f
"
{
base_charmm_model
}
.xml"
,
f
"
{
water_charmm_model
}
/
{
water_model
}
.xml"
)
with
self
.
assertRaises
(
Exception
):
ForceField
(
f
"
{
water_charmm_model
}
/
{
water_model
}
.xml"
,
f
"
{
base_charmm_model
}
.xml"
)
def
test_CharmmPolar
(
self
):
"""Test the CHARMM polarizable force field."""
pdb
=
PDBFile
(
'systems/ala_ala_ala_drude.pdb'
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment