Testing automatically all the docstring written in each functions of this module : Trying: import numpy as np Expecting nothing ok Trying: klBern_vect = np.vectorize(klBern) Expecting nothing ok Trying: klBern_vect([0.1, 0.5, 0.9], 0.2) # doctest: +ELLIPSIS Expecting: array([0.036..., 0.223..., 1.145...]) ok Trying: klBern_vect(0.4, [0.2, 0.3, 0.4]) # doctest: +ELLIPSIS Expecting: array([0.104..., 0.022..., 0...]) ok Trying: klBern_vect([0.1, 0.5, 0.9], [0.2, 0.3, 0.4]) # doctest: +ELLIPSIS Expecting: array([0.036..., 0.087..., 0.550...]) ok Trying: def klGauss_vect(xs, y, sig2x=0.25): # vectorized for first input only return np.array([klGauss(x, y, sig2x) for x in xs]) Expecting nothing ok Trying: klGauss_vect([-1, 0, 1], 0.1) # doctest: +ELLIPSIS Expecting: array([2.42, 0.02, 1.62]) ok Trying: klBern(0.5, 0.5) Expecting: 0.0 ok Trying: klBern(0.1, 0.9) # doctest: +ELLIPSIS Expecting: 1.757779... ok Trying: klBern(0.9, 0.1) # And this KL is symmetric # doctest: +ELLIPSIS Expecting: 1.757779... ok Trying: klBern(0.4, 0.5) # doctest: +ELLIPSIS Expecting: 0.020135... ok Trying: klBern(0.01, 0.99) # doctest: +ELLIPSIS Expecting: 4.503217... ok Trying: klBern(0, 1) # Should be +inf, but 0 --> eps, 1 --> 1 - eps # doctest: +ELLIPSIS Expecting: 34.539575... ok Trying: klBin(0.5, 0.5, 10) Expecting: 0.0 ok Trying: klBin(0.1, 0.9, 10) # doctest: +ELLIPSIS Expecting: 17.57779... ok Trying: klBin(0.9, 0.1, 10) # And this KL is symmetric # doctest: +ELLIPSIS Expecting: 17.57779... ok Trying: klBin(0.4, 0.5, 10) # doctest: +ELLIPSIS Expecting: 0.20135... ok Trying: klBin(0.01, 0.99, 10) # doctest: +ELLIPSIS Expecting: 45.03217... ok Trying: klBin(0, 1, 10) # Should be +inf, but 0 --> eps, 1 --> 1 - eps # doctest: +ELLIPSIS Expecting: 345.39575... ok Trying: klExp(3, 3) Expecting: 0.0 ok Trying: klExp(3, 6) # doctest: +ELLIPSIS Expecting: 0.193147... ok Trying: klExp(1, 2) # Only the proportion between x and y is used # doctest: +ELLIPSIS Expecting: 0.193147... ok Trying: klExp(2, 1) # And this KL is non-symmetric # doctest: +ELLIPSIS Expecting: 0.306852... ok Trying: klExp(4, 2) # Only the proportion between x and y is used # doctest: +ELLIPSIS Expecting: 0.306852... ok Trying: klExp(6, 8) # doctest: +ELLIPSIS Expecting: 0.037682... ok Trying: klExp(-3, 2) Expecting: inf ok Trying: klExp(3, -2) Expecting: inf ok Trying: klExp(-3, -2) Expecting: inf ok Trying: klGamma(3, 3) Expecting: 0.0 ok Trying: klGamma(3, 6) # doctest: +ELLIPSIS Expecting: 0.193147... ok Trying: klGamma(1, 2) # Only the proportion between x and y is used # doctest: +ELLIPSIS Expecting: 0.193147... ok Trying: klGamma(2, 1) # And this KL is non-symmetric # doctest: +ELLIPSIS Expecting: 0.306852... ok Trying: klGamma(4, 2) # Only the proportion between x and y is used # doctest: +ELLIPSIS Expecting: 0.306852... ok Trying: klGamma(6, 8) # doctest: +ELLIPSIS Expecting: 0.037682... ok Trying: klGamma(-3, 2) Expecting: inf ok Trying: klGamma(3, -2) Expecting: inf ok Trying: klGamma(-3, -2) Expecting: inf ok Trying: klGauss(3, 3) Expecting: 0.0 ok Trying: klGauss(3, 6) Expecting: 18.0 ok Trying: klGauss(1, 2) Expecting: 2.0 ok Trying: klGauss(2, 1) # And this KL is symmetric Expecting: 2.0 ok Trying: klGauss(4, 2) Expecting: 8.0 ok Trying: klGauss(6, 8) Expecting: 8.0 ok Trying: klGauss(-3, 2) Expecting: 50.0 ok Trying: klGauss(3, -2) Expecting: 50.0 ok Trying: klGauss(-3, -2) Expecting: 2.0 ok Trying: klGauss(3, 2) Expecting: 2.0 ok Trying: klGauss(3, 3, sig2x=10) Expecting: 0.0 ok Trying: klGauss(3, 6, sig2x=10) Expecting: 0.45 ok Trying: klGauss(1, 2, sig2x=10) Expecting: 0.05 ok Trying: klGauss(2, 1, sig2x=10) # And this KL is symmetric Expecting: 0.05 ok Trying: klGauss(4, 2, sig2x=10) Expecting: 0.2 ok Trying: klGauss(6, 8, sig2x=10) Expecting: 0.2 ok Trying: klGauss(0, 0, sig2x=0.25, sig2y=0.5) # doctest: +ELLIPSIS Expecting: -0.0284... ok Trying: klGauss(0, 0, sig2x=0.25, sig2y=1.0) # doctest: +ELLIPSIS Expecting: 0.2243... ok Trying: klGauss(0, 0, sig2x=0.5, sig2y=0.25) # not symmetric here! # doctest: +ELLIPSIS Expecting: 1.1534... ok Trying: klGauss(0, 1, sig2x=0.25, sig2y=0.5) # doctest: +ELLIPSIS Expecting: 0.9715... ok Trying: klGauss(0, 1, sig2x=0.25, sig2y=1.0) # doctest: +ELLIPSIS Expecting: 0.7243... ok Trying: klGauss(0, 1, sig2x=0.5, sig2y=0.25) # not symmetric here! # doctest: +ELLIPSIS Expecting: 3.1534... ok Trying: klGauss(1, 0, sig2x=0.25, sig2y=0.5) # doctest: +ELLIPSIS Expecting: 0.9715... ok Trying: klGauss(1, 0, sig2x=0.25, sig2y=1.0) # doctest: +ELLIPSIS Expecting: 0.7243... ok Trying: klGauss(1, 0, sig2x=0.5, sig2y=0.25) # not symmetric here! # doctest: +ELLIPSIS Expecting: 3.1534... ok Trying: klNegBin(0.5, 0.5) Expecting: 0.0 ok Trying: klNegBin(0.1, 0.9) # doctest: +ELLIPSIS Expecting: -0.711611... ok Trying: klNegBin(0.9, 0.1) # And this KL is non-symmetric # doctest: +ELLIPSIS Expecting: 2.0321564... ok Trying: klNegBin(0.4, 0.5) # doctest: +ELLIPSIS Expecting: -0.130653... ok Trying: klNegBin(0.01, 0.99) # doctest: +ELLIPSIS Expecting: -0.717353... ok Trying: klBern(0, 1) # Should be +inf, but 0 --> eps, 1 --> 1 - eps # doctest: +ELLIPSIS Expecting: 34.539575... ok Trying: klNegBin(0.5, 0.5, r=2) Expecting: 0.0 ok Trying: klNegBin(0.1, 0.9, r=2) # doctest: +ELLIPSIS Expecting: -0.832991... ok Trying: klNegBin(0.1, 0.9, r=4) # doctest: +ELLIPSIS Expecting: -0.914890... ok Trying: klNegBin(0.9, 0.1, r=2) # And this KL is non-symmetric # doctest: +ELLIPSIS Expecting: 2.3325528... ok Trying: klNegBin(0.4, 0.5, r=2) # doctest: +ELLIPSIS Expecting: -0.154572... ok Trying: klNegBin(0.01, 0.99, r=2) # doctest: +ELLIPSIS Expecting: -0.836257... ok Trying: klPoisson(3, 3) Expecting: 0.0 ok Trying: klPoisson(2, 1) # doctest: +ELLIPSIS Expecting: 0.386294... ok Trying: klPoisson(1, 2) # And this KL is non-symmetric # doctest: +ELLIPSIS Expecting: 0.306852... ok Trying: klPoisson(3, 6) # doctest: +ELLIPSIS Expecting: 0.920558... ok Trying: klPoisson(6, 8) # doctest: +ELLIPSIS Expecting: 0.273907... ok Trying: klPoisson(1, 0) # Should be +inf, but 0 --> eps, 1 --> 1 - eps # doctest: +ELLIPSIS Expecting: 33.538776... ok Trying: klPoisson(0, 0) Expecting: 0.0 ok Trying: x, d = 0.9, 0.2 # mean x, exploration term d Expecting nothing ok Trying: upperbound = min(1., klucbGauss(x, d, sig2x=0.25)) # variance 1/4 for [0,1] bounded distributions Expecting nothing ok Trying: upperbound # doctest: +ELLIPSIS Expecting: 1.0 ok Trying: klucb(x, d, klBern, upperbound, lowerbound=0, precision=1e-3, max_iterations=10) # doctest: +ELLIPSIS Expecting: 0.9941... ok Trying: klucb(x, d, klBern, upperbound, lowerbound=0, precision=1e-6, max_iterations=10) # doctest: +ELLIPSIS Expecting: 0.994482... ok Trying: klucb(x, d, klBern, upperbound, lowerbound=0, precision=1e-3, max_iterations=50) # doctest: +ELLIPSIS Expecting: 0.9941... ok Trying: klucb(x, d, klBern, upperbound, lowerbound=0, precision=1e-6, max_iterations=100) # more and more precise! # doctest: +ELLIPSIS Expecting: 0.994489... ok Trying: klucbBern(0.1, 0.2) # doctest: +ELLIPSIS Expecting: 0.378391... ok Trying: klucbBern(0.5, 0.2) # doctest: +ELLIPSIS Expecting: 0.787088... ok Trying: klucbBern(0.9, 0.2) # doctest: +ELLIPSIS Expecting: 0.994489... ok Trying: klucbBern(0.1, 0.4) # doctest: +ELLIPSIS Expecting: 0.519475... ok Trying: klucbBern(0.1, 0.9) # doctest: +ELLIPSIS Expecting: 0.734714... ok Trying: klucbBern(0.5, 0.4) # doctest: +ELLIPSIS Expecting: 0.871035... ok Trying: klucbBern(0.5, 0.9) # doctest: +ELLIPSIS Expecting: 0.956809... ok Trying: klucbBern(0.9, 0.4) # doctest: +ELLIPSIS Expecting: 0.999285... ok Trying: klucbBern(0.9, 0.9) # doctest: +ELLIPSIS Expecting: 0.999995... ok Trying: klucbExp(0.1, 0.2) # doctest: +ELLIPSIS Expecting: 0.202741... ok Trying: klucbExp(0.5, 0.2) # doctest: +ELLIPSIS Expecting: 1.013706... ok Trying: klucbExp(0.9, 0.2) # doctest: +ELLIPSIS Expecting: 1.824671... ok Trying: klucbExp(0.1, 0.4) # doctest: +ELLIPSIS Expecting: 0.285792... ok Trying: klucbExp(0.1, 0.9) # doctest: +ELLIPSIS Expecting: 0.559088... ok Trying: klucbExp(0.5, 0.4) # doctest: +ELLIPSIS Expecting: 1.428962... ok Trying: klucbExp(0.5, 0.9) # doctest: +ELLIPSIS Expecting: 2.795442... ok Trying: klucbExp(0.9, 0.4) # doctest: +ELLIPSIS Expecting: 2.572132... ok Trying: klucbExp(0.9, 0.9) # doctest: +ELLIPSIS Expecting: 5.031795... ok Trying: klucbGamma(0.1, 0.2) # doctest: +ELLIPSIS Expecting: 0.202... ok Trying: klucbGamma(0.5, 0.2) # doctest: +ELLIPSIS Expecting: 1.013... ok Trying: klucbGamma(0.9, 0.2) # doctest: +ELLIPSIS Expecting: 1.824... ok Trying: klucbGamma(0.1, 0.4) # doctest: +ELLIPSIS Expecting: 0.285... ok Trying: klucbGamma(0.1, 0.9) # doctest: +ELLIPSIS Expecting: 0.559... ok Trying: klucbGamma(0.5, 0.4) # doctest: +ELLIPSIS Expecting: 1.428... ok Trying: klucbGamma(0.5, 0.9) # doctest: +ELLIPSIS Expecting: 2.795... ok Trying: klucbGamma(0.9, 0.4) # doctest: +ELLIPSIS Expecting: 2.572... ok Trying: klucbGamma(0.9, 0.9) # doctest: +ELLIPSIS Expecting: 5.031... ok Trying: klucbGauss(0.1, 0.2) # doctest: +ELLIPSIS Expecting: 0.416227... ok Trying: klucbGauss(0.5, 0.2) # doctest: +ELLIPSIS Expecting: 0.816227... ok Trying: klucbGauss(0.9, 0.2) # doctest: +ELLIPSIS Expecting: 1.216227... ok Trying: klucbGauss(0.1, 0.4) # doctest: +ELLIPSIS Expecting: 0.547213... ok Trying: klucbGauss(0.1, 0.9) # doctest: +ELLIPSIS Expecting: 0.770820... ok Trying: klucbGauss(0.5, 0.4) # doctest: +ELLIPSIS Expecting: 0.947213... ok Trying: klucbGauss(0.5, 0.9) # doctest: +ELLIPSIS Expecting: 1.170820... ok Trying: klucbGauss(0.9, 0.4) # doctest: +ELLIPSIS Expecting: 1.347213... ok Trying: klucbGauss(0.9, 0.9) # doctest: +ELLIPSIS Expecting: 1.570820... ok Trying: klucbPoisson(0.1, 0.2) # doctest: +ELLIPSIS Expecting: 0.450523... ok Trying: klucbPoisson(0.5, 0.2) # doctest: +ELLIPSIS Expecting: 1.089376... ok Trying: klucbPoisson(0.9, 0.2) # doctest: +ELLIPSIS Expecting: 1.640112... ok Trying: klucbPoisson(0.1, 0.4) # doctest: +ELLIPSIS Expecting: 0.693684... ok Trying: klucbPoisson(0.1, 0.9) # doctest: +ELLIPSIS Expecting: 1.252796... ok Trying: klucbPoisson(0.5, 0.4) # doctest: +ELLIPSIS Expecting: 1.422933... ok Trying: klucbPoisson(0.5, 0.9) # doctest: +ELLIPSIS Expecting: 2.122985... ok Trying: klucbPoisson(0.9, 0.4) # doctest: +ELLIPSIS Expecting: 2.033691... ok Trying: klucbPoisson(0.9, 0.9) # doctest: +ELLIPSIS Expecting: 2.831573... ok 14 items passed all tests: 7 tests in __main__ 6 tests in __main__.klBern 6 tests in __main__.klBin 9 tests in __main__.klExp 9 tests in __main__.klGamma 25 tests in __main__.klGauss 12 tests in __main__.klNegBin 7 tests in __main__.klPoisson 7 tests in __main__.klucb 9 tests in __main__.klucbBern 9 tests in __main__.klucbExp 9 tests in __main__.klucbGamma 9 tests in __main__.klucbGauss 9 tests in __main__.klucbPoisson 133 tests in 14 items. 133 passed and 0 failed. Test passed. Done for tests of 'kullback_leibler.py' ...