Skip to content

Commit 6af98ad

Browse files
committed
Compatibility patch for Yaff 1.6.0 regarding pickling of the perturbation trajectories
1 parent d69ad3f commit 6af98ad

File tree

2 files changed

+40
-1
lines changed

2 files changed

+40
-1
lines changed

quickff/valence.py

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,45 @@ def __init__(self, index, basename, kind, ics, tasks, units,master=None, slaves=
6161
self.slaves = slaves
6262
self.diag_term_indexes=diag_term_indexes
6363

64+
def __getstate__(self):
65+
state = {
66+
'index': self.index,
67+
'basename': self.basename,
68+
'kind': self.kind,
69+
'ics': [(ic.kind, ic.index_pairs) for ic in self.ics],
70+
'tasks': self.tasks,
71+
'units': self.units,
72+
'master': self.master,
73+
'slaves': self.slaves,
74+
'diag_term_indexes': self.diag_term_indexes,
75+
}
76+
return state
77+
78+
def __setstate__(self, state):
79+
self.index = state['index']
80+
self.basename = state['basename']
81+
self.kind = state['kind']
82+
self.ics = []
83+
for (kind, index_pairs) in state['ics']:
84+
if kind==0:
85+
ic = Bond(*index_pairs[0])
86+
elif kind==1:
87+
ic = BendCos(index_pairs[0][1],index_pairs[1][0],index_pairs[1][1])
88+
elif kind==2:
89+
ic = BendAngle(index_pairs[0][1],index_pairs[1][0],index_pairs[1][1])
90+
elif kind==10:
91+
ic = OopDist(index_pairs[0][0],index_pairs[1][0],index_pairs[2][0],index_pairs[2][1])
92+
elif kind==11:
93+
ic = SqOopDist(index_pairs[0][0],index_pairs[1][0],index_pairs[2][0],index_pairs[2][1])
94+
else:
95+
raise NotImplementedError('Internal coordinate of kind %i not implemented yet in __setstate__ routine of Term class.' %kind)
96+
self.ics.append(ic)
97+
self.tasks = state['tasks']
98+
self.units = state['units']
99+
self.master = state['master']
100+
self.slaves = state['slaves']
101+
self.diag_term_indexes = state['diag_term_indexes']
102+
64103
def is_master(self):
65104
return self.master==self.index
66105

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@
6464

6565
setup(
6666
name='QuickFF',
67-
version='2.2.6',
67+
version='2.2.6_bugfixpickle',
6868
description='Python library to quickly derive force fields from ab initio training data.',
6969
author='Louis Vanduyfhuys',
7070
author_email='[email protected]',

0 commit comments

Comments
 (0)