in fairmotion/tasks/motion_graph/motion_graph.py [0:0]
def reduce(self, method="scc", num_component=1):
"""
scc : strongly connected component
wcc : weakly connected component
"""
if method == "scc":
components = nx.strongly_connected_components(self.graph)
elif method == "wcc":
components = nx.weakly_connected_components(self.graph)
else:
raise NotImplementedError
components = sorted(components, key=len, reverse=True)
nodes = []
for i in range(num_component):
nodes += components[i]
logging.info(f"Using reduced component with {len(nodes)} nodes")
self.graph.remove_nodes_from(
[n for n in self.graph.nodes if n not in nodes]
)