From f961fe31b24e22f83e3d4f71f3902c24ebf2291e Mon Sep 17 00:00:00 2001 From: crides <zhuhaoqing@live.cn> Date: Mon, 19 Sep 2022 17:27:03 -0500 Subject: [PATCH] dump tree --- demo/vehicle/demo7.py | 16 +++++++++------- verse/analysis/analysis_tree.py | 18 ++++++++++++++++++ 2 files changed, 27 insertions(+), 7 deletions(-) diff --git a/demo/vehicle/demo7.py b/demo/vehicle/demo7.py index 200513f3..8aa7ed7c 100644 --- a/demo/vehicle/demo7.py +++ b/demo/vehicle/demo7.py @@ -103,15 +103,17 @@ if __name__ == "__main__": time = timeit.default_timer() traces = scenario.simulate(60, 0.05) print("\x1b[31mrun1\x1b[0m", timeit.default_timer() - time) + traces.dump_tree() fig = go.Figure() fig = simulation_tree(traces, tmp_map, fig, 1, 2, 'lines', 'trace', print_dim_list=[1, 2]) fig.show() - time = timeit.default_timer() - traces = scenario.simulate(60, 0.05) - print("\x1b[31mrun2\x1b[0m", timeit.default_timer() - time) - fig = go.Figure() - fig = simulation_tree(traces, tmp_map, fig, 1, - 2, 'lines', 'trace', print_dim_list=[1, 2]) - fig.show() +# time = timeit.default_timer() +# traces = scenario.simulate(60, 0.05) +# print("\x1b[31mrun2\x1b[0m", timeit.default_timer() - time) +# traces.dump_tree() +# fig = go.Figure() +# fig = simulation_tree(traces, tmp_map, fig, 1, +# 2, 'lines', 'trace', print_dim_list=[1, 2]) +# fig.show() diff --git a/verse/analysis/analysis_tree.py b/verse/analysis/analysis_tree.py index 57b26bb0..7000f992 100644 --- a/verse/analysis/analysis_tree.py +++ b/verse/analysis/analysis_tree.py @@ -1,5 +1,6 @@ from typing import List, Dict, Any import json +from treelib import Tree class AnalysisTreeNode: """AnalysisTreeNode class @@ -122,3 +123,20 @@ class AnalysisTree: parent_node.child.append(child_node) queue.append((child_node_dict, child_node)) return AnalysisTree(root) + + def dump_tree(self): + tree = Tree() + AnalysisTree._dump_tree(self.root, tree, 0, 1) + tree.show() + + @staticmethod + def _dump_tree(node, tree, pid, id): + n = "\n".join(str((aid, *node.mode[aid], *node.init[aid])) for aid in node.agent) + if pid != 0: + tree.create_node(n, id, parent=pid) + else: + tree.create_node(n, id) + nid = id + 1 + for child in node.child: + nid = AnalysisTree._dump_tree(child, tree, id, nid) + return nid + 1 -- GitLab