Exemplo n.º 1
0
    def graph_info(self):
        """docstring for graph_info"""
        self.e_types = ["Link"]
        self.n_types = ["Node", "Link"]
        edges_info = defaultdict(int)
        nodes_info = defaultdict(set)

        for e_type in self.valid_edge_types:
            links = self._get_edges(e_type)
            for link in links:
                nodes = self._nodes_from_edge(link)
                if len(nodes) > 0:
                    if self.valid_edge(link, nodes):
                        # edges_info[link.type_name].add(link.name)
                        edges_info[link.type_name] += 1
                        for i, node in enumerate(nodes):
                            if is_a(node.type_name, "Node"):
                                nodes_info[node.type_name].add(node.name)
        log.info("*******************************edges:")
        for type_name, num in edges_info.iteritems():
            log.info(type_name + ":  " + str(num))
            # pprint(edges)
        log.info("*******************************nodes:")
        for type_name, nodes in nodes_info.iteritems():
            log.info(str(len(nodes)), type_name)
Exemplo n.º 2
0
    def filter_graph(self):
        """ get filtered graph from source"""
        # add edges of valid type
        # iterate over valid edges
        for e_type in self.valid_edge_types:
            links = self._get_edges(e_type)
            for link in links:
                nodes = self._nodes_from_edge(link)
                # none empty edges!
                if len(nodes) > 0:
                    if self.valid_edge(link, nodes):
                        # make the linkname uniqueness
                        link_name = link.type_name + "[%s]" % str(link.h.value())
                        # print link_name
                        for i, node in enumerate(nodes):
                            if is_a(node.type_name, "Link"):
                                node_name = node.type_name + "[%s]" % str(node.h.value())
                                # print "***%s" % node_name
                            else:
                                node_name = self.graph.unique_id(node.name)
                                # print "^^%s" % node_name
                            # print "%s -> %s" %(link_name,node_name)
                            self.graph.add_edge(link_name, node_name)
                            # maintain order in the list
                            self.graph.set_edge_attr(link_name, node_name, order=str(i))

                            atom = FakeAtom(node.type, node_name, node.tv, node.av)
                            self.graph.set_node_attr(node_name, atom=atom)
                            # self.graph.set_node_attr(node_name, shape = "point")

                            atom = FakeAtom(link.type, link.name, link.tv, link.av)
                            self.graph.set_node_attr(link_name, atom=atom)
                            # self.graph.set_node_attr(link_name, shape = "point")
        return self.graph
Exemplo n.º 3
0
    def graph_info(self):
        '''docstring for graph_info'''
        self.e_types = ["Link"]
        self.n_types = ["Node", "Link"]
        edges_info = defaultdict(int)
        nodes_info = defaultdict(set)

        for e_type in self.valid_edge_types:
            links = self._get_edges(e_type)
            for link in links:
                nodes = self._nodes_from_edge(link)
                if len(nodes) > 0:
                    if self.valid_edge(link, nodes):
                        #edges_info[link.type_name].add(link.name)
                        edges_info[link.type_name] += 1
                        for i, node in enumerate(nodes):
                            if is_a(node.type_name, "Node"):
                                nodes_info[node.type_name].add(node.name)
        log.info("*******************************edges:")
        for type_name, num in edges_info.iteritems():
            log.info(type_name + ":  " + str(num))
            #pprint(edges)
        log.info("*******************************nodes:")
        for type_name, nodes in nodes_info.iteritems():
            log.info(str(len(nodes)), type_name)
Exemplo n.º 4
0
def add_tree_to_atomspace(a, tree, root):
    ''' add nodes of a tree to atomspace in postorder '''
    out = []
    fakeatom = tree.get_node_attr(root)['atom']
    if not tree.neighbors(root):
    ## a leaf in the tree
        try:
            if is_a(fakeatom.type, types.Node):
                # a node
                return a.add_node(fakeatom.type, fakeatom.name, fakeatom.tv)
            else:
                # empty link
                return a.add_link(fakeatom.type, [], fakeatom.tv)
        except Exception, e:
            log.error(" **** error occurs when adding to atomspace ****" )
            log.error(str(e))
Exemplo n.º 5
0
def add_tree_to_atomspace(a, tree, root):
    ''' add nodes of a tree to atomspace in postorder '''
    out = []
    fakeatom = tree.get_node_attr(root)['atom']
    if not tree.neighbors(root):
        ## a leaf in the tree
        try:
            if is_a(fakeatom.type, types.Node):
                # a node
                return a.add_node(fakeatom.type, fakeatom.name, fakeatom.tv)
            else:
                # empty link
                return a.add_link(fakeatom.type, [], fakeatom.tv)
        except Exception, e:
            log.error(" **** error occurs when adding to atomspace ****")
            log.error(str(e))
Exemplo n.º 6
0
    def filter_graph(self):
        ''' get filtered graph from source'''
        # add edges of valid type
        # iterate over valid edges
        for e_type in self.valid_edge_types:
            links = self._get_edges(e_type)
            for link in links:
                nodes = self._nodes_from_edge(link)
                # none empty edges!
                if len(nodes) > 0:
                    if self.valid_edge(link, nodes):
                        # make the linkname uniqueness
                        link_name = link.type_name + "[%s]" % str(
                            link.h.value())
                        #print link_name
                        for i, node in enumerate(nodes):
                            if is_a(node.type_name, "Link"):
                                node_name = node.type_name + "[%s]" % str(
                                    node.h.value())
                                #print "***%s" % node_name
                            else:
                                node_name = self.graph.unique_id(node.name)
                                #print "^^%s" % node_name
                            #print "%s -> %s" %(link_name,node_name)
                            self.graph.add_edge(link_name, node_name)
                            # maintain order in the list
                            self.graph.set_edge_attr(link_name,
                                                     node_name,
                                                     order=str(i))

                            atom = FakeAtom(node.type, node_name, node.tv,
                                            node.av)
                            self.graph.set_node_attr(node_name, atom=atom)
                            #self.graph.set_node_attr(node_name, shape = "point")

                            atom = FakeAtom(link.type, link.name, link.tv,
                                            link.av)
                            self.graph.set_node_attr(link_name, atom=atom)
                            #self.graph.set_node_attr(link_name, shape = "point")
        return self.graph
Exemplo n.º 7
0
 def _edge_is_a(self, source, target):
     if self.inheritance:
         return is_a(source, target)
     else:
         return source == target
Exemplo n.º 8
0
 def _edge_is_a(self, source, target):
     if self.inheritance:
         return is_a(source, target)
     else:
         return source == target