def remove_subgraph(self, name): """Remove subgraph with given name.""" try: handle=gv.agsubg(self.handle,name,_Action.find) except TypeError: raise TypeError("Subgraph name must be a string: %s"%name) if handle is None: raise KeyError("Subgraph %s not in graph."%name) gv.agdelsubg(self.handle,handle)
def get_subgraph(self,name): """Return existing subgraph with specified name or None if it doesn't exist. """ try: handle=gv.agsubg(self.handle,name,_Action.find) except TypeError: raise TypeError("Subgraph name must be a string: %s"%name) if handle is None: return None H=self.__class__(strict=self.strict, directed=self.directed, handle=handle) return H
def add_subgraph(self, nbunch=None, name=None, **attr): """Return subgraph induced by nodes in nbunch. """ try: handle=gv.agsubg(self.handle,name,_Action.create) except TypeError: raise TypeError("Subgraph name must be a string: %s"%name) H=self.__class__(strict=self.strict, directed=self.directed, handle=handle,name=name,**attr) if nbunch is None: return H # add induced subgraph on nodes in nbunch bunch=self.prepare_nbunch(nbunch) H.add_nodes_from(bunch) for (u,v) in self.edges(): if u in H and v in H: H.add_edge(u,v) return H