mirror of
https://github.com/wassname/scikit-image.git
synced 2026-06-27 21:08:24 +08:00
Changed max_edge in example/plot_rag.py
This commit is contained in:
@@ -9,32 +9,20 @@ weight of all the edges incident on it can be updated by a user defined
|
||||
function `weight_func`.
|
||||
|
||||
The default behaviour is to use the smaller edge weight incase of a conflict.
|
||||
THe example below also shows how to use a custom function to take the larger
|
||||
The example below also shows how to use a custom function to take the larger
|
||||
weight instead.
|
||||
|
||||
"""
|
||||
from skimage.graph import rag
|
||||
import networkx as nx
|
||||
from matplotlib import pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
|
||||
def max_edge(g, src, dst, neighbor):
|
||||
try:
|
||||
w1 = g.edge[src][neighbor]['weight']
|
||||
except KeyError:
|
||||
w1 = None
|
||||
|
||||
try:
|
||||
w2 = g.edge[dst][neighbor]['weight']
|
||||
except KeyError:
|
||||
w2 = None
|
||||
|
||||
if w1 is None:
|
||||
return w2
|
||||
elif w2 is None:
|
||||
return w1
|
||||
else:
|
||||
return max(w1, w2)
|
||||
def max_edge(g, src, dst, n):
|
||||
w1 = g[n].get(src, {'weight': -np.inf})['weight']
|
||||
w2 = g[n].get(dst, {'weight': -np.inf})['weight']
|
||||
return max(w1, w2)
|
||||
|
||||
|
||||
def display(g, title):
|
||||
|
||||
@@ -17,7 +17,7 @@ def min_weight(g, src, dst, n):
|
||||
src, dst : int
|
||||
The verices in `g` to be merged.
|
||||
n : int
|
||||
A neighbor of `src` or `dst` or both
|
||||
A neighbor of `src` or `dst` or both.
|
||||
|
||||
Returns
|
||||
-------
|
||||
|
||||
@@ -23,10 +23,14 @@ def test_rag_merge():
|
||||
|
||||
gc = g.copy()
|
||||
|
||||
# We merge nodes and ensure that the minimum weight is chosen
|
||||
# when there is a conflict.
|
||||
g.merge_nodes(0, 2)
|
||||
assert g.edge[1][2]['weight'] == 10
|
||||
assert g.edge[2][3]['weight'] == 30
|
||||
|
||||
# We specify `max_edge` as `weight_func` as ensure that maximum
|
||||
# weight is chosen in case on conflict
|
||||
gc.merge_nodes(0, 2, weight_func=max_edge)
|
||||
assert gc.edge[1][2]['weight'] == 20
|
||||
assert gc.edge[2][3]['weight'] == 40
|
||||
|
||||
Reference in New Issue
Block a user