Networkx: utilizar la función común para el cálculo del peso del borde

Supongamos que tengo una función euc_2d(graph, n1, n2) que calcula la distancia euclidiana entre dos nodos del mismo gráfico. Cada nodo tiene un pos=(x,y) dado que se asigna en la creación del gráfico.

NetworkX proporciona una función para obtener el peso total de todos los bordes de un gráfico, a saber, graph.size(weight='weight') . El problema con este método es que asume que cada vez que agrego un borde, debo asignar explícitamente el peso de borde apropiado como graph.add_edge(u,v,weight=?) Usando una función lambda, por ejemplo.

Sin embargo, esto es muy inconveniente (y detallado) ya que sigo agregando y eliminando bordes en el gráfico todo el tiempo.

Entonces, ¿hay alguna manera en que puedo decirle a NetworkX que use el euc_2d() transparente cada vez que pregunto el peso total del gráfico?

Ni graph.size ni graph.add_edge usan una función para evaluar el peso, solo almacenan valores con una clave dada. Para facilitar el trabajo, simplemente defina una función para agregar un borde con el peso apropiado:

 def add_euc2d_edge(graph, u, v): graph.add_edge(u, v, weight=euc_2d(graph, u, v))