Data#
Data Objects#
Data objects are instances of the qclab.data.Data class and are used to store and manage the results of a simulation. They provide methods for collecting, processing, and saving data, as well as logging errors or warnings during a simulation.
In general, a Data object has the following attributes:
data_dict: a dictionary that stores the results of the simulation. Each key in the dictionary corresponds to a specific quantity that was collected during the simulation, and the value is an array containing the values of that quantity averaged over the trajectories.log: a string that stores the log of errors or warnings that occurred during the simulation.
Data objects provide several methods for managing and processing the data they contain, including:
add_data: adds data from an existing Data object to the current one.save: saves the Data object to a file.load: loads a Data object from a file (this adds to any existing data).
These methods are documented here:
- qclab.data.Data.add_data(self, new_data)#
Add data from
new_datato the output dictionaryself.data_dict.Args
- new_data: Data
A Data instance containing the new data to merge.
- qclab.data.Data.save(self, filename, disable_h5py=False)#
Save the data to disk with file name
filename.If h5py is available the data is stored as an HDF5 archive; otherwise each variable is saved using numpy.savez.
Args
- filenamestr
The file name to save the data to.
- disable_h5pybool, default: qclab.utils.DISABLE_H5PY
If True, h5py is not used even if available.
- qclab.data.Data.load(self, filename, disable_h5py=False)#
Load a Data object from
filename.Args
- filenamestr
The file name to load the data from.
- disable_h5pybool, default: qclab.utils.DISABLE_H5PY
If True, h5py is not used even if available.
Returns
- DataData
The loaded Data object.
Example#
Here is a simple example of running a simulation and plotting from the Data object returned by the driver:
import numpy as np
import matplotlib.pyplot as plt
from qclab import Simulation
from qclab.models import SpinBoson
from qclab.algorithms import MeanField
from qclab.dynamics import serial_driver
sim = Simulation()
sim.model = SpinBoson()
sim.algorithm = MeanField()
sim.initial_state["wf_db"] = np.array([1, 0], dtype=complex)
data = serial_driver(sim)
t = data.data_dict['t']
plt.plot(t, np.real(np.einsum('tii->ti',data.data_dict['dm_db'])))
plt.title('Diabatic populations')
plt.show()