Esempio n. 1
0
def transform_npz_nx(g, penalize=20):
    from numpy import int32
    ids = g['ids']
    lat = g['lat']
    long = g['long']
    id2edges = g['id2edges']
    edges_weight = g['edges_weight']
    edges_neighbor = g['edges_neighbor']
    edges_air = g['edges_type']
    rescale = edges_weight.dtype == int32
    from networkx import Graph
    h = Graph()
    index2node = {}
    for index in range(len(ids)):
        node = (int(ids[index]), lat[index] / (10000000. if rescale else 1),
                long[index] / (10000000. if rescale else 1))
        index2node[index] = node
        h.add_node(node)
    for index in range(len(ids)):
        left = id2edges[index]
        right = id2edges[index + 1]
        me = index2node[index]
        for i in range(left, right):
            neighbor = edges_neighbor[i]
            air = edges_air[i]
            w = edges_weight[i] / (
                (1000. * (penalize if air < 0 else 1)) if rescale else 1)
            h.add_edge(me, index2node[neighbor], weight=w, type=air)
    return h