Ejemplo n.º 1
0
def main():
    data_file = os.path.join("..", "data", "normal_3d.csv")
    s = Sequence(
        ReadData(),
        Split([
            (
                lambda vec: vec[0],
                Histogram(mesh((-10, 10), 10)),
                MakeFilename("x"),
            ),
            (
                lambda vec: vec[1],
                Histogram(mesh((-10, 10), 10)),
                MakeFilename("y"),
            ),
            (
                lambda vec: vec[2],
                Histogram(mesh((-10, 10), 10)),
                MakeFilename("z"),
            ),
        ]),
        ToCSV(),
        Write("output"),
        RenderLaTeX("histogram_1d.tex", "templates"),
        Write("output"),
        LaTeXToPDF(),
        PDFToPNG(),
    )
    results = s.run([data_file])
    for res in results:
        print(res)
Ejemplo n.º 2
0
def main_no_copybuf(data_file):
    s = Sequence(
        ReadData(),
        Split(
            [
                (
                    lambda vec: vec[0],
                    Histogram(mesh((-10, 10), 10)),
                    MakeFilename("x"),
                ),
                (
                    lambda vec: vec[1],
                    Histogram(mesh((-10, 10), 10)),
                    MakeFilename("y"),
                ),
                (
                    lambda vec: vec[2],
                    Histogram(mesh((-10, 10), 10)),
                    MakeFilename("z"),
                ),
            ],
            copy_buf=False,
        ),
        MakeFilename("{{variable.name}}"),
        ToCSV(),
    )
    results = s.run([data_file])
    for res in results:
        print(res)
Ejemplo n.º 3
0
def main():
    write = Write("output")

    s = Source(
        get_filenames,
        GetCoordinates(),
        Split([
            (
                Variable("x", lambda coord: coord[0]),
                Histogram(lena.math.mesh((-10, 10), 100)),
            ),
            (
                Variable("y",
                         lambda coord: coord[1],
                         latex_name="y",
                         unit="mm"),
                Histogram(lena.math.mesh((-10, 10), 100)),
            ),
        ]),
        MakeFilename("{{variable.name}}"),
        # UpdateContext("output.filename", "x"),
        ToCSV(),
        write,
        RenderLaTeX("histogram_1d.tex"),
        write,
        LaTeXToPDF(),
        PDFToPNG(),
    )

    return s()
Ejemplo n.º 4
0
def main_copybuf(data_file):
    write = Write("output")
    s = Sequence(
        ReadData(),
        Split([
            (
                Variable("x", lambda vec: vec[0]),
                Histogram(mesh((-10, 10), 10)),
            ),
            (
                Variable("y", lambda vec: vec[1]),
                Histogram(mesh((-10, 10), 10)),
            ),
            (
                Variable("z", lambda vec: vec[2]),
                Histogram(mesh((-10, 10), 10)),
            ),
        ]),
        MakeFilename("{{variable.name}}"),
        ToCSV(),
        # write,
        # RenderLaTeX("histogram_1d.tex", "templates"),
        # write,
        # LaTeXToPDF(),
        # PDFToPNG(),
    )
    results = s.run([data_file])
    for res in results:
        print(res)
Ejemplo n.º 5
0
def test_make_filename_init():
    # all format arguments must be strings
    with pytest.raises(lena.core.LenaTypeError):
        MakeFilename(0)

    # zero arguments are prohibited
    with pytest.raises(lena.core.LenaTypeError):
        MakeFilename()

    # wrong format_str
    with pytest.raises(lena.core.LenaValueError):
        MakeFilename(filename="{}}")

    # prefix and suffix must be provided separately with filename
    with pytest.raises(lena.core.LenaTypeError):
        MakeFilename(filename="filename", prefix="wrong_")
Ejemplo n.º 6
0
def test_make_filename_prefix_suffix():
    data = [(0, {"output": {"filename": "file_name"}})]
    mk1 = MakeFilename(suffix="_suff1", prefix="pref1_")
    mk2 = MakeFilename(suffix="_suff2", prefix="pref2_")

    # existing file names are unchanged
    seq12_1 = Sequence(mk1, Print(), mk2)
    assert list(seq12_1.run(copy.deepcopy(data))) == [(0, {
        'output': {
            'filename': 'file_name',
            'prefix': 'pref2_pref1_',
            'suffix': '_suff1_suff2'
        }
    })]

    # prefix and suffix are properly added
    seq12_2 = Sequence(mk1, mk2, MakeFilename("filename"))
    assert list(seq12_2.run([0])) == [(0, {
        'output': {
            'filename': 'pref2_pref1_filename_suff1_suff2'
        }
    })]

    ## Overwrite works
    # it doesn't harm when file name is produced
    mk3 = MakeFilename(suffix="_suff2", overwrite=True)
    seq13 = Sequence(mk1, mk3, MakeFilename("filename3"))
    assert list(seq13.run(copy.deepcopy(data))) == [(0, {
        'output': {
            'prefix': 'pref1_',
            'suffix': '_suff2',
            'filename': 'file_name'
        }
    })]

    # it really works
    seq13_2 = Sequence(mk1, mk3, MakeFilename("filename132"))
    assert list(seq13_2.run([0])) == [(0, {
        'output': {
            'filename': 'pref1_filename132_suff2'
        }
    })]

    # formatting arguments work
    mk4 = MakeFilename(prefix="{{a}}_")
    seq14 = Sequence(mk1, mk4, MakeFilename("filename14"))
    assert list(seq14.run([(0, {
        "a": "A"
    })])) == [(0, {
        'a': 'A',
        'output': {
            'filename': 'A_pref1_filename14_suff1'
        }
    })]
Ejemplo n.º 7
0
def main():
    data_file = os.path.join("..", "data", "double_ev.csv")
    write = Write("output")
    s = Sequence(
        ReadDoubleEvents(),
        Split(coordinates_1d + [(
            particle,
            Combine(x, y, name="xy"),
            Histogram(mesh(((-10, 10), (-10, 10)), (10, 10))),
            MakeFilename("{{variable.particle}}/{{variable.name}}"),
        ) for particle in (positron, neutron)]),
        MakeFilename("{{variable.particle}}/{{variable.coordinate}}"),
        ToCSV(),
        write,
        RenderLaTeX(select_template, template_dir="templates"),
        write,
        LaTeXToPDF(),
        PDFToPNG(),
    )
    results = s.run([data_file])
    for res in results:
        print(res)
Ejemplo n.º 8
0
def main():
    data_file = os.path.join("..", "data", "normal_3d.csv")
    s = Sequence(
        ReadData(),
        lambda dt: (dt[0][0], dt[1]),
        Histogram(mesh((-10, 10), 10)),
        ToCSV(),
        MakeFilename("x"),
        Write("output"),
        RenderLaTeX("histogram_1d.tex"),
        Write("output"),
        LaTeXToPDF(),
        PDFToPNG(),
    )
    results = s.run([data_file])
    print(list(results))
Ejemplo n.º 9
0
def test_make_filename():
    data = [
        (0, {
            "output": {
                "filename": "exists"
            }
        }),
        (1, {
            "output": {
                "fileext": "ext"
            }
        }),
    ]
    filename = lambda val: val[1]["output"].get("filename")
    dirname = lambda val: val[1]["output"].get("dirname")
    fileext = lambda val: val[1]["output"].get("fileext")

    # single argument string works
    mk = MakeFilename("out")
    res = list(map(mk, copy.deepcopy(data)))
    assert list(map(filename, res))[1] == "out"
    assert list(map(fileext, res)) == [None, "ext"]
    assert list(map(dirname, res)) == [None, None]

    # single make_filename works, overwrite works
    mk = MakeFilename(filename="out", overwrite=True)
    res = list(map(mk, copy.deepcopy(data)))
    assert list(map(filename, res)) == ["out", "out"]
    assert list(map(fileext, res)) == [None, "ext"]
    assert list(map(dirname, res)) == [None, None]

    # dirname works
    mk = MakeFilename(dirname="out")
    res = list(map(mk, copy.deepcopy(data)))
    assert list(map(dirname, res)) == ["out", "out"]

    # fileext works
    mk = MakeFilename(fileext="ext")
    res = list(map(mk, copy.deepcopy(data)))
    assert list(map(fileext, res)) == ["ext", "ext"]

    # filename and fileext work
    mk = MakeFilename(filename="out", fileext="txt")
    res = list(map(mk, copy.deepcopy(data)))
    assert list(map(filename, res)) == ["exists", "out"]
    assert list(map(fileext, res)) == ["txt", "ext"]

    # works without context or without context.output
    res = list(map(mk, ([0, (1, {})])))
    assert list(map(filename, res)) == ["out", "out"]
    assert list(map(fileext, res)) == ["txt", "txt"]
    # values are unchanged
    assert res[0][0] == 0 and res[1][0] == 1

    # works with real formatting
    val = (0, {"datatype": "MC"})
    mk = MakeFilename(filename="{{datatype}}")
    good_res = (0, {"datatype": "MC", "output": {"filename": "MC"}})
    assert mk(copy.deepcopy(val)) == good_res

    mk = MakeFilename(filename="{{datatype}}")
    # ignores formatting errors
    assert mk(0) == 0

    # context is unchanged
    d = {}
    assert mk((0, d))[1] is d