CofeehousePy/deps/scikit-image/skimage/util/tests/test_map_array.py

56 lines
1.9 KiB
Python

import numpy as np
from skimage.util._map_array import map_array, ArrayMap
from skimage._shared import testing
from skimage._shared.testing import assert_array_equal
import pytest
def test_map_array_incorrect_output_shape():
labels = np.random.randint(0, 5, size=(24, 25))
out = np.empty((24, 24))
in_values = np.unique(labels)
out_values = np.random.random(in_values.shape).astype(out.dtype)
with testing.raises(ValueError):
map_array(labels, in_values, out_values, out=out)
def test_map_array_non_contiguous_output_array():
labels = np.random.randint(0, 5, size=(24, 25))
out = np.empty((24 * 3, 25 * 2))[::3, ::2]
in_values = np.unique(labels)
out_values = np.random.random(in_values.shape).astype(out.dtype)
with testing.raises(ValueError):
map_array(labels, in_values, out_values, out=out)
def test_arraymap_long_str():
labels = np.random.randint(0, 40, size=(24, 25))
in_values = np.unique(labels)
out_values = np.random.random(in_values.shape)
m = ArrayMap(in_values, out_values)
assert len(str(m).split('\n')) == m._max_str_lines + 2
def test_arraymap_update():
in_values = np.unique(np.random.randint(0, 200, size=5))
out_values = np.random.random(len(in_values))
m = ArrayMap(in_values, out_values)
image = np.random.randint(1, len(m), size=(512, 512))
assert np.all(m[image] < 1) # missing values map to 0.
m[1:] += 1
assert np.all(m[image] >= 1)
def test_arraymap_bool_index():
in_values = np.unique(np.random.randint(0, 200, size=5))
out_values = np.random.random(len(in_values))
m = ArrayMap(in_values, out_values)
image = np.random.randint(1, len(in_values), size=(512, 512))
assert np.all(m[image] < 1) # missing values map to 0.
positive = np.ones(len(m), dtype=bool)
positive[0] = False
m[positive] += 1
assert np.all(m[image] >= 1)