Skip to content

Commit 67d2e90

Browse files
authored
Merge pull request #156 from talagayev/OPC_implementation
Implementation of `OPC` and `OPC3` water models
2 parents 7343050 + e958635 commit 67d2e90

File tree

4 files changed

+29
-0
lines changed

4 files changed

+29
-0
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ The rules for this file:
2121
talagayev
2222

2323
### Added
24+
- Implementation of `OPC` and `OPC3` water models (2025-06-17, PR #156)
2425

2526
### Fixed
2627
- Update of `OpenFF` forcefield version and fixed `GAFF` type error (2025-06-17, PR #155)

openmmdl/openmmdl_setup/templates/configurePdbFile.html

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
["SPC/E", "SPC/E", false],
7979
["TIP4P-Ew", "TIP4P-Ew", false],
8080
["TIP4P-FB", "TIP4P-FB", false],
81+
["OPC3", "OPC3", false],
82+
["OPC", "OPC", false],
8183
]
8284

8385
var charmm36WaterModels = [
@@ -97,6 +99,8 @@
9799
["SPC/E", "SPC/E", false],
98100
["TIP4P-Ew", "TIP4P-Ew", false],
99101
["TIP5P", "TIP5P", false],
102+
["OPC3", "OPC3", false],
103+
["OPC", "OPC", false],
100104
]
101105

102106
var amoebaWaterModels = [

openmmdl/openmmdl_simulation/scripts/forcefield_water.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ def water_forcefield_selection(water, forcefield_selection):
4747
"TIP4P-Ew": "tip4pew.xml",
4848
"TIP4P-FB": "tip4pfb.xml",
4949
"TIP5P": "tip5p.xml",
50+
"OPC": "opc.xml",
51+
"OPC3": "opc3.xml",
5052
}
5153

5254
if forcefield_selection in old_amber:
@@ -59,6 +61,8 @@ def water_forcefield_selection(water, forcefield_selection):
5961
"SPC/E": "amber14/spce.xml",
6062
"TIP4P-Ew": "amber14/tip4pew.xml",
6163
"TIP4P-FB": "amber14/tip4pfb.xml",
64+
"OPC": "amber14/opc.xml",
65+
"OPC3": "amber14/opc3.xml",
6266
},
6367
"charmm36.xml": {
6468
"CHARMM default": "charmm36/water.xml",
@@ -95,6 +99,8 @@ def water_model_selection(water, forcefield_selection):
9599
"SPC/E": "spce",
96100
"TIP4P-Ew": "tip4pew",
97101
"TIP4P-FB": "tip4pfb",
102+
"OPC": "opc",
103+
"OPC3": "opc3",
98104
}
99105

100106
if forcefield_selection in old_amber:

openmmdl/tests/openmmdl_simulation/forcefield_water_test.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ def test_water_forcefield_selection():
5050
water_forcefield_selection("TIP4P-FB", "amber14-all.xml")
5151
== "amber14/tip4pfb.xml"
5252
)
53+
assert (
54+
water_forcefield_selection("OPC", "amber14-all.xml")
55+
== "amber14/opc.xml"
56+
)
57+
assert (
58+
water_forcefield_selection("OPC3", "amber14-all.xml")
59+
== "amber14/opc3.xml"
60+
)
5361
assert water_forcefield_selection("TIP5P", "amber14-all.xml") is None
5462
assert water_forcefield_selection("NonexistentWater", "amber14-all.xml") is None
5563
assert water_forcefield_selection("TIP3P", "NonexistentFF") is None
@@ -104,6 +112,16 @@ def test_water_model_selection():
104112
assert water_model_selection("TIP4P-FB", "amber03.xml") == "tip4pfb"
105113
assert water_model_selection("TIP4P-FB", "amber10.xml") == "tip4pfb"
106114

115+
assert water_model_selection("OPC", "amber99sb.xml") == "opc"
116+
assert water_model_selection("OPC", "amber99sbildn.xml") == "opc"
117+
assert water_model_selection("OPC", "amber03.xml") == "opc"
118+
assert water_model_selection("OPC", "amber10.xml") == "opc"
119+
120+
assert water_model_selection("OPC3", "amber99sb.xml") == "opc3"
121+
assert water_model_selection("OPC3", "amber99sbildn.xml") == "opc3"
122+
assert water_model_selection("OPC3", "amber03.xml") == "opc3"
123+
assert water_model_selection("OPC3", "amber10.xml") == "opc3"
124+
107125
assert water_model_selection("TIP5P", "amber99sb.xml") is None
108126
assert water_model_selection("TIP5P", "amber99sbildn.xml") is None
109127
assert water_model_selection("TIP5P", "amber03.xml") is None

0 commit comments

Comments
 (0)