[英]Why does my distance matrix between leaf nodes from a .gv file result in an empty dictionary?
How to get a distance matrix between leaf nodes from a.gv file?如何从 a.gv 文件中获取叶节点之间的距离矩阵? I'm trying to obtain the shortest distance between leaves in an unweighted graph.
我正在尝试获得未加权图中叶子之间的最短距离。
I have tried this:我试过这个:
def compute_distance_matrix(graph):
leaf_nodes = [node for node in graph.nodes() if graph.degree(node) == 1]
leaf_labels = [node.split('s')[1] for node in leaf_nodes]
distance_matrix = {}
for i, node1 in enumerate(leaf_nodes):
for j, node2 in enumerate(leaf_nodes[i+1:], i+1):
if nx.has_path(graph, node1, node2):
distance = nx.shortest_path_length(graph, node1, node2)
distance_matrix[(leaf_labels[i], leaf_labels[j])] = distance
elif graph.has_edge(node1, node2):
distance_matrix[(leaf_labels[i], leaf_labels[j])] = 1
return distance_matrix
but it returns an empty dict.但它返回一个空的字典。
def compute_distance_matrix(nw):
tree = Tree(nw)
leaves = tree.get_leaves()
leaf_labels = [leaf.name for leaf in leaves]
distance_matrix = {}
for i, node1 in enumerate(leaves):
for j, node2 in enumerate(leaves[i+1:], i+1):
distance = node1.get_distance(node2)
distance_matrix[(leaf_labels[i], leaf_labels[j])] = distance
return distance_matrix
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.