From 12a6fe6a99be594e0f2c0766dc38a29d8e5eb3cc Mon Sep 17 00:00:00 2001 From: Kristian Fossum Date: Sat, 14 Feb 2026 09:20:02 +0100 Subject: [PATCH 1/2] Add deepcopy in list build. Closes #127 --- ensemble/ensemble.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ensemble/ensemble.py b/ensemble/ensemble.py index 9d8b5c5..b862272 100644 --- a/ensemble/ensemble.py +++ b/ensemble/ensemble.py @@ -260,7 +260,7 @@ def calc_prediction(self, enX=None, save_prediction=None): en_pred = [] pbar = tqdm(enumerate(enX), total=self.ne, **progbar_settings) for member_index, state in pbar: - en_pred.append(self.sim.run_fwd_sim(state, member_index)) + en_pred.append(deepcopy(self.sim.run_fwd_sim(state, member_index))) # Parallelization on HPC using SLURM elif self.sim.input_dict.get('hpc', False): # Run prediction in parallel on hpc From 9a658d6a6772039f080b68e9f0aca2561bbe5fcd Mon Sep 17 00:00:00 2001 From: Kristian Fossum Date: Sat, 14 Feb 2026 09:24:39 +0100 Subject: [PATCH 2/2] Store dictionaries after assimilation.Closes #129 --- pipt/loop/assimilation.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pipt/loop/assimilation.py b/pipt/loop/assimilation.py index 9266a45..8326ba9 100644 --- a/pipt/loop/assimilation.py +++ b/pipt/loop/assimilation.py @@ -217,11 +217,11 @@ def run(self): # always store posterior forcast and state, unless specifically told not to if 'nosave' not in self.ensemble.keys_da: try: # first try to save as npz file - np.savez(f'{self.save_folder}/posterior_state_estimate.npz', **self.ensemble.enX) + np.savez(f'{self.save_folder}/posterior_state_estimate.npz', **entools.matrix_to_dict(self.ensemble.enX, self.ensemble.idX)) np.savez(f'{self.save_folder}/posterior_forecast.npz', **{'pred_data': self.ensemble.pred_data}) except: # If this fails, store as pickle with open(f'{self.save_folder}/posterior_state_estimate.p', 'wb') as file: - pickle.dump(self.ensemble.enX, file) + pickle.dump(entools.matrix_to_dict(self.ensemble.enX, self.ensemble.idX), file) with open(f'{self.save_folder}/posterior_forecast.p', 'wb') as file: pickle.dump(self.ensemble.pred_data, file)