stable-diffusion-webui-dump.../scripts/lib/test_colorizer.py

248 lines
9.5 KiB
Python

import unittest
import numpy as np
import numpy.testing as npt
import colorizer as C
class Test_create_convert_linear(unittest.TestCase):
def test_create_convert_linear1(self):
fn = C.create_convert_linear(0.0, 1.0)
# in
a1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0])
e1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
e2 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0])
e3 = np.array([-1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0])
e4 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
def test_create_convert_linear2(self):
fn = C.create_convert_linear(1.0, 2.0)
# in
a1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]) + 1.0
e1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0]) + 1.0
e2 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) + 1.0
e3 = np.array([-1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) + 1.0
e4 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
def test_create_convert_linear3(self):
fn = C.create_convert_linear(-1.0, 1.0)
# in
a1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]) * 2.0 - 1.0
e1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0]) * 2.0 - 1.0
e2 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) * 2.0 - 1.0
e3 = np.array([-1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) * 2.0 - 1.0
e4 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
def test_create_convert_linear4(self):
fn = C.create_convert_linear(-2.0, -1.0)
# in
a1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]) - 2.0
e1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0]) - 2.0
e2 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) - 2.0
e3 = np.array([-1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) - 2.0
e4 = np.array([-1.0, -1.0, -1.0, -1.0, -1.0, -0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
class Test_create_convert_linear_abs(unittest.TestCase):
def test_create_convert_linear_abs1(self):
fn = C.create_convert_linear_abs(0.0, 1.0)
# in
a1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0])
e1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
e2 = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.75, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0])
e3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0])
e4 = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
def test_create_convert_linear_abs2(self):
fn = C.create_convert_linear_abs(1.0, 2.0)
# in
a1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]) + 1.0
e1 = np.array([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0]) + 1.0
e2 = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.75, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) + 1.0
e3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) + 1.0
e4 = np.array([ 0.0, 0.0, 0.0, 0.0, 0.0, 0.25, 0.5, 0.75, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
def test_create_convert_linear_abs3(self):
fn = C.create_convert_linear_abs(-1.0, 1.0)
# in
a1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
e1 = np.array([ 1.0, 0.75, 0.5, 0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0])
e2 = np.array([ 1.0, 1.0, 1.0, 1.0, 1.0, 0.5, 0.0, 0.5, 1.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([-1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0])
e3 = np.array([ 1.0, 0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-3.0, -2.5, -2.0, -1.5, -1.0, -0.5, 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0])
e4 = np.array([ 1.0, 1.0, 1.0, 1.0, 1.0, 0.5, 0.0, 0.5, 1.0, 1.0, 1.0, 1.0, 1.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
def test_create_convert_linear_abs4(self):
fn = C.create_convert_linear_abs(-2.0, -1.0)
r = lambda x: list(reversed(x))
# in
a1 = np.array( [ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]) - 2.0
e1 = np.array(r([ 0.0, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875, 1.0]))
f1 = fn(a1)
npt.assert_equal(f1, e1)
# lo-in
a2 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0]) - 2.0
e2 = np.array([ 1.0, 1.0, 1.0, 1.0, 1.0, 0.75, 0.5, 0.25, 0.0])
f2 = fn(a2)
npt.assert_equal(f2, e2)
# in-hi
a3 = np.array([ 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) - 2.0
e3 = np.array([ 1.0, 0.75, 0.5, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0])
f3 = fn(a3)
npt.assert_equal(f3, e3)
# lo-hi
a4 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0]) - 2.0
e4 = np.array([ 1.0, 1.0, 1.0, 1.0, 1.0, 0.75, 0.5, 0.25, 0.0, 0.0, 0.0, 0.0, 0.0])
f4 = fn(a4)
npt.assert_equal(f4, e4)
class Test_vectorize_custom(unittest.TestCase):
def test_vectorize_custom1(self):
fn = np.vectorize(lambda x: np.abs(x), otypes=[np.float32])
a1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
e1 = np.array([ 1.0, 0.75, 0.5, 0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
def test_vectorize_custom2(self):
sn = "abs(x)"
fn = np.vectorize(eval(f"lambda x: {sn}"), otypes=[np.float32])
a1 = np.array([-1.0, -0.75, -0.5, -0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
e1 = np.array([ 1.0, 0.75, 0.5, 0.25, 0.0, 0.25, 0.5, 0.75, 1.0])
f1 = fn(a1)
npt.assert_equal(f1, e1)
if __name__ == '__main__':
import unittest
unittest.main()