def set_up_graph(link): """ The function used to convert online json file to adjacency graph Parameters: link (string): the link for online json file Returns: Graph: graph with the information mean: the mean value used for partition """ link = "https://people.csail.mit.edu/ddeford//COUNTY/COUNTY_13.json" r = requests.get(link) data = json.loads(r.content) g = json_graph.adjacency_graph(data) graph = Graph(g) graph.issue_warnings() horizontal = [] node_degree = [] # find the node with degree 1 or 2 and remove it for node in graph.nodes(): graph.nodes[node]["pos"] = [ graph.node[node]['C_X'], graph.node[node]['C_Y'] ] horizontal.append(graph.node[node]['C_X']) if graph.degree(node) == 1 or graph.degree(node) == 2: node_degree.append(node) # remove node with degree 1 or 2 since it will impact the outcome of graph for i in node_degree: graph.remove_node(i) # calculate mean value for partition mean = sum(horizontal) / len(horizontal) return graph, mean
def graph_from_url(): link = input("Put graph link: ") r = requests.get(link) data = json.loads(r.content) g = json_graph.adjacency_graph(data) graph = Graph(g) graph.issue_warnings() return graph
def graph_from_url(link): r = requests.get(url=link) data = json.loads(r.content) g = json_graph.adjacency_graph(data) graph = Graph(g) graph.issue_warnings() pos = {} for node in graph.nodes(): pos[node] = [graph.node[node]['C_X'], graph.node[node]['C_Y']] return graph
def graph_from_url(): # link = input("Put graph link: ") link = "https://people.csail.mit.edu/ddeford//COUNTY/COUNTY_37.json" # County # link = "https://people.csail.mit.edu/ddeford//COUSUB/COUSUB_37.json" # COUNTY SUB r = requests.get(link) data = json.loads(r.content) g = json_graph.adjacency_graph(data) graph = Graph(g) graph.issue_warnings() return graph
def graph_from_url_processing(link): r = requests.get(url=link) data = json.loads(r.content) g = json_graph.adjacency_graph(data) graph = Graph(g) graph.issue_warnings() for node in graph.nodes(): graph.nodes[node]["pos"] = [graph.nodes[node]['C_X'], graph.nodes[node]['C_Y'] ] deg_one_nodes = [] for v in graph: if graph.degree(v) == 1: deg_one_nodes.append(v) for node in deg_one_nodes: graph.remove_node(node) return graph
# # # def cal_distance(dual, dual_list, face): # distance = math.inf # for s in dual_list: # distance = min(distance, distance_in_D(dual, face, s)) # return distance # link = input("Put graph link: ") # link = "https://people.csail.mit.edu/ddeford//COUNTY/COUNTY_23.json" link = "https://people.csail.mit.edu/ddeford//COUNTY/COUNTY_13.json" r = requests.get(link) data = json.loads(r.content) g = json_graph.adjacency_graph(data) graph = Graph(g) graph.issue_warnings() horizontal = [] node_degree_1 = [] # for x in graph.nodes(): # graph.nodes[x]["pos"] = np.array(x[0], x[1]) for node in graph.nodes(): graph.nodes[node]["pos"] = [ graph.node[node]['C_X'], graph.node[node]['C_Y'] ] horizontal.append(graph.node[node]['C_X']) if graph.degree(node) == 1 or graph.degree(node) == 2: node_degree_1.append(node) for i in node_degree_1: graph.remove_node(i)