test_math.py

1.6 kB · python · 54 lines

1import json23from mrlypy.math import atoms, bang, counts, spectrum, three, two4from mrlypy.math.graph import Network567def test_atoms_carpet_2d(row):8    r = row("math::atoms::carpet_2d")9    atom = atoms.carpet_2d(r["in"]["n"])10    assert list(atom.shape) == r["out"]["shape"]11    assert atom.flatten().tolist() == r["out"]["data"]121314def test_two_carpet(row):15    r = row("math::two::carpet")16    cell = two.carpet(r["in"]["number"], r["in"]["level"])17    assert json.loads(two.to_json(cell)) == r["out"]181920def test_two_census(row):21    r = row("math::two::census::census")22    inner = r["in"]["cell"]["in"]23    assert two.census(two.carpet(inner["number"], inner["level"])) == r["out"]242526def test_counts_fill(row):27    r = row("math::counts::fill")28    i = r["in"]29    filled = counts.fill(int(i["code"]), i["number"], i["dimension"], i["level"], i["base"])30    assert filled == int(r["out"])313233def test_bang(row):34    r = row("math::bang::bang")35    assert bang.bang(r["in"]["dimension"]).distinct() == r["out"]363738def test_three_census(row):39    r = row("math::three::census::census")40    inner = r["in"]["cell"]["in"]41    solid = three.census(three.carpet(inner["number"], inner["level"]))42    assert solid["surface"] == int(r["out"])434445def test_laplacian_spectrum(row):46    r = row("math::spectrum::laplacian_spectrum")47    i = r["in"]["network"]48    network = Network(i["dim"])49    for position in i["nodes"]:50        network.add_node(position)51    for parent, child, radius in i["branches"]:52        network.add_branch(parent, child, radius)53    spread = spectrum.laplacian_spectrum(network, r["in"]["normalised"])54    assert [round(value, 12) for value in spread] == r["out"]