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 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)