Source code for IOM_plugin_parameters
"""The WaveBlocks Project
IOM plugin providing functions for handling simulation parameter data.
@author: R. Bourquin
@copyright: Copyright (C) 2011 R. Bourquin
@license: Modified BSD License
"""
import pickle
import ParameterProvider as ParameterProvider
[docs]def add_parameters(self, blockid="global"):
r"""
Add storage for the simulation parameters.
"""
# Store the simulation parameters
# We are only interested in the attributes of this data set
# as they are used to store the simulation parameters.
paset = self._srf[self._prefixb+str(blockid)].create_dataset("simulation_parameters", (1,1))
[docs]def delete_parameters(self, blockid="global"):
r"""
Remove the stored simulation parameters.
"""
try:
del self._srf[self._prefixb+str(blockid)+"/simulation_parameters"]
except KeyError:
pass
[docs]def has_parameters(self, blockid="global"):
r"""
Ask if the specified data block has the desired data tensor.
"""
return "simulation_parameters" in self._srf[self._prefixb+str(blockid)].keys()
[docs]def save_parameters(self, parameters, blockid="global"):
r"""
Save the norm of wavefunctions or wavepackets.
"""
paset = self._srf["/"+self._prefixb+str(blockid)+"/simulation_parameters"]
for param, value in parameters:
# Store all the values as pickled strings because hdf can
# only store strings or ndarrays as attributes.
paset.attrs[param] = pickle.dumps(value)
[docs]def load_parameters(self, blockid="global"):
r"""
Load the simulation parameters.
"""
p = self._srf["/"+self._prefixb+str(blockid)+"/simulation_parameters"].attrs
PP = ParameterProvider.ParameterProvider()
for key, value in p.iteritems():
PP[key] = pickle.loads(value)
# Compute some values on top of the given input parameters
PP.compute_parameters()
return PP
def update_parameters(self, parameters, blockid="global"):
params = self.load_parameters(blockid=blockid)
self.delete_parameters(blockid=blockid)
params.update_parameters(parameters)
self.add_parameters(blockid=blockid)
self.save_parameters(params, blockid=blockid)