Example #1
0
def test_hashing(tmpdir):
    def run(calcs, fmngr=None):
        with Session([fmngr] if fmngr else []) as sess:
            sess.run_task(calcs())
            fut = calcs().future_result()
            sess.eval(calcs())
            task = fut.resolve()[0][1].task
            output = task.resolve().resolve()['STDOUT']
            return task, output

    fmngr = FileManager(tmpdir)
    without_fmngr = run(calcs)
    with_fmngr = run(calcs, fmngr)
    with Session([fmngr]) as sess:
        task = dir_task(
            File.from_str('script', '#!/bin/bash\nexpr $(cat input) "*" 2; true'),
            [File.from_str('data', str(0)), [Path('input'), 'data']],
        )
        sess.run_task(task)
        alt_input = task, task.resolve().resolve()['STDOUT']
    alt_input = run(calcs2, fmngr)
    assert len(fmngr._cache) == 12
    assert len(list(Path(tmpdir).glob('*/*'))) == 12
    assert isinstance(without_fmngr[1], HashedFile)
    assert isinstance(with_fmngr[1], HashedFile)
    assert isinstance(alt_input[1], HashedFile)
    assert without_fmngr[0].hashid == with_fmngr[0].hashid
    assert without_fmngr[0].hashid == alt_input[0].hashid
    assert without_fmngr[1].hashid == with_fmngr[1].hashid
    assert without_fmngr[1].hashid == alt_input[1].hashid
Example #2
0
def test_alt_input2(datafile, tmpdir):
    with Session([FileManager(tmpdir)]) as sess:
        task = dir_task(
            File.from_str('script', '#!/bin/bash\nexpr $(cat input) "*" 2; true'),
            [File.from_path('data'), [Path('input'), 'data']],
        )
        assert int(sess.run_task(task).value['STDOUT'].read_text()) == 4
Example #3
0
def calcs():
    return [[
        dist,
        dir_task(
            File.from_str('script',
                          '#!/bin/bash\nexpr $(cat input) "*" 2; true'),
            [File.from_str('data', str(dist)), [Path('input'), 'data']],
            label=f'/calcs/dist={dist}',
        )['STDOUT'],
    ] for dist in range(5)]
Example #4
0
def calcs(n):
    return [[
        dist,
        dir_task(
            File.from_str('script',
                          f'#!/bin/bash\nexpr $(cat data) "*" 2; sleep {n}'),
            [File.from_str('data', str(dist))],
            label=f'/calcs/dist={dist}',
        )['STDOUT'],
    ] for dist in range(5)]
Example #5
0
def test_error(tmpdir):
    with Session([TmpdirManager(tmpdir)]) as sess:
        try:
            sess.eval(dir_task(File.from_str('script', '#!/bin/bash\nxxx'), []))
        except subprocess.CalledProcessError:
            pass
    assert len(list(Path(tmpdir).glob('*/*'))) == 3
Example #6
0
def python():
    return dir_task(
        File.from_str(
            'script',
            '#!/usr/bin/env python\nimport coverage\nprint(coverage.__name__)'
        ),
        [],
    )['STDOUT']
Example #7
0
async def figure_file(energies):
    offset = int(np.round(energies[-1]))
    plt.figure(figsize=(3, 2))
    plt.plot(np.arange(len(energies)) + 1, (energies - offset) / 1e-3)
    plt.xlabel("Step")
    plt.ylabel(r"$(\mathrm{Energy}/E_\mathrm{h}+%s)/10^{-3}$" % -offset)
    plt.ticklabel_format(useOffset=False)
    filename = "conv.pdf"
    plt.savefig(filename, bbox_inches="tight")
    return File.from_path(filename, keep=False)
Example #8
0
async def tex_file(elem, energies, figfile, template):
    tex = jinja_tex(
        template.read_text(),
        {
            "element": elem,
            "xc": xc,
            "energies": energies,
            "offset": int(np.round(energies[-1])),
            "conv_figure": figfile.name,
            "threshold": conv_threshold,
        },
    )
    texfile = template.stem
    with open(texfile, "w") as f:
        f.write(tex)
    return File.from_path(texfile, keep=False)
Example #9
0
 def create_task():
     return dir_task(
         File.from_str('script', '#!/bin/bash\nexpr $(cat input) "*" 2; true'),
         [File.from_path('data'), [Path('input'), 'data']],
     )