def annotate_connected_components()

in videoalignment/datasets.py [0:0]


    def annotate_connected_components(self):
        graph_matrix = (
            np.ones((len(self.gt_all_videos), len(self.gt_all_videos))) * np.inf
        )
        for p in self.gt_all_overlapping_pairs:
            graph_matrix[
                self.gt_all_videos.index(p["videos"][0]),
                self.gt_all_videos.index(p["videos"][1]),
            ] = 1
            graph_matrix[
                self.gt_all_videos.index(p["videos"][1]),
                self.gt_all_videos.index(p["videos"][0]),
            ] = 1
        graph = csgraph_from_dense(np.ma.masked_invalid(graph_matrix))
        ncc, labels = connected_components(graph, directed=False)

        for video_i, label in enumerate(labels):
            self.gt_all_videos[video_i]["label"] = int(label)
            for i in range(len(self.gt_all_overlapping_pairs)):
                if (
                    self.gt_all_videos[video_i]
                    in self.gt_all_overlapping_pairs[i]["videos"]
                ):
                    self.gt_all_overlapping_pairs[i]["label"] = int(label)

        return ncc