PEP8 fixes; remove unneeded pyamg import; add data shape check

This commit is contained in:
Josh Warner (Mac)
2013-04-11 14:02:10 -05:00
parent 1edbf3e6f4
commit f1ef7d5da2
@@ -1,15 +1,11 @@
import numpy as np
from skimage.segmentation import random_walker
try:
import pyamg
amg_loaded = True
except ImportError:
amg_loaded = False
def make_2d_syntheticdata(lx, ly=None):
if ly is None:
ly = lx
np.random.seed(1234)
data = np.zeros((lx, ly)) + 0.1 * np.random.randn(lx, ly)
small_l = int(lx / 5)
data[lx / 2 - small_l:lx / 2 + small_l,
@@ -29,6 +25,7 @@ def make_3d_syntheticdata(lx, ly=None, lz=None):
ly = lx
if lz is None:
lz = lx
np.random.seed(1234)
data = np.zeros((lx, ly, lz)) + 0.1 * np.random.randn(lx, ly, lz)
small_l = int(lx / 5)
data[lx / 2 - small_l:lx / 2 + small_l,
@@ -40,8 +37,8 @@ def make_3d_syntheticdata(lx, ly=None, lz=None):
# make a hole
hole_size = np.max([1, small_l / 8])
data[lx / 2 - small_l,
ly / 2 - hole_size:ly / 2 + hole_size,\
lz / 2 - hole_size:lz / 2 + hole_size] = 0
ly / 2 - hole_size:ly / 2 + hole_size,
lz / 2 - hole_size:lz / 2 + hole_size] = 0
seeds = np.zeros_like(data)
seeds[lx / 5, ly / 5, lz / 5] = 1
seeds[lx / 2 + small_l / 4, ly / 2 - small_l / 4, lz / 2 - small_l / 4] = 2
@@ -55,17 +52,18 @@ def test_2d_bf():
labels_bf = random_walker(data, labels, beta=90, mode='bf')
assert (labels_bf[25:45, 40:60] == 2).all()
full_prob_bf = random_walker(data, labels, beta=90, mode='bf',
return_full_prob=True)
return_full_prob=True)
assert (full_prob_bf[1, 25:45, 40:60] >=
full_prob_bf[0, 25:45, 40:60]).all()
full_prob_bf[0, 25:45, 40:60]).all()
# Now test with more than two labels
labels[55, 80] = 3
full_prob_bf = random_walker(data, labels, beta=90, mode='bf',
return_full_prob=True)
return_full_prob=True)
assert (full_prob_bf[1, 25:45, 40:60] >=
full_prob_bf[0, 25:45, 40:60]).all()
full_prob_bf[0, 25:45, 40:60]).all()
assert len(full_prob_bf) == 3
def test_2d_cg():
lx = 70
ly = 100
@@ -73,9 +71,9 @@ def test_2d_cg():
labels_cg = random_walker(data, labels, beta=90, mode='cg')
assert (labels_cg[25:45, 40:60] == 2).all()
full_prob = random_walker(data, labels, beta=90, mode='cg',
return_full_prob=True)
return_full_prob=True)
assert (full_prob[1, 25:45, 40:60] >=
full_prob[0, 25:45, 40:60]).all()
full_prob[0, 25:45, 40:60]).all()
return data, labels_cg
@@ -86,9 +84,9 @@ def test_2d_cg_mg():
labels_cg_mg = random_walker(data, labels, beta=90, mode='cg_mg')
assert (labels_cg_mg[25:45, 40:60] == 2).all()
full_prob = random_walker(data, labels, beta=90, mode='cg_mg',
return_full_prob=True)
return_full_prob=True)
assert (full_prob[1, 25:45, 40:60] >=
full_prob[0, 25:45, 40:60]).all()
full_prob[0, 25:45, 40:60]).all()
return data, labels_cg_mg
@@ -148,11 +146,10 @@ def test_3d_inactive():
def test_multispectral_2d():
lx, ly = 70, 100
data, labels = make_2d_syntheticdata(lx, ly)
data2 = data.copy()
data.shape += (1,)
data = data.repeat(2, axis=2) # Result should be identical
data = data[..., np.newaxis].repeat(2, axis=-1) # Expect identical output
multi_labels = random_walker(data, labels, mode='cg', multichannel=True)
single_labels = random_walker(data2, labels, mode='cg')
assert data[..., 0].shape == labels.shape
single_labels = random_walker(data[..., 0], labels, mode='cg')
assert (multi_labels.reshape(labels.shape)[25:45, 40:60] == 2).all()
return data, multi_labels, single_labels, labels
@@ -161,14 +158,15 @@ def test_multispectral_3d():
n = 30
lx, ly, lz = n, n, n
data, labels = make_3d_syntheticdata(lx, ly, lz)
data.shape += (1,)
data = data.repeat(2, axis=3) # Result should be identical
data = data[..., np.newaxis].repeat(2, axis=-1) # Expect identical output
multi_labels = random_walker(data, labels, mode='cg', multichannel=True)
assert data[..., 0].shape == labels.shape
single_labels = random_walker(data[..., 0], labels, mode='cg')
assert (multi_labels.reshape(labels.shape)[13:17, 13:17, 13:17] == 2).all()
assert (single_labels.reshape(labels.shape)[13:17, 13:17, 13:17] == 2).all()
return data, multi_labels, single_labels, labels
if __name__ == '__main__':
from numpy import testing
testing.run_module_suite()