def test_tree_dump_load(): """Dump and load Trees using pickle and compare results""" from openalea.mtg import treestats flist = [lambda x: g.node(x).Name1, lambda x: g.node(x).Name2] T1 = treestats.extract_trees(g, 2, lambda x: True, flist) import tempfile code, filename = tempfile.mkstemp() T1.PickleDump(filename) T2 = trees.PickleLoad(filename) os.remove(filename) msg1 = "Number of saved and dumped trees do not match" assert T1.NbTrees() == T2.NbTrees(), msg1 for t in range(T1.NbTrees()): msg1 = "Saved and dumped trees n. " msg1 += str(t) + " do not match" assert str(T1.Tree(t)) == str(T2.Tree(t)), msg2 return T1, T2
for v in range(2): g.add_child(6,14+2*v,edge_type='+') for v in range(4): g.add_child(8,18+2*v,edge_type='+') g.add_child(24,26,edge_type='<') g.add_child(24,28,edge_type='+') for v in range(13, 25): mtgvtx += [g.add_component(mtgroots[1], vtxlist[v])] g.add_child(30,32,edge_type='<') for v in range(3): g.add_child(30,34+2*v,edge_type='+') g.add_child(34,40,edge_type='<') for v in range(2): g.add_child(34,42+2*v,edge_type='+') for v in range(4): g.add_child(44,46+2*v,edge_type='+') g.add_property("Name1") g.add_property("Name2") for v in mtgvtx: g.node(v).Name1 = v g.node(v).Name2 = 52-v from openalea.mtg import treestats flist = [lambda x: g.node(x).Name1, lambda x: g.node(x).Name2] T = treestats.extract_trees(g, 2, lambda x: True, flist) T.PickleDump("tree.pkl") T2 = trees.PickleLoad("tree.pkl") print T2.NbTrees() T2.Tree(0).Display()