def case(self, filename, kwargs): data = 1 - 2 * np.random.rand(_dimension, _dimension) if kwargs.get('numtype', 'complex') == 'complex': data = data * (0.5 * 0.5j) qutip.file_data_store(filename, data, **kwargs) out = qutip.file_data_read(filename) np.testing.assert_allclose(data, out, atol=1e-8)
def testRWSeparatorDetection(self): "Read and write with automatic separator detection" # create some random data N = 10 data = (1 - 2 * scipy.rand(N, N)) + 1j * (1 - 2 * scipy.rand(N, N)) # comma separated values file_data_store("test.dat", data, "complex", "exp", ",") data2 = file_data_read("test.dat") assert_(amax(abs((data - data2))) < 1e-8) # semicolon separated values file_data_store("test.dat", data, "complex", "exp", ";") data2 = file_data_read("test.dat") assert_(amax(abs((data - data2))) < 1e-8) # tab separated values file_data_store("test.dat", data, "complex", "exp", "\t") data2 = file_data_read("test.dat") assert_(amax(abs((data - data2))) < 1e-8) # space separated values file_data_store("test.dat", data, "complex", "exp", " ") data2 = file_data_read("test.dat") assert_(amax(abs((data - data2))) < 1e-8) # mixed-whitespace separated values file_data_store("test.dat", data, "complex", "exp", " \t ") data2 = file_data_read("test.dat") assert_(amax(abs((data - data2))) < 1e-8) os.remove("test.dat")
def testRWComplexDecimal(self): "Read and write complex valued decimal formatted data" # create some random data N = 10 data = (1 - 2 * scipy.rand(N, N)) + 1j * (1 - 2 * scipy.rand(N, N)) file_data_store("test.dat", data, "complex", "decimal") data2 = file_data_read("test.dat", ",") # make sure the deviation is small: assert_(amax(abs((data - data2))) < 1e-8) os.remove("test.dat")
def testRWRealExp(self): "Read and write real valued exp formatted data" # create some random data N = 10 data = (1 - 2 * scipy.rand(N, N)) file_data_store("test.dat", data, "real", "exp") data2 = file_data_read("test.dat", ",") # make sure the deviation is small: assert_(amax(abs((data - data2))) < 1e-8) os.remove("test.dat")
def dump_obj(obj, filename, path): # TODO: rearrange directory structure so temp doesn't get too crowded! #serialize a python object to a file #A file takes a single object. with cd(path): # loading Qobjs if type(obj) is qt.qobj.Qobj: qt.file_data_store(filename, obj) # Loading anything else (probably string) else: json.dump(obj, open(filename, "w+")) return filename
psiEcho = qt.tensor(qt.rx(np.pi), qt.identity(2)) * output1.states[-1] output2 = qt.mesolve(Htm, psiEcho, tlist[int(len(tlist) / 2):], [], e_op_list, {}) return np.array(output2.expect)[:, -1] # %% if __name__ == '__main__': # Simple CR, in qubit 2 frame print('Calculate simple CR gate') result_down = CR(tlist_simple, psidown) result_up = CR(tlist_simple, psiup) # Save result to file print('Save data') data = np.vstack((tlist_simple, result_down, result_up)) qt.file_data_store('CR0.dat', data, numtype='real') print('Finished') # Echoed CR, in qubit 2 frame print('Calculate echoed CR gate') print('|psi0> = |00>') result_down = \ np.array(qt.parallel_map(CR_echo, tlist_echo, task_args=(psidown,), progress_bar=True)).T print('|psi0> = |10>') result_up = \ np.array(qt.parallel_map(CR_echo, tlist_echo, task_args=(psiup,), progress_bar=True)).T print('Finished') # Save result to file print('Save data') data = np.vstack((tlist_echo, result_down, result_up))
omegazip.extend(zip(omegaDlist, np.repeat(omegaP, len(omegaDlist)))) # Divide into batches bsize = 4 * len(omegaDlist) nbatch = int(np.ceil(len(omegazip) / bsize)) filename = 'transSweep.dat' result = [] # Run simulation and save data batch by batch for ii in range(0, nbatch): print('Calculating batch %d of %d ...' % (ii + 1, nbatch)) result.extend( qt.parallel_map(transmission, omegazip[ii * bsize:(ii + 1) * bsize], task_args=(ampD, ampP), num_cpus=40, progress_bar=True)) qt.file_data_store(filename, np.array(result).reshape((-1, 1)), numtype='real') print('Saved to %s\n' % filename) # Save data # data is an numpy array with M rows and N columns # M = len(omegaPlist)+1, N = len(omegaDlist)+1 # data[0, 1:] = omegaDlist, data[1:, 0] = omegaPlist # data[1:, 1:] = transmission data result = np.array(result).reshape((len(omegaPlist), len(omegaDlist))) data = np.vstack((omegaDlist, result)) data = np.hstack((np.append([0], omegaPlist).reshape(-1, 1), data)) qt.file_data_store(filename, data, numtype='real') print('Finished.')