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
7a22ce95
Commit
7a22ce95
authored
Oct 26, 2015
by
John Chodera (MSKCC)
Browse files
Rework and streamline deepcopy and pickle tests
parent
2b66a71b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
26 additions
and
24 deletions
+26
-24
wrappers/python/tests/TestPickle.py
wrappers/python/tests/TestPickle.py
+26
-24
No files found.
wrappers/python/tests/TestPickle.py
View file @
7a22ce95
...
...
@@ -27,44 +27,46 @@ class TestPickle(unittest.TestCase):
self
.
pdb2
=
PDBFile
(
'systems/alanine-dipeptide-implicit.pdb'
)
self
.
forcefield2
=
ForceField
(
'amber99sb.xml'
,
'amber99_obc.xml'
)
def
test_force_deepcopy
(
self
):
"""Test that deep copying of forces works correctly."""
force
=
NonbondedForce
()
force_copy
=
copy
.
deepcopy
(
force
)
def
check_copy
(
self
,
object
,
object_copy
):
"""Check that an object's copy is an accurate replica."""
# Check class name is same.
self
.
assertEqual
(
force
.
__class__
.
__name__
,
force
_copy
.
__class__
.
__name__
)
# Check
Force object
contents are the same.
self
.
assertEqual
(
XmlSerializer
.
serialize
(
force
),
XmlSerializer
.
serialize
(
force
_copy
))
self
.
assertEqual
(
object
.
__class__
.
__name__
,
object
_copy
.
__class__
.
__name__
)
# Check
serialized
contents are the same.
self
.
assertEqual
(
XmlSerializer
.
serialize
(
object
),
XmlSerializer
.
serialize
(
object
_copy
))
def
test_deepcopy
(
self
):
"""Test that serialization/deserialization works (via deepcopy)."""
# Create system, integrator, and state.
system
=
self
.
forcefield1
.
createSystem
(
self
.
pdb1
.
topology
)
integrator
=
VerletIntegrator
(
2
*
femtosecond
)
context
=
Context
(
system
,
integrator
)
context
.
setPositions
(
self
.
pdb1
.
positions
)
state
=
context
.
getState
(
getPositions
=
True
,
getForces
=
True
,
getEnergy
=
True
)
system2
=
copy
.
deepcopy
(
system
)
integrator2
=
copy
.
deepcopy
(
integrator
)
state2
=
copy
.
deepcopy
(
state
)
#
# Test deepcopy
#
str_state
=
pickle
.
dumps
(
state
)
str_integrator
=
pickle
.
dumps
(
integrator
)
state3
=
pickle
.
loads
(
str_state
)
context
.
setState
(
state3
)
self
.
check_copy
(
system
,
copy
.
deepcopy
(
system
))
self
.
check_copy
(
integrator
,
copy
.
deepcopy
(
integrator
))
self
.
check_copy
(
state
,
copy
.
deepcopy
(
state
))
for
force_index
in
range
(
system
.
getNumForces
()):
force
=
system
.
getForce
(
force_index
)
force_copy
=
copy
.
deepcopy
(
force
)
self
.
check_copy
(
force
,
force_copy
)
del
context
,
integrator
#
# Test pickle
#
# Check deep copy of each force.
forces
=
[
system
.
getForce
(
index
)
for
index
in
range
(
system
.
getNumForces
())
]
for
force
in
forces
:
force_copy
=
copy
.
deepcopy
(
force
)
# Check class name is same.
self
.
assertEqual
(
force
.
__class__
.
__name__
,
force_copy
.
__class__
.
__name__
)
# Check Force object contents are the same.
self
.
assertEqual
(
XmlSerializer
.
serialize
(
force
),
XmlSerializer
.
serialize
(
force_copy
))
self
.
check_copy
(
system
,
pickle
.
loads
(
pickle
.
dumps
(
system
)))
self
.
check_copy
(
integrator
,
pickle
.
loads
(
pickle
.
dumps
(
integrator
)))
self
.
check_copy
(
state
,
pickle
.
loads
(
pickle
.
dumps
(
state
)))
for
force_index
in
range
(
system
.
getNumForces
()):
force
=
system
.
getForce
(
force_index
)
force_copy
=
pickle
.
loads
(
pickle
.
dumps
(
force
))
self
.
check_copy
(
force
,
force_copy
)
if
__name__
==
'__main__'
:
unittest
.
main
()
...
...
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