Tracked value pickling fix

This commit is contained in:
Benoît Sierro
2023-01-27 09:17:39 +01:00
parent 1baef68656
commit 1db311db86

View File

@@ -23,13 +23,19 @@ except ModuleNotFoundError:
class TrackedValues(defaultdict): class TrackedValues(defaultdict):
def __init__(self): def __init__(self, data=None):
super().__init__(list) super().__init__(list)
def append(self, d: dict[str, Any]): def append(self, d: dict[str, Any]):
for k, v in d.items(): for k, v in d.items():
self[k].append(v) self[k].append(v)
def __getstate__(self):
return self
def __setstate__(self, state):
self.update(state)
class RK4IP: class RK4IP:
params: Parameters params: Parameters
@@ -186,7 +192,7 @@ class RK4IP:
new_tracked_values = integrator.all_values() new_tracked_values = integrator.all_values()
self.logger.debug(f"tracked values at z={state.z} : {new_tracked_values}") self.logger.debug(f"tracked values at z={state.z} : {new_tracked_values}")
self.tracked_values.append(new_tracked_values) self.tracked_values.append(new_tracked_values | dict(z=state.z))
# Whether the current spectrum has to be stored depends on previous step # Whether the current spectrum has to be stored depends on previous step
if store: if store: