コード例 #1
0
ファイル: test_qmca.py プロジェクト: PDoakORNL/qmcpack
def get_test_info():
    if len(test_info) == 0:
        import os

        tpath = testing.setup_unit_test_output_directory('qmca', 'test_qmca')

        exe = testing.executable_path('qmca')

        dirs = ['diamond_gamma', 'diamond_twist']

        for dir in dirs:
            qa_files_path = testing.unit_test_file_path(
                'qmcpack_analyzer', dir)
            command = 'rsync -a {} {}'.format(qa_files_path, tpath)
            out, err, rc = execute(command)
            assert (rc == 0)
            data_path = os.path.join(tpath, dir)
            assert (os.path.exists(data_path))
        #end for

        paths = dict(
            vmc='diamond_gamma/vmc',
            opt='diamond_gamma/opt',
            dmc='diamond_gamma/dmc',
            vmc_twist='diamond_twist/vmc',
            multi='diamond_gamma',
        )

        test_info['tpath'] = tpath
        test_info['exe'] = exe
        for name, path in paths.items():
            directories[name] = os.path.join(tpath, path)
コード例 #2
0
    def test_fit():
        import os

        tpath = testing.setup_unit_test_output_directory('qmc_fit', 'test_fit')

        exe = testing.executable_path('qmc-fit')

        qa_files_path = testing.unit_test_file_path('qmcpack_analyzer',
                                                    'diamond_gamma/dmc')
        command = 'rsync -a {} {}'.format(qa_files_path, tpath)
        out, err, rc = execute(command)
        assert (rc == 0)
        dmc_path = os.path.join(tpath, 'dmc')
        dmc_infile = os.path.join(dmc_path, 'dmc.in.xml')
        assert (os.path.exists(dmc_infile))

        command = "{} ts --noplot -e 10 -s 1 -t '0.02 0.01 0.005' {}/*scalar*".format(
            exe, dmc_path)

        out, err, rc = execute(command)

        out_ref = '''
            fit function  : linear
            fitted formula: (-10.5271 +/- 0.0021) + (-0.28 +/- 0.17)*t
            intercept     : -10.5271 +/- 0.0021  Ha
            '''

        def process_text(t):
            return t.replace('(', ' ( ').replace(')', ' ) ')

        #end def process_text

        out = process_text(out)
        out_ref = process_text(out_ref)

        assert (text_eq(out, out_ref, atol=1e-2, rtol=1e-2))
コード例 #3
0
ファイル: test_qdens.py プロジェクト: camelto2/qmcpack
    def test_density():
        import os

        tpath = testing.setup_unit_test_output_directory('qdens','test_density')

        exe = testing.executable_path('qdens')

        qa_files_path = testing.unit_test_file_path('qmcpack_analyzer','diamond_gamma/dmc')
        command = 'rsync -a {} {}'.format(qa_files_path,tpath)
        out,err,rc = execute(command)
        assert(rc==0)
        dmc_path = os.path.join(tpath,'dmc')
        dmc_infile = os.path.join(dmc_path,'dmc.in.xml')
        assert(os.path.exists(dmc_infile))

        files_bef = '''
    dmc.err     dmc.s000.scalar.dat  dmc.s001.stat.h5     dmc.s003.scalar.dat
    dmc.in.xml  dmc.s000.stat.h5     dmc.s002.scalar.dat  dmc.s003.stat.h5
    dmc.out     dmc.s001.scalar.dat  dmc.s002.stat.h5
        '''.split()

        assert(check_value_eq(set(os.listdir(dmc_path)),set(files_bef)))

        command = '{0} -v -e 4 -f xsf -i {1}/dmc.in.xml {1}/*stat.h5'.format(exe,dmc_path)

        out,err,rc = execute(command)

        files_aft = '''
            dmc.err                           dmc.s001.stat.h5
            dmc.in.xml                        dmc.s002.scalar.dat
            dmc.out                           dmc.s002.SpinDensity_d-err.xsf
            dmc.s000.scalar.dat               dmc.s002.SpinDensity_d+err.xsf
            dmc.s000.SpinDensity_d-err.xsf    dmc.s002.SpinDensity_d.xsf
            dmc.s000.SpinDensity_d+err.xsf    dmc.s002.SpinDensity_u-d-err.xsf
            dmc.s000.SpinDensity_d.xsf        dmc.s002.SpinDensity_u-d+err.xsf
            dmc.s000.SpinDensity_u-d-err.xsf  dmc.s002.SpinDensity_u+d-err.xsf
            dmc.s000.SpinDensity_u-d+err.xsf  dmc.s002.SpinDensity_u+d+err.xsf
            dmc.s000.SpinDensity_u+d-err.xsf  dmc.s002.SpinDensity_u-d.xsf
            dmc.s000.SpinDensity_u+d+err.xsf  dmc.s002.SpinDensity_u+d.xsf
            dmc.s000.SpinDensity_u-d.xsf      dmc.s002.SpinDensity_u-err.xsf
            dmc.s000.SpinDensity_u+d.xsf      dmc.s002.SpinDensity_u+err.xsf
            dmc.s000.SpinDensity_u-err.xsf    dmc.s002.SpinDensity_u.xsf
            dmc.s000.SpinDensity_u+err.xsf    dmc.s002.stat.h5
            dmc.s000.SpinDensity_u.xsf        dmc.s003.scalar.dat
            dmc.s000.stat.h5                  dmc.s003.SpinDensity_d-err.xsf
            dmc.s001.scalar.dat               dmc.s003.SpinDensity_d+err.xsf
            dmc.s001.SpinDensity_d-err.xsf    dmc.s003.SpinDensity_d.xsf
            dmc.s001.SpinDensity_d+err.xsf    dmc.s003.SpinDensity_u-d-err.xsf
            dmc.s001.SpinDensity_d.xsf        dmc.s003.SpinDensity_u-d+err.xsf
            dmc.s001.SpinDensity_u-d-err.xsf  dmc.s003.SpinDensity_u+d-err.xsf
            dmc.s001.SpinDensity_u-d+err.xsf  dmc.s003.SpinDensity_u+d+err.xsf
            dmc.s001.SpinDensity_u+d-err.xsf  dmc.s003.SpinDensity_u-d.xsf
            dmc.s001.SpinDensity_u+d+err.xsf  dmc.s003.SpinDensity_u+d.xsf
            dmc.s001.SpinDensity_u-d.xsf      dmc.s003.SpinDensity_u-err.xsf
            dmc.s001.SpinDensity_u+d.xsf      dmc.s003.SpinDensity_u+err.xsf
            dmc.s001.SpinDensity_u-err.xsf    dmc.s003.SpinDensity_u.xsf
            dmc.s001.SpinDensity_u+err.xsf    dmc.s003.stat.h5
            dmc.s001.SpinDensity_u.xsf
            '''.split()

        assert(check_value_eq(set(os.listdir(dmc_path)),set(files_aft),verbose=True))

        tot_file = os.path.join(dmc_path,'dmc.s003.SpinDensity_u+d.xsf')
        pol_file = os.path.join(dmc_path,'dmc.s003.SpinDensity_u-d.xsf')

        tot = open(tot_file,'r').read()
        pol = open(pol_file,'r').read()

        tot_ref = '''
             CRYSTAL
             PRIMVEC 
                 1.78500000   1.78500000   0.00000000
                -0.00000000   1.78500000   1.78500000
                 1.78500000  -0.00000000   1.78500000
             PRIMCOORD 
               2 1
                 6   0.00000000   0.00000000   0.00000000
                 6   0.89250000   0.89250000   0.89250000
             BEGIN_BLOCK_DATAGRID_3D
               density
               BEGIN_DATAGRID_3D_density
                 4 4 4
                 0.59500000   0.59500000   0.59500000
                 1.78500000   1.78500000   0.00000000
                -0.00000000   1.78500000   1.78500000
                 1.78500000  -0.00000000   1.78500000
                   0.73126076   0.62407496   0.51676366   0.73126076
                   0.62575089   0.19225114   0.18686389   0.62575089
                   0.51847569   0.18457799   0.42203355   0.51847569
                   0.73126076   0.62407496   0.51676366   0.73126076
                   0.62659840   0.19325900   0.18422995   0.62659840
                   0.19219866   0.04873728   0.13184395   0.19219866
                   0.18474638   0.13013188   0.10227670   0.18474638
                   0.62659840   0.19325900   0.18422995   0.62659840
                   0.51793019   0.18615766   0.41806405   0.51793019
                   0.18425005   0.13092538   0.10088238   0.18425005
                   0.41967003   0.10133434   0.14471118   0.41967003
                   0.51793019   0.18615766   0.41806405   0.51793019
                   0.73126076   0.62407496   0.51676366   0.73126076
                   0.62575089   0.19225114   0.18686389   0.62575089
                   0.51847569   0.18457799   0.42203355   0.51847569
                   0.73126076   0.62407496   0.51676366   0.73126076
               END_DATAGRID_3D_density
             END_BLOCK_DATAGRID_3D
            '''

        pol_ref = '''
             CRYSTAL
             PRIMVEC 
                 1.78500000   1.78500000   0.00000000
                -0.00000000   1.78500000   1.78500000
                 1.78500000  -0.00000000   1.78500000
             PRIMCOORD 
               2 1
                 6   0.00000000   0.00000000   0.00000000
                 6   0.89250000   0.89250000   0.89250000
             BEGIN_BLOCK_DATAGRID_3D
               density
               BEGIN_DATAGRID_3D_density
                 4 4 4
                 0.59500000   0.59500000   0.59500000
                 1.78500000   1.78500000   0.00000000
                -0.00000000   1.78500000   1.78500000
                 1.78500000  -0.00000000   1.78500000
                   0.00106753   0.00015792  -0.00122859   0.00106753
                  -0.00003402   0.00018762  -0.00051347  -0.00003402
                   0.00154254   0.00067654   0.00073434   0.00154254
                   0.00106753   0.00015792  -0.00122859   0.00106753
                   0.00263956   0.00079744  -0.00118289   0.00263956
                  -0.00039348  -0.00026396  -0.00069392  -0.00039348
                   0.00087929   0.00000719   0.00113934   0.00087929
                   0.00263956   0.00079744  -0.00118289   0.00263956
                  -0.00013655  -0.00041508  -0.00235212  -0.00013655
                   0.00003805  -0.00025962  -0.00133495   0.00003805
                   0.00040692   0.00051699  -0.00198263   0.00040692
                  -0.00013655  -0.00041508  -0.00235212  -0.00013655
                   0.00106753   0.00015792  -0.00122859   0.00106753
                  -0.00003402   0.00018762  -0.00051347  -0.00003402
                   0.00154254   0.00067654   0.00073434   0.00154254
                   0.00106753   0.00015792  -0.00122859   0.00106753
               END_DATAGRID_3D_density
             END_BLOCK_DATAGRID_3D
            '''

        assert(text_eq(tot,tot_ref,atol=1e-7))
        assert(text_eq(pol,pol_ref,atol=1e-7))
コード例 #4
0
ファイル: test_qdens_radial.py プロジェクト: camelto2/qmcpack
    def test_radial_density():
        import os

        tpath = testing.setup_unit_test_output_directory(
            'qdens_radial', 'test_radial_density')

        exe = testing.executable_path('qdens-radial')

        qr_vmc_files_path = testing.unit_test_file_path(
            'qdens_radial', 'diamond_twist/vmc')
        command = 'rsync -a {} {}'.format(qr_vmc_files_path, tpath)
        out, err, rc = execute(command)
        assert (rc == 0)
        vmc_path = os.path.join(tpath, 'vmc')
        vmc_infile = os.path.join(vmc_path, 'vmc.g000.twistnum_0.in.xml')
        assert (os.path.exists(vmc_infile))
        vmc_infile = os.path.join(vmc_path, 'vmc.g001.twistnum_1.in.xml')
        assert (os.path.exists(vmc_infile))
        vmc_infile = os.path.join(vmc_path, 'vmc.g002.twistnum_2.in.xml')
        assert (os.path.exists(vmc_infile))
        vmc_infile = os.path.join(vmc_path, 'vmc.g003.twistnum_3.in.xml')
        assert (os.path.exists(vmc_infile))

        files_bef = '''
        vmc.avg.s000.SpinDensity_u+d+err.xsf  vmc.avg.s000.SpinDensity_u+d-err.xsf
        vmc.avg.s000.SpinDensity_u+d.xsf      vmc.g000.twistnum_0.in.xml
        vmc.g000.s000.scalar.dat              vmc.g001.s000.scalar.dat
        vmc.g000.twistnum_0.in.g000.qmc       vmc.g001.twistnum_1.in.g001.qmc
        vmc.g001.twistnum_1.in.xml            vmc.g002.twistnum_2.in.xml
        vmc.g002.s000.scalar.dat              vmc.g003.s000.scalar.dat
        vmc.g002.twistnum_2.in.g002.qmc       vmc.g003.twistnum_3.in.g003.qmc
        vmc.g003.twistnum_3.in.xml            vmc.out
        vmc.in                                vmc.info.xml
        '''.split()

        qr_dmc_files_path = testing.unit_test_file_path(
            'qdens_radial', 'diamond_twist/dmc')
        command = 'rsync -a {} {}'.format(qr_dmc_files_path, tpath)
        out, err, rc = execute(command)
        assert (rc == 0)
        dmc_path = os.path.join(tpath, 'dmc')
        dmc_infile = os.path.join(dmc_path, 'dmc.g000.twistnum_0.in.xml')
        assert (os.path.exists(dmc_infile))
        dmc_infile = os.path.join(dmc_path, 'dmc.g001.twistnum_1.in.xml')
        assert (os.path.exists(dmc_infile))
        dmc_infile = os.path.join(dmc_path, 'dmc.g002.twistnum_2.in.xml')
        assert (os.path.exists(dmc_infile))
        dmc_infile = os.path.join(dmc_path, 'dmc.g003.twistnum_3.in.xml')
        assert (os.path.exists(dmc_infile))

        files_bef = '''
        dmc.avg.s001.SpinDensity_u+d+err.xsf  dmc.avg.s001.SpinDensity_u+d-err.xsf
        dmc.avg.s001.SpinDensity_u+d.xsf      dmc.g001.s001.scalar.dat                               
        dmc.g000.s000.scalar.dat              dmc.g000.s001.scalar.dat
        dmc.g000.twistnum_0.in.g000.qmc       dmc.g001.twistnum_1.in.g001.qmc
        dmc.g000.twistnum_0.in.xml            dmc.g001.twistnum_1.in.xml     
        dmc.g001.s000.scalar.dat              dmc.g002.s000.scalar.dat       
        dmc.g002.s001.scalar.dat              dmc.g003.s001.scalar.dat       
        dmc.g002.twistnum_2.in.g002.qmc       dmc.g003.twistnum_3.in.g003.qmc
        dmc.g002.twistnum_2.in.xml            dmc.g003.twistnum_3.in.xml
        dmc.g003.s000.scalar.dat              dmc.in
        dmc.out
        '''.split()

        assert (check_value_eq(set(os.listdir(dmc_path)), set(files_bef)))

        # VMC non-cumulative
        command = '{0} -s C -r 0.6 {1}/vmc.avg.s000.SpinDensity_u+d.xsf'.format(
            exe, vmc_path)
        out, err, rc = execute(command)

        # Assert that return code is 0
        assert (rc == 0)

        # Assert that output is consistent with reference
        out_ref = '''
Norm:   tot             = 8.00000003

Non-Cumulative Value of C Species at Cutoff 0.6 is: 4.773264912162242
'''
        assert (text_eq(out, out_ref))

        # VMC cumulative
        command = '{0} -s C -r 0.6 -c {1}/vmc.avg.s000.SpinDensity_u+d.xsf'.format(
            exe, vmc_path)
        out, err, rc = execute(command)

        # Assert that return code is 0
        assert (rc == 0)

        # Assert that output is consistent with reference
        out_ref = '''
Norm:   tot             = 8.00000003

Cumulative Value of C Species at Cutoff 0.6 is: 1.0684248641866259
'''

        # DMC extrapolated non-cumulative
        command = '{0} -s C -r 0.6 --vmc={1}/vmc.avg.s000.SpinDensity_u+d.xsf {2}/dmc.avg.s001.SpinDensity_u+d.xsf'.format(
            exe, vmc_path, dmc_path)
        out, err, rc = execute(command)

        # Assert that return code is 0
        assert (rc == 0)

        # Assert that output is consistent with reference
        out_ref = '''
Extrapolating from VMC and DMC densities...

Norm:   tot             = 7.999999969999998

Non-Cumulative Value of C Species at Cutoff 0.6 is: 4.910093964664309
'''
        assert (text_eq(out, out_ref))

        # DMC extrapolated cumulative
        command = '{0} -s C -r 0.6 -c --vmc={1}/vmc.avg.s000.SpinDensity_u+d.xsf {2}/dmc.avg.s001.SpinDensity_u+d.xsf'.format(
            exe, vmc_path, dmc_path)
        out, err, rc = execute(command)

        # Assert that return code is 0
        assert (rc == 0)

        # Assert that output is consistent with reference
        out_ref = '''
Extrapolating from VMC and DMC densities...

Norm:   tot             = 7.999999969999998

Cumulative Value of C Species at Cutoff 0.6 is: 1.1078267486386275
'''
        assert (text_eq(out, out_ref))

        # DMC extrapolated cumulative with error bar
        command = '{0} -s C -r 0.6 -c -n 3 --seed=0 --vmc={1}/vmc.avg.s000.SpinDensity_u+d.xsf --vmcerr={1}/vmc.avg.s000.SpinDensity_u+d+err.xsf --dmcerr={2}/dmc.avg.s001.SpinDensity_u+d+err.xsf {2}/dmc.avg.s001.SpinDensity_u+d.xsf'.format(
            exe, vmc_path, dmc_path)
        out, err, rc = execute(command)

        # Assert that return code is 0
        assert (rc == 0)

        # Assert that output is consistent with reference
        out_ref = '''
Extrapolating from VMC and DMC densities...
Resampling to obtain error bar (NOTE: This can be slow)...
Will compute 3 samples...
sample: 0
sample: 1
sample: 2

Norm:   tot             = 7.999999969999998

Cumulative Value of C Species at Cutoff 0.6 is: 1.1078267486386275+/-0.0016066467833404942
'''
        assert (text_eq(out, out_ref))
コード例 #5
0
def test_incorporate_result():
    import os
    import shutil
    from subprocess import Popen, PIPE
    from numpy import array
    from generic import NexusError, obj
    from nexus_base import nexus_core
    from test_vasp_simulation import setup_vasp_sim as get_vasp_sim
    from test_vasp_simulation import pseudo_inputs as vasp_pseudo_inputs
    from test_qmcpack_converter_simulations import get_pw2qmcpack_sim
    from test_qmcpack_converter_simulations import get_convert4qmc_sim
    from test_qmcpack_converter_simulations import get_pyscf_to_afqmc_sim

    pseudo_inputs = obj(vasp_pseudo_inputs)

    tpath = testing.setup_unit_test_output_directory(
        'qmcpack_simulation', 'test_incorporate_result', **pseudo_inputs)

    nexus_core.runs = ''
    nexus_core.results = ''

    # incorporate vasp structure
    sim = get_qmcpack_sim(identifier='qmc_vasp_structure', tiling=(2, 2, 2))

    vasp_struct = get_vasp_sim(tpath, identifier='vasp_structure', files=True)

    assert (sim.locdir.strip('/') == tpath.strip('/'))

    pc_file = 'diamond_POSCAR'
    cc_file = vasp_struct.identifier + '.CONTCAR'
    shutil.copy2(os.path.join(tpath, pc_file), os.path.join(tpath, cc_file))

    result = vasp_struct.get_result('structure', None)

    ion0 = sim.input.get('ion0')
    c = ion0.groups.C
    cp0 = c.position[0].copy()
    s = result.structure.copy()
    s.change_units('B')
    rp0 = s.pos[0]
    zero = array([0, 0, 0], dtype=float)
    assert (value_eq(c.position[0], cp0, atol=1e-8))
    c.position[0] += 0.1
    assert (not value_eq(c.position[0], cp0, atol=1e-8))
    assert (not value_eq(c.position[0], rp0, atol=1e-8))

    sim.incorporate_result('structure', result, vasp_struct)

    ion0 = sim.input.get('ion0')
    c = ion0.groups.C
    assert (value_eq(c.position[0], rp0, atol=1e-8))

    # incorporate pw2qmcpack orbitals
    sim = get_qmcpack_sim(identifier='qmc_p2q_orbitals')

    p2q_orb = get_pw2qmcpack_sim(identifier='p2q_orbitals')

    result = p2q_orb.get_result('orbitals', None)

    p2q_output_path = os.path.join(tpath, 'pwscf_output')
    if not os.path.exists(p2q_output_path):
        os.makedirs(p2q_output_path)
    #end if
    p2q_h5file = os.path.join(p2q_output_path, 'pwscf.pwscf.h5')
    f = open(p2q_h5file, 'w')
    f.write('')
    f.close()
    assert (os.path.exists(p2q_h5file))

    spo = sim.input.get('bspline')
    assert (spo.href == 'MISSING.h5')

    sim.incorporate_result('orbitals', result, p2q_orb)

    assert (spo.href == 'pwscf_output/pwscf.pwscf.h5')

    # incorporate convert4qmc orbitals
    sim = get_qmcpack_sim(identifier='qmc_c4q_orbitals')

    c4q_orb = get_convert4qmc_sim(identifier='c4q_orbitals')

    result = c4q_orb.get_result('orbitals', None)

    wfn_file = os.path.join(tpath, 'c4q_orbitals.wfj.xml')
    wfn_file2 = os.path.join(tpath, 'c4q_orbitals.orbs.h5')
    input = sim.input.copy()
    dset = input.get('determinantset')
    dset.href = 'orbs.h5'
    qs = input.simulation.qmcsystem
    del input.simulation
    input.qmcsystem = qs
    input.write(wfn_file)
    assert (os.path.exists(wfn_file))
    open(wfn_file2, 'w').write('fake')
    assert (os.path.exists(wfn_file2))

    from qmcpack_input import QmcpackInput
    inp = QmcpackInput(wfn_file)

    dset = sim.input.get('determinantset')
    assert ('href' not in dset)

    sim.incorporate_result('orbitals', result, c4q_orb)

    dset = sim.input.get('determinantset')
    assert (dset.href == 'c4q_orbitals.orbs.h5')

    # incorporate qmcpack jastrow
    sim = get_qmcpack_sim(identifier='qmc_jastrow')

    qa_files_path = testing.unit_test_file_path('qmcpack_analyzer',
                                                'diamond_gamma/opt')
    command = 'rsync -a {} {}'.format(qa_files_path, tpath)
    process = Popen(command,
                    shell=True,
                    stdout=PIPE,
                    stderr=PIPE,
                    close_fds=True)
    out, err = process.communicate()
    opt_path = os.path.join(tpath, 'opt')
    opt_infile = os.path.join(opt_path, 'opt.in.xml')
    assert (os.path.exists(opt_infile))
    opt_file = os.path.join(opt_path, 'opt.s004.opt.xml')
    assert (os.path.exists(opt_file))

    result = obj(opt_file=opt_file)

    sim.incorporate_result('jastrow', result, sim)

    j = sim.input.get('jastrow')

    j_text = j.write().replace('"', ' " ')

    j_text_ref = '''
        <jastrow type="Two-Body" name="J2" function="bspline" print="yes">
           <correlation speciesA="u" speciesB="u" size="8" rcut="2.3851851232">
              <coefficients id="uu" type="Array">         
        0.2576630369 0.1796686015 0.1326653657 0.09407180823 0.06267013118 0.03899100023 
        0.02070235604 0.009229775746
              </coefficients>
           </correlation>
           <correlation speciesA="u" speciesB="d" size="8" rcut="2.3851851232">
              <coefficients id="ud" type="Array">         
        0.4385891515 0.3212399072 0.2275448261 0.1558506324 0.1009589176 0.06108433554 
        0.03154274436 0.01389485975
              </coefficients>
           </correlation>
        </jastrow>
        '''.replace('"', ' " ')

    assert (text_eq(j_text, j_text_ref))

    # incorporate qmcpack wavefunction
    sim = get_qmcpack_sim(identifier='qmc_wavefunction')

    sim.incorporate_result('wavefunction', result, sim)

    j = sim.input.get('jastrow')

    j_text = j.write().replace('"', ' " ')

    assert (text_eq(j_text, j_text_ref))

    # incorporate qmcpack wavefunction afqmc
    sim = get_qmcpack_sim(type='afqmc', identifier='qmc_wf_afqmc')

    p2a_wf = get_pyscf_to_afqmc_sim(identifier='p2a_wavefunction')

    result = p2a_wf.get_result('wavefunction', None)

    del result.xml

    wfn = sim.input.get('wavefunction')
    ham = sim.input.get('hamiltonian')

    assert (wfn.filename == 'MISSING.h5')
    assert (ham.filename == 'MISSING.h5')

    sim.incorporate_result('wavefunction', result, p2a_wf)

    assert (wfn.filename == 'p2a_wavefunction.afqmc.h5')
    assert (ham.filename == 'p2a_wavefunction.afqmc.h5')

    clear_all_sims()
    restore_nexus()
コード例 #6
0
def test_get_result():
    import os
    from subprocess import Popen, PIPE
    from generic import NexusError, obj
    from nexus_base import nexus_core
    from qmcpack_analyzer import QmcpackAnalyzer

    tpath = testing.setup_unit_test_output_directory('qmcpack_simulation',
                                                     'test_get_result',
                                                     divert=True)

    nexus_core.runs = ''
    nexus_core.results = ''

    sim = get_qmcpack_sim()

    assert (sim.locdir.rstrip('/') == tpath.rstrip('/'))

    try:
        sim.get_result('unknown', None)
        raise FailedTest
    except NexusError:
        None
    except FailedTest:
        failed()
    except Exception as e:
        failed(str(e))
    #end try

    result = sim.get_result('cuspcorr', None)

    result_ref = obj(
        updet_cusps='updet.cuspInfo.xml',
        spo_dn_cusps='qmcpack.spo-dn.cuspInfo.xml',
        spo_up_cusps='qmcpack.spo-up.cuspInfo.xml',
        dndet_cusps='downdet.cuspInfo.xml',
    )

    assert (set(result.keys()) == set(result_ref.keys()))
    for k, v in result.items():
        assert (v.replace(tpath, '').lstrip('/') == result_ref[k])
    #end for

    qa_files_path = testing.unit_test_file_path('qmcpack_analyzer',
                                                'diamond_gamma/opt')
    command = 'rsync -a {} {}'.format(qa_files_path, tpath)
    process = Popen(command,
                    shell=True,
                    stdout=PIPE,
                    stderr=PIPE,
                    close_fds=True)
    out, err = process.communicate()
    opt_path = os.path.join(tpath, 'opt')
    opt_infile = os.path.join(opt_path, 'opt.in.xml')
    assert (os.path.exists(opt_infile))

    qa = QmcpackAnalyzer(opt_infile, analyze=True, equilibration=5)

    assert (qa.results.optimization.optimal_file == 'opt.s003.opt.xml')

    sim.create_directories()

    qa.save(os.path.join(sim.imresdir, sim.analyzer_image))

    result = sim.get_result('jastrow', None)

    result_ref = obj(opt_file='opt.s003.opt.xml', )

    assert (set(result.keys()) == set(result_ref.keys()))
    for k, v in result.items():
        assert (v.replace(tpath, '').lstrip('/') == result_ref[k])
    #end for

    clear_all_sims()
    restore_nexus()