def test_from_qsd_data(traj1, datadir): X1_file = join(datadir, 'traj1', 'X1.out') X2_file = join(datadir, 'traj1', 'X2.out') traj2 = TrajectoryData.from_qsd_data( OrderedDict([('X2', X2_file), ('X1', X1_file)]), TRAJ1_SEED) # traj1 and traj2 are the same except that the order of the operators is # reversed => files are read in a differnt order assert traj1.ID == traj2.ID traj = traj1 md5sum = lambda f: hashlib.md5(open(f,'rb').read()).hexdigest() md5 = "".join(sorted([md5sum(X1_file), md5sum(X2_file)])) assert traj.ID == str(uuid.uuid3(TrajectoryData._uuid_namespace, md5)) assert traj.dt == 0.1 assert traj.nt == 51 assert traj.shape == (51, 9) assert len(traj.record) == 1 assert list(traj.operators) == ['X1', 'X2'] for (id, (seed, n_traj, op_list)) in traj.record.items(): assert seed == TRAJ1_SEED assert n_traj == 1 assert op_list == ['X1', 'X2'] assert traj.record_seeds == set([TRAJ1_SEED, ]) assert traj.record_IDs == set([traj.ID, ]) assert list(traj.table.keys()) == ['Re[<X1>]', 'Im[<X1>]', 'Re[var(X1)]', 'Im[var(X1)]', 'Re[<X2>]', 'Im[<X2>]', 'Re[var(X2)]', 'Im[var(X2)]'] fname = join(datadir, 'traj1', 'X1.out') (tgrid, re_exp, im_exp, re_var, im_var) \ = np.genfromtxt(fname, dtype=np.float64, skip_header=1, unpack=True) assert np.max(np.abs(re_exp - traj.table['Re[<X1>]'])) < 1.0e-15 assert np.max(np.abs(im_exp - traj.table['Im[<X1>]'])) < 1.0e-15 assert np.max(np.abs(re_var - traj.table['Re[var(X1)]'])) < 1.0e-15 assert np.max(np.abs(im_var - traj.table['Im[var(X1)]'])) < 1.0e-15
def proto_fixture(datadir): operators = OrderedDict() datafiles = sorted(glob(os.path.join(datadir, folder, '*.out'))) assert len(datafiles) > 0, "No files *.out in %s" % folder for file in datafiles: op_name = os.path.splitext(os.path.split(file)[1])[0] operators[op_name] = file return TrajectoryData.from_qsd_data(operators, seed=seed)
def test_from_qsd_data(traj1, datadir): X1_file = join(datadir, 'traj1', 'X1.out') X2_file = join(datadir, 'traj1', 'X2.out') traj2 = TrajectoryData.from_qsd_data( OrderedDict([('X2', X2_file), ('X1', X1_file)]), TRAJ1_SEED) # traj1 and traj2 are the same except that the order of the operators is # reversed => files are read in a differnt order assert traj1.ID == traj2.ID traj = traj1 md5sum = lambda f: hashlib.md5(open(f, 'rb').read()).hexdigest() md5 = "".join(sorted([md5sum(X1_file), md5sum(X2_file)])) assert traj.ID == str(uuid.uuid3(TrajectoryData._uuid_namespace, md5)) assert traj.dt == 0.1 assert traj.nt == 51 assert traj.shape == (51, 9) assert len(traj.record) == 1 assert list(traj.operators) == ['X1', 'X2'] for (id, (seed, n_traj, op_list)) in traj.record.items(): assert seed == TRAJ1_SEED assert n_traj == 1 assert op_list == ['X1', 'X2'] assert traj.record_seeds == set([ TRAJ1_SEED, ]) assert traj.record_IDs == set([ traj.ID, ]) assert list(traj.table.keys()) == [ 'Re[<X1>]', 'Im[<X1>]', 'Re[var(X1)]', 'Im[var(X1)]', 'Re[<X2>]', 'Im[<X2>]', 'Re[var(X2)]', 'Im[var(X2)]' ] fname = join(datadir, 'traj1', 'X1.out') (tgrid, re_exp, im_exp, re_var, im_var) \ = np.genfromtxt(fname, dtype=np.float64, skip_header=1, unpack=True) assert np.max(np.abs(re_exp - traj.table['Re[<X1>]'])) < 1.0e-15 assert np.max(np.abs(im_exp - traj.table['Im[<X1>]'])) < 1.0e-15 assert np.max(np.abs(re_var - traj.table['Re[var(X1)]'])) < 1.0e-15 assert np.max(np.abs(im_var - traj.table['Im[var(X1)]'])) < 1.0e-15