def reduce()

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]
        )