예제 #1
0
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
예제 #2
0
 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)
예제 #3
0
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