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