def _get_label_info(G, label_name): """Get and return information of labels from the input graph Parameters ---------- G : Network X graph label_name : string Name of the target label Returns ---------- labels : numpy array, shape = [n_labeled_samples, 2] Array of pairs of labeled node ID and label ID label_dict : numpy array, shape = [n_classes] Array of labels i-th element contains the label corresponding label ID `i` """ import numpy as np labels = [] label_to_id = {} lid = 0 for i, n in enumerate(G.nodes(data=True)): if label_name in n[1]: label = n[1][label_name] if label not in label_to_id: label_to_id[label] = lid lid += 1 labels.append([i, label_to_id[label]]) labels = np.array(labels) label_dict = np.array( [label for label, _ in sorted(label_to_id.items(), key=lambda x: x[1])] ) return (labels, label_dict)