def test_algo_euler4(self): fLOG (__file__, self._testMethodName, OutputPrint = __name__ == "__main__") folder = os.path.join(os.path.abspath(os.path.dirname(__file__)),"temp_rues5") if not os.path.exists(folder) : os.mkdir(folder) edges = get_data(whereTo=folder) edges = edges[:3] vertices = { } for e in edges : for i in range(0,2): _ = e[i] p = e[i+3] vertices[_] = p connex = connected_components(edges) v = [ v for k,v in connex.items() ] mi,ma = min(v), max(v) while mi != ma : edges.append( (mi, ma, 2, vertices[mi], vertices[ma], distance_haversine( * (vertices[mi] + vertices[ma]) ) ) ) connex = connected_components(edges) v = [ v for k,v in connex.items() ] mi,ma = min(v), max(v) if __name__ == "__main__": import matplotlib.pyplot as plt import networkx as nx fig = plt.figure() G = nx.Graph() for e in edges : a,b = e[:2] G.add_edge(a,b) pos = nx.spring_layout(G) nx.draw(G,pos,node_color='#A0CBE2') plt.savefig(os.path.join(folder, "graph1.png")) added = eulerien_extension( edges, fLOG=lambda *l : None, distance = distance_paris) if __name__ == "__main__": for e in added : a,b = e[:2] G.add_edge(a,b) fig = plt.figure() pos = nx.spring_layout(G) deg = graph_degree(edges + added) #labels={ v:"{0}".format(deg[v]) for v in G.nodes() } nx.draw(G,pos,node_color='#A0CBE2'#,labels=labels ) plt.savefig(os.path.join(folder, "graph2.png")) path = euler_path(edges, added) all = edges + added fLOG(len(all),len(path))
def test_euler(self): fLOG (__file__, self._testMethodName, OutputPrint = __name__ == "__main__") folder = os.path.join(os.path.abspath(os.path.dirname(__file__)),"temp_rues_euler") if not os.path.exists(folder) : os.mkdir(folder) edges = get_data(whereTo=folder) data = pyensae.download_data("added.zip", whereTo=folder) with open(data[0],"r") as f : text = f.read() added_edges = eval(text) path = euler_path(edges, added_edges) fLOG(len(path), len(edges) + len(added_edges)) for p in path[:5]: fLOG(len(p),p) for p in path[-5:]: fLOG(len(p),p)
def test_euler(self): fLOG(__file__, self._testMethodName, OutputPrint=__name__ == "__main__") folder = os.path.join(os.path.abspath(os.path.dirname(__file__)), "temp_rues_euler") if not os.path.exists(folder): os.mkdir(folder) edges = get_data(whereTo=folder, fLOG=fLOG) data = download_data("added.zip", whereTo=folder, fLOG=fLOG) with open(data[0], "r") as f: text = f.read() added_edges = eval(text) path = euler_path(edges, added_edges) fLOG(len(path), len(edges) + len(added_edges)) for p in path[:5]: fLOG(len(p), p) for p in path[-5:]: fLOG(len(p), p)
def test_algo_euler4(self): fLOG(__file__, self._testMethodName, OutputPrint=__name__ == "__main__") folder = os.path.join(os.path.abspath(os.path.dirname(__file__)), "temp_algo_euler4") if not os.path.exists(folder): os.mkdir(folder) edges = get_data(whereTo=folder, fLOG=fLOG) edges = edges[:3] vertices = {} for e in edges: for i in range(0, 2): _ = e[i] p = e[i + 3] vertices[_] = p connex = connected_components(edges) v = [v for k, v in connex.items()] mi, ma = min(v), max(v) while mi != ma: edges.append((mi, ma, 2, vertices[mi], vertices[ma], distance_haversine(*(vertices[mi] + vertices[ma])))) connex = connected_components(edges) v = [v for k, v in connex.items()] mi, ma = min(v), max(v) fix_tkinter_issues_virtualenv() import matplotlib.pyplot as plt import networkx as nx plt.figure() G = nx.Graph() for e in edges: a, b = e[:2] G.add_edge(a, b) pos = nx.spring_layout(G) nx.draw(G, pos, node_color='#A0CBE2') plt.savefig(os.path.join(folder, "graph1.png")) plt.close('all') added = eulerien_extension(edges, fLOG=lambda *l: None, distance=distance_paris) for e in added: a, b = e[:2] G.add_edge(a, b) plt.figure() pos = nx.spring_layout(G) graph_degree(edges + added) #labels={ v:"{0}".format(deg[v]) for v in G.nodes() } nx.draw( G, pos, node_color='#A0CBE2' # ,labels=labels ) plt.savefig(os.path.join(folder, "graph2.png")) plt.close('all') path = euler_path(edges, added) alls = edges + added fLOG(len(alls), len(path))