def test_marginal_constraints(): d = dit.uniform_distribution(3, 2) d.make_dense() A, b = marginal_constraints(d, 2) A_ = np.array([ [ 1., 1., 1., 1., 1., 1., 1., 1.], [ 1., 1., 0., 0., 0., 0., 0., 0.], [ 0., 0., 1., 1., 0., 0., 0., 0.], [ 0., 0., 0., 0., 1., 1., 0., 0.], [ 0., 0., 0., 0., 0., 0., 1., 1.], [ 1., 0., 1., 0., 0., 0., 0., 0.], [ 0., 1., 0., 1., 0., 0., 0., 0.], [ 0., 0., 0., 0., 1., 0., 1., 0.], [ 0., 0., 0., 0., 0., 1., 0., 1.], [ 1., 0., 0., 0., 1., 0., 0., 0.], [ 0., 1., 0., 0., 0., 1., 0., 0.], [ 0., 0., 1., 0., 0., 0., 1., 0.], [ 0., 0., 0., 1., 0., 0., 0., 1.] ]) b_ = np.array([1] + [0.25] * 12) assert np.allclose(A, A_) assert np.allclose(b, b_)
def Or(k=2): """ [0] or [1] = [2] """ d = dit.uniform_distribution(k, ['01']) d = dit.distconst.modify_outcomes(d, lambda x: ''.join(x)) d = dit.insert_rvf(d, lambda x: '1' if any(map(bool, map(int, x))) else '0') return d
def test_rvfunctions_ints(): d = dit.uniform_distribution(2, 2) rvf = dit.RVFunctions(d) partition = [(d.outcomes[i],) for i in range(len(d))] mapping = rvf.from_partition(partition) d2 = dit.insert_rvf(d, mapping) outcomes = ((0,0,0), (0,1,1), (1,0,2), (1,1,3)) assert_equal(d2.outcomes, outcomes)
def test_rvfunctions_ints(): d = dit.uniform_distribution(2, 2) rvf = dit.RVFunctions(d) partition = [(d.outcomes[i], ) for i in range(len(d))] mapping = rvf.from_partition(partition) d2 = dit.insert_rvf(d, mapping) outcomes = ((0, 0, 0), (0, 1, 1), (1, 0, 2), (1, 1, 3)) assert_equal(d2.outcomes, outcomes)
def test_product_with_rvs2(): """ Test product_distribution() with an rvs specification. """ d = dit.example_dists.Xor() d_iid = dit.product_distribution(d, [[0, 1]]) d_truth = dit.uniform_distribution(2, ['01']) d_truth = dit.modify_outcomes(d_truth, lambda x: ''.join(x)) assert d_truth.is_approx_equal(d_iid)
def test_product(): """ Smoke test for product_distribution(). """ d = dit.example_dists.Xor() d_iid = dit.product_distribution(d) d_truth = dit.uniform_distribution(3, ['01']) d_truth = dit.modify_outcomes(d_truth, lambda x: ''.join(x)) assert d_truth.is_approx_equal(d_iid)
def test_product(): """ Smoke test for product_distribution(). """ d = dit.example_dists.Xor() d_iid = dit.product_distribution(d) d_truth = dit.uniform_distribution(3, ['01']) d_truth = dit.modify_outcomes(d_truth, lambda x: ''.join(x)) assert_true(d_truth.is_approx_equal(d_iid))
def test_product_with_rvs2(): """ Test product_distribution() with an rvs specification. """ d = dit.example_dists.Xor() d_iid = dit.product_distribution(d, [[0,1]]) d_truth = dit.uniform_distribution(2, ['01']) d_truth = dit.modify_outcomes(d_truth, lambda x: ''.join(x)) assert_true(d_truth.is_approx_equal(d_iid))
def test_insert_rvf2(): # Test multiple insertion. d = dit.uniform_distribution(2, 2) d = dit.modify_outcomes(d, lambda x: ''.join(map(str, x))) def xor(outcome): o = str(int(outcome[0] != outcome[1])) # Here we are returning 2 random variables return o*2 # We are also inserting two times simultaneously. d2 = dit.insert_rvf(d, [xor, xor]) outcomes = ('000000', '011111', '101111', '110000') assert_equal(d2.outcomes, outcomes)
def test_insert_rvf2(): # Test multiple insertion. d = dit.uniform_distribution(2, 2) d = dit.modify_outcomes(d, lambda x: ''.join(map(str, x))) def xor(outcome): o = str(int(outcome[0] != outcome[1])) # Here we are returning 2 random variables return o*2 # We are also inserting two times simultaneously. d2 = dit.insert_rvf(d, [xor, xor]) outcomes = ('000000', '011111', '101111', '110000') assert d2.outcomes == outcomes
def test_insert_rvf1(): # Test multiple insertion. d = dit.uniform_distribution(2, 2) def xor(outcome): o = int(outcome[0] != outcome[1]) # Here we are returning 2 random variables return (o, o) # We are also inserting two times simultaneously. d2 = dit.insert_rvf(d, [xor, xor]) outcomes = ((0, 0, 0, 0, 0, 0), (0, 1, 1, 1, 1, 1), (1, 0, 1, 1, 1, 1), (1, 1, 0, 0, 0, 0)) assert_equal(d2.outcomes, outcomes)
def test_insert_rvf1(): # Test multiple insertion. d = dit.uniform_distribution(2, 2) def xor(outcome): o = int(outcome[0] != outcome[1]) # Here we are returning 2 random variables return (o,o) # We are also inserting two times simultaneously. d2 = dit.insert_rvf(d, [xor, xor]) outcomes = ( (0, 0, 0, 0, 0, 0), (0, 1, 1, 1, 1, 1), (1, 0, 1, 1, 1, 1), (1, 1, 0, 0, 0, 0) ) assert_equal(d2.outcomes, outcomes)
def test_marginal_constraints(): d = dit.uniform_distribution(3, 2) d.make_dense() A, b = marginal_constraints(d, 2) A_ = np.array([[1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 1, 0, 0], [0, 0, 0, 0, 0, 0, 1, 1], [1, 0, 1, 0, 0, 0, 0, 0], [0, 1, 0, 1, 0, 0, 0, 0], [0, 0, 0, 0, 1, 0, 1, 0], [0, 0, 0, 0, 0, 1, 0, 1], [1, 0, 0, 0, 1, 0, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0], [0, 0, 1, 0, 0, 0, 1, 0], [0, 0, 0, 1, 0, 0, 0, 1]]) b_ = np.array([1] + [0.25] * 12) assert np.allclose(A, A_) assert np.allclose(b, b_)
def test_uniform_distribution(): pmf = np.array([1 / 4] * 4) dit.math.prng.seed(1) d = dit.uniform_distribution(2, 2) assert d.outcomes == ((0, 0), (0, 1), (1, 0), (1, 1)) assert np.allclose(d.pmf, pmf)
def test_uniform_distribution(): pmf = np.array([1 / 4] * 4) dit.math.prng.seed(1) d = dit.uniform_distribution(2, 2) assert_equal(d.outcomes, ((0, 0), (0, 1), (1, 0), (1, 1))) np.testing.assert_allclose(d.pmf, pmf)
def test_uniform_distribution(): pmf = np.array([1/4] * 4) dit.math.prng.seed(1) d = dit.uniform_distribution(2, 2) assert d.outcomes == ((0, 0), (0, 1), (1, 0), (1, 1)) assert np.allclose(d.pmf, pmf)
def test_uniform_distribution(): pmf = np.array([1/4] * 4) dit.math.prng.seed(1) d = dit.uniform_distribution(2, 2) assert_equal(d.outcomes, ((0, 0), (0, 1), (1, 0), (1, 1))) np.testing.assert_allclose(d.pmf, pmf)