def test_simplex_inside(): # assert inside simplex identical for i in range(100): x = np.random.rand(100) x = x / np.sum(x) x_proj, d_0, theta = simplex_proj(x) assert_almost_equal(x, x_proj, decimal=8) assert d_0 == l0_norm(x_proj)
def test_ball_inside(): # assert inside B(z) identical for i in range(100): radius = 10 x = np.random.rand(100) x = x / np.sum(np.abs(x)) * radius x_proj, d_0, theta = l1_ball_proj(x, radius) assert_almost_equal(x, x_proj, decimal=8) assert 100 == l0_norm(x_proj)
def test_ball_correct_x(): x = np.array([1.1, 0.0]) x_proj, d_0, theta = l1_ball_proj(x, 1) assert_almost_equal(np.array([1.0, 0.0]), x_proj, decimal=8) assert d_0 == l0_norm(x_proj)
def test_norm_zeros(): # norm_0(0) == 0 x = np.zeros(3) norm = l0_norm(x) assert norm == 0.0
def test_simplex_correct_endpoint_x(): x = np.array([1.1, 0.0]) x_proj, d_0, theta = simplex_proj(x) assert_almost_equal(np.array([1.0, 0.0]), x_proj, decimal=8) assert d_0 == l0_norm(x_proj)
def test_simplex_exterior_to_frontier(): # exterior point projects to frontier x = np.array([0.6, 1.1]) x_proj, d_0, theta = simplex_proj(x) assert_almost_equal(np.sum(x_proj), 1.0, decimal=8) assert d_0 == l0_norm(x_proj)
def test_simplex_norm_0(): x = np.array([1.1, 0.6]) x_proj, d_0, theta = simplex_proj(x) assert d_0 == l0_norm(x_proj)
def test_norm_small(): # norm_0(eps*1) == len(1) x = 1e-12 * np.ones(3) norm = l0_norm(x) assert norm == len(x)
def test_norm_rand(): # norm_0(rand(3)) == 3 (a.s.) x = np.random.rand(3) norm = l0_norm(x) assert norm == len(x)
def test_norm_ones(): # norm_0(1) == len(1) x = np.ones(3) norm = l0_norm(x) assert norm == len(x)