def display_distancetree(self, report, max_level=100, frac=0.5, max_branching=5): plans, distances = self.cover.compute_distances() D = dict(distances)['pathlength'] plan2point2 = get_embedding_mds(plans, D, ndim=2) plan2point3 = get_embedding_mds(plans, D, ndim=3) plan_level = lambda x: G.node[x]['level'] _, G = make_distancetree(D, plans, max_branching=max_branching) copy_nodes_attrs(self.cover.G, G) n = len(plans) subnodes = [ x for x in G if G.node[x]['level'] <= max_level and G.node[x]['order'] <= frac * n ] Gsub = G.subgraph(subnodes) f = report.figure() with f.data_file('tree', MIME_PNG) as filename: draw_node_graph(filename, Gsub, plan2point2.__getitem__, color_func=plan_level, label_func=lambda x: G.node[x]['order'], cmap='Set2') with f.plot('2D') as pylab: plot_2d_graph(pylab, Gsub, plan2point2.__getitem__, plan_level) with f.plot('3D') as pylab: plot_3d_graph(pylab, Gsub, plan2point3.__getitem__, plan_level)
def display_distancetree(self, report, max_level=100, frac=0.5, max_branching=5): plans, distances = self.cover.compute_distances() D = dict(distances)['pathlength'] plan2point2 = get_embedding_mds(plans, D, ndim=2) plan2point3 = get_embedding_mds(plans, D, ndim=3) plan_level = lambda x: G.node[x]['level'] _, G = make_distancetree(D, plans, max_branching=max_branching) copy_nodes_attrs(self.cover.G, G) n = len(plans) subnodes = [x for x in G if G.node[x]['level'] <= max_level and G.node[x]['order'] <= frac * n] Gsub = G.subgraph(subnodes) f = report.figure() with f.data_file('tree', MIME_PNG) as filename: draw_node_graph(filename, Gsub, plan2point2.__getitem__, color_func=plan_level, label_func=lambda x: G.node[x]['order'], cmap='Set2') with f.plot('2D') as pylab: plot_2d_graph(pylab, Gsub, plan2point2.__getitem__, plan_level) with f.plot('3D') as pylab: plot_3d_graph(pylab, Gsub, plan2point3.__getitem__, plan_level)
def draw_graph(G, points, filename): print('writing on %r' % filename) pos_func = lambda i: points[i] draw_node_graph(filename + '_level_order.png', G, pos_func, color_func=lambda x: G.node[x]['level'], label_func=lambda x: G.node[x]['order'], cmap='Set2') draw_node_graph(filename + '_order_order.png', G, pos_func, color_func=lambda x: G.node[x]['order'], label_func=lambda x: G.node[x]['order'], cmap='Set2')
def draw_graph(self, r): def label_plan_length(n): return len(n) open_nodes = set(self.open_nodes) def label_child_open(n): # number of children in the open list children = self.G[n] return len(set(children) & open_nodes) ss = guess_state_space(self.id_dds, self.dds) def point_func(plan): commands = self.dds.indices_to_commands(plan) state = ss.state_from_commands(commands) xy = ss.xy_from_state(state) return 5 * xy f = r.figure(cols=2) nolabel = lambda _: '' with f.data_file('planlength', MIME_PNG) as filename: draw_node_graph( filename=filename, G=self.G, pos_func=point_func, #label_func=label_plan_length, label_func=nolabel, color_func=label_plan_length) with f.data_file('nchildopen', MIME_PNG) as filename: draw_node_graph( filename=filename, G=self.G, pos_func=point_func, # label_func=label_child_open, label_func=nolabel, color_func=label_child_open) with f.data_file('info', MIME_PNG) as filename: draw_node_graph( filename=filename, G=self.G, pos_func=point_func, #label_func=lambda x: '%.2f' % self.visibility(x), label_func=nolabel, color_func=self.visibility) with f.plot('visible') as pylab: v = map(self.visibility, self.G) pylab.hist(v, 100) with r.subsection('embedding') as s: self.draw_embeddings(s) all_plans = list(self.G.nodes()) random.shuffle(all_plans) random_plans = all_plans[:3] for pi, ref_plan in enumerate(random_plans): color_func = lambda p2: self.plan_distance( ref_plan, p2, diffeoaction_distance_L2_infow) name = 'random%d' % pi with f.data_file(name, MIME_PNG) as filename: draw_node_graph( filename=filename, G=self.G, pos_func=point_func, #label_func=lambda x: '%.2f' % self.visibility(x), label_func=nolabel, color_func=color_func)
def draw_graph(self, r): def label_plan_length(n): return len(n) open_nodes = set(self.open_nodes) def label_child_open(n): # number of children in the open list children = self.G[n] return len(set(children) & open_nodes) ss = guess_state_space(self.id_dds, self.dds) def point_func(plan): commands = self.dds.indices_to_commands(plan) state = ss.state_from_commands(commands) xy = ss.xy_from_state(state) return 5 * xy f = r.figure(cols=2) nolabel = lambda _: '' with f.data_file('planlength', MIME_PNG) as filename: draw_node_graph(filename=filename, G=self.G, pos_func=point_func, #label_func=label_plan_length, label_func=nolabel, color_func=label_plan_length) with f.data_file('nchildopen', MIME_PNG) as filename: draw_node_graph(filename=filename, G=self.G, pos_func=point_func, # label_func=label_child_open, label_func=nolabel, color_func=label_child_open) with f.data_file('info', MIME_PNG) as filename: draw_node_graph(filename=filename, G=self.G, pos_func=point_func, #label_func=lambda x: '%.2f' % self.visibility(x), label_func=nolabel, color_func=self.visibility) with f.plot('visible') as pylab: v = map(self.visibility, self.G) pylab.hist(v, 100) with r.subsection('embedding') as s: self.draw_embeddings(s) all_plans = list(self.G.nodes()) random.shuffle(all_plans) random_plans = all_plans[:3] for pi, ref_plan in enumerate(random_plans): color_func = lambda p2: self.plan_distance(ref_plan, p2) #diffeoaction_distance_L2_infow) name = 'random%d' % pi with f.data_file(name, MIME_PNG) as filename: draw_node_graph(filename=filename, G=self.G, pos_func=point_func, #label_func=lambda x: '%.2f' % self.visibility(x), label_func=nolabel, color_func=color_func)