def test_itc1(): """ Test against standard result. """ itc = IMI.intrinsic_total_correlation(dist1, [[0], [1]], [2]) assert itc == pytest.approx(0) itc = IMI.intrinsic_total_correlation(dist1, [[0], [2]], [1]) assert itc == pytest.approx(0) itc = IMI.intrinsic_total_correlation(dist1, [[1], [2]], [0]) assert itc == pytest.approx(0) itc = IMI.intrinsic_total_correlation(dist3, [[0,1], [2]], [3, 4]) assert itc == pytest.approx(0)
def test_itc2(): """ Test against standard result, with rv names. """ itc = IMI.intrinsic_total_correlation(dist2, ['X', 'Y'], 'Z') assert itc == pytest.approx(0) itc = IMI.intrinsic_total_correlation(dist2, ['X', 'Z'], 'Y') assert itc == pytest.approx(0) itc = IMI.intrinsic_total_correlation(dist2, ['Y', 'Z'], 'X') assert itc == pytest.approx(0) itc = IMI.intrinsic_total_correlation(dist4, ['VW', 'X'], 'YZ') assert itc == pytest.approx(0)
def test_constructor(): """ Test the generic constructor. """ test = IMI.intrinsic_mutual_information_constructor(total_correlation).functional() itc = IMI.intrinsic_total_correlation(dist1, [[0], [1]], [2], bound=3) itc2 = test(dist1, [[0], [1]], [2], bound=3) assert itc == pytest.approx(itc2, abs=1e-4)
def test_bounds(dist): """ I[X:Y v Z] <= I[X:Y] I[X:Y v Z] <= I[X:Y|Z] """ imi = IMI.intrinsic_total_correlation(dist, [[0], [1]], [2]) mi = total_correlation(dist, [[0], [1]]) cmi = total_correlation(dist, [[0], [1]], [2]) assert imi <= mi + 1e-10 assert imi <= cmi + 1e-10
def test_itc4(): """ Test multivariate, with rv names """ itc = IMI.intrinsic_total_correlation(dist6, ['W', 'X', 'Y'], 'Z') assert itc == pytest.approx(0)
def test_itc3(): """ Test multivariate """ itc = IMI.intrinsic_total_correlation(dist5, [[0], [1], [2]], [3]) assert itc == pytest.approx(0)
def test_1(dist, val): """ Test against known values. """ imi = IMI.intrinsic_total_correlation(dist, [[0], [1]], [2]) assert imi == pytest.approx(val, abs=1e-5)
def test_imi_fail(): """ Test that things fail when not provided with a conditional variable. """ with pytest.raises(ditException): IMI.intrinsic_total_correlation(dist1, [[0], [1], [2]])