def subgraph_from(self, targets):
'''Trim DAG to keep only nodes that produce targets'''
# first, find all nodes with targets
subnodes = []
for node in self.nodes():
if not isinstance(node._output_targets, Undetermined) and any(x in node._output_targets for x in targets):
subnodes.append(node)
#
ancestors = set()
for node in subnodes:
ancestors |= nx.ancestors(self, node)
return SoS_DAG(nx.subgraph(self, subnodes + list(ancestors)))
评论列表
文章目录