def load_node_labels()

in src/graph_community.py [0:0]


def load_node_labels(file_path, delimiter=','):
    """
    Load node label data from a local file

    :param file_path: str, a local file path to node label data for a graph
    :param delimiter: str, delimiter used to separate node records
    :return: label_nodes_dict, label_community, labels_array
    """

    with open(file_path, 'r') as f:
        node_labels = [list(map(int, line.split(delimiter))) for line in f.read().splitlines()]

    # Sort according to node values
    node_labels_sorted = sorted(node_labels, key=lambda x: x[0])
    node_labels = np.array(node_labels_sorted)

    # Center node and label IDs
    node_labels[:, 0] -= node_labels[:, 0].min()
    node_labels[:, 1] -= node_labels[:, 1].min()

    # Create one-hot encoding of labels (node classes)
    labels_array = np.zeros((node_labels.shape[0], len(set(node_labels[:, 1]))))
    labels_array[node_labels[:, 0], node_labels[:, 1]] = 1.0

    # Map {label_id: [nodes, with, that, label]}
    label_nodes_dict = {label: [node for node, label_ in node_labels if label_ == label] \
                        for label in set(node_labels[:, 1])}

    # Prep list of nodes under each community for networkX function
    label_community = list(label_nodes_dict.values())

    return label_nodes_dict, label_community, labels_array