示例#1
0
    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)
示例#3
0
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')
示例#4
0
    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)