Esempio n. 1
0
def ascii_barrier(id_vent, propagation_method, edges_list):
    utm_filename = "ASCII_grids/" + propagation_method + "_" + str(
        id_vent) + "_barrier.txt"
    # Creazione Matrice da stampare
    M = np.zeros((ROWS, COLS), dtype=int)
    G = utility.load_graph()
    for u, v in edges_list:
        coords = G.nodes[u]["coord_regions"].split("|")[0]
        coord_u_x, coord_u_y = conversion.cast_coord_attr(coords)
        M[coord_u_x][coord_u_y] = 1
        coords = G.nodes[v]["coord_regions"].split("|")[0]
        coord_v_x, coord_v_y = conversion.cast_coord_attr(coords)
        M[coord_v_x][coord_v_y] = 1
    # Scrittura del file
    with open(utm_filename, 'w') as utmfile:
        # Scrittura dell'header del file (northing...)
        for i in range(0, len(header)):
            utmfile.write(header[i] + "\n")
        # Scrittura valori nel DEM
        for x in range(0, ROWS):
            for y in range(0, COLS):
                if M[x][y] == 0:
                    utmfile.write("0" + " ")
                else:
                    utmfile.write(str(M[x][y]) + " ")
            utmfile.write("\n")
Esempio n. 2
0
def vect_sim(id_vent):
    #matrice 91*75
    M = np.zeros((91, 75), dtype=int)
    # carico la lista dei file delle simulazioni
    filelist = glob("Data/simulations/NotN_vent_" + str(id_vent) + "_" + "*"  + ".txt")
    if len(filelist) == 0:
        return
    print("vent: ", id_vent)
    for vent_file in filelist:
        #apre ogni singolo file
        with open(vent_file, 'r') as in_file:
            # legge ogni riga del file
            for line in in_file:
                row, col = line.split(" ")
                row = int(row)
                col = int(col)
                #per ogni riga del file inserisce 1 nella matrice
                M[int(row / 25)][int(col / 25)] = 1

    #carica il grafo
    G = load_graph()
    #istanzia il vettore di output
    vect = np.zeros((len(G.nodes)), dtype= int)
    #scorre i nodi del grafo
    for u in G.nodes():
        # si ottiene una lista di coordinate
        coords = G.nodes[u]['coord_regions'].split("|")
        for coord in coords:
            # ottiene il valore di riga e colonna
            row, col = conversion.cast_coord_attr(coord)
            # si riempie il vettore in posizione u con il valore di M(row, col)
            vect[int(u)] = M[row][col]
    filename = "Data/real_vectors/" + str(id_vent)
    # esporta il vettore
    np.save(filename, vect)
Esempio n. 3
0
def get_height(scaled_hmap, coord_regions):
    coord_regions = coord_regions.split("|")
    median_list = []
    for coord in coord_regions:
        coord = conversion.cast_coord_attr(coord)
        median_list.append(scaled_hmap[coord[0]][coord[1]])
    med = median(median_list)
    return med
Esempio n. 4
0
 def create_sparse(self, vect):
     M = np.zeros((91, 75), dtype=float)
     for u in self.G.nodes():
         regions = self.G.nodes[u]["coord_regions"].split("|")
         for reg in regions:
             reg_row, reg_col = conversion.cast_coord_attr(reg)
             M[reg_row][reg_col] = vect[int(u)]
     sparse_M = sparse.csr_matrix(M)
     return sparse_M
Esempio n. 5
0
def add_cities(G):
    # Estrapola dal file gml le coordinate e i nomi degli edificati
    city, names = mc.create_city_map()
    # Per ogni nodo, si va a prendere dalla matrice il corrispondente paese
    for u, data in G.nodes(data=True):
        for coords in data["coord_regions"].split("|"):
            coord_x, coord_y = conversion.cast_coord_attr(coords)
            G.node[u]['is_city'] = city[coord_x][coord_y]
            # Controllo fatto perché la matrice di default ha valore 0
            if not names[coord_x][coord_y] == 0:
                G.node[u]['city_names'] += str(names[coord_x][coord_y])
    return G
Esempio n. 6
0
def graph_to_UTM(G, filename):
    utm_map = np.zeros((ROWS, COLS), dtype=float)

    for u, data in G.nodes(data=True):
        for coords in data["coord_regions"].split("|"):
            coord_x, coord_y = conversion.cast_coord_attr(coords)
            utm_map[coord_x][coord_y] = data["priority"]
    # scrittura header
    with open(filename, 'w') as utmfile:
        for i in range(0, len(header)):
            utmfile.write(header[i] + "\n")

        for x in range(0, ROWS):
            for y in range(0, COLS):
                utmfile.write(str(utm_map[x][y]) + " ")
            utmfile.write("\n")
Esempio n. 7
0
def plot_3d_cmd(metric: str, id_vent: int, size: int, step: int):
    # Load dei grafi
    original_graph = utility.load_graph()
    immunological_graph = utility.load_graph(
        gexf_filename="immunological_graph.gexf")

    if metric == "precision":
        filename = "plot/" + str(id_vent) + "_" + str(size) + "_" + str(
            step) + "_precision3d.plt"
        if os.path.isfile(filename):
            x_coords, y_coords, original_list, trained_list = visualize.load_plot3D_from_file(
                filename)
        else:
            # Lista vents/nodes del sottografo
            id_nodes, id_vents = utility.get_node_vent_chessboard(
                id_vent, size, step)
            # Coords
            x_coords = []
            y_coords = []
            for id_node in id_nodes:
                x, y = conversion.cast_coord_attr(
                    original_graph.nodes[id_node]['coord_regions'])
                x_coords.append(x)
                y_coords.append(y)
            # Lista precision su grafo originale
            original_list = metrics.get_ppv_list(original_graph, id_vents)
            # Lista precision su grafo trained
            trained_list = metrics.get_ppv_list(immunological_graph, id_vents)
            # Salvataggio dei risultati su file
            visualize.save_plot3D_on_file(
                x_coords, y_coords, original_list, trained_list,
                "plot/" + str(id_vent) + "_" + str(size) + "_" + str(step) +
                "_precision3d.plt")

    elif metric == "recall":
        filename = "plot/" + str(id_vent) + "_" + str(size) + "_" + str(
            step) + "_recall3d.plt"
        if os.path.isfile(filename):
            x_coords, y_coords, original_list, trained_list = visualize.load_plot3D_from_file(
                filename)
        else:
            # Lista vents/nodes del sottografo
            id_nodes, id_vents = utility.get_node_vent_chessboard(
                id_vent, size, step)
            # Coords
            x_coords = []
            y_coords = []
            for id_node in id_nodes:
                x, y = conversion.cast_coord_attr(
                    original_graph.nodes[id_node]['coord_regions'])
                x_coords.append(x)
                y_coords.append(y)
            # Lista recall su grafo originale
            original_list = metrics.get_tpr_list(original_graph, id_vents)
            # Lista recall su grafo trained
            trained_list = metrics.get_tpr_list(immunological_graph, id_vents)
            # Salvataggio dei risultati su file
            visualize.save_plot3D_on_file(
                x_coords, y_coords, original_list, trained_list,
                "plot/" + str(id_vent) + "_" + str(size) + "_" + str(step) +
                "_recall3d.plt")

    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    ax.scatter(x_coords,
               y_coords,
               original_list,
               color='red',
               marker='X',
               s=50)
    ax.scatter(x_coords,
               y_coords,
               trained_list,
               color='blue',
               marker='D',
               s=50)

    for i in range(len(trained_list)):
        if trained_list[i] > original_list[i]:
            color = 'blue'
        else:
            color = 'red'

        ax.plot([x_coords[i], x_coords[i]], [y_coords[i], y_coords[i]],
                [original_list[i], trained_list[i]],
                color=color)

    plt.show()