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)
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
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)
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))
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))
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
def _edge_is_a(self, source, target): if self.inheritance: return is_a(source, target) else: return source == target
def _edge_is_a(self, source, target): if self.inheritance: return is_a(source, target) else: return source == target