(full_nx, cluster_nx, task_features, cluster_config)
| 51 | |
| 52 | |
| 53 | def cluster_objects(full_nx, cluster_nx, task_features, cluster_config): |
| 54 | if cluster_nx.number_of_nodes() <= 1 or cluster_nx.number_of_edges() == 0: |
| 55 | return [list(cluster_nx.nodes)] |
| 56 | |
| 57 | ib_cluster_config = cluster.ClusterIBConfig(cluster_config) |
| 58 | ib_solver = cluster.ClusterIB(ib_cluster_config) |
| 59 | |
| 60 | region_features = np.array( |
| 61 | [np.average(cluster_nx.nodes[x]["semantic_feature"], axis=1) for x in cluster_nx]) |
| 62 | full_region_features = np.array( |
| 63 | [np.average(full_nx.nodes[x]["semantic_feature"], axis=1) for x in full_nx]) |
| 64 | ib_solver.setup_py_x(region_features, task_features) |
| 65 | ib_solver.update_delta_as_part(full_region_features, task_features) |
| 66 | ib_solver.initialize_nx_graph(cluster_nx) |
| 67 | print("initial number of objects", ib_solver.nx_graph.number_of_nodes()) |
| 68 | cluster_assignments = ib_solver.find_clusters() |
| 69 | print("number of objects after clustering", |
| 70 | ib_solver.nx_graph.number_of_nodes()) |
| 71 | return cluster_assignments |
| 72 | |
| 73 | |
| 74 | def update_dsg(G_dsg, cluster_assignments, task_features, threshold): |
no test coverage detected