7 changed files with 5 additions and 92 deletions
@ -1,4 +1,3 @@ |
|||||||
# content of pytest.ini |
# content of pytest.ini |
||||||
[tool:pytest] |
[tool:pytest] |
||||||
norecursedirs = test/* |
testpaths = jmbitcoin jmclient jmbase jmdaemon test |
||||||
testpaths = jmbitcoin jmclient jmbase jmdaemon |
|
||||||
|
|||||||
@ -1,87 +0,0 @@ |
|||||||
import sys, os |
|
||||||
from jmclient import rand_exp_array, rand_norm_array, rand_pow_array |
|
||||||
try: |
|
||||||
import matplotlib.pyplot as plt |
|
||||||
import numpy as np |
|
||||||
except ImportError: |
|
||||||
print 'Install matplotlib and numpy to run this test' |
|
||||||
sys.exit(0) |
|
||||||
|
|
||||||
|
|
||||||
def test_power(): |
|
||||||
a = 5. # shape |
|
||||||
samples = 10000 |
|
||||||
s1 = np.random.power(a, samples) |
|
||||||
s2 = common.rand_pow_array(a, samples) |
|
||||||
|
|
||||||
plt.figure('power test') |
|
||||||
count1, bins1, ignored1 = plt.hist(s1, |
|
||||||
bins=30, |
|
||||||
label='numpy', |
|
||||||
histtype='step') |
|
||||||
x = np.linspace(0, 1, 100) |
|
||||||
y = a * x**(a - 1.0) |
|
||||||
normed_y1 = samples * np.diff(bins1)[0] * y |
|
||||||
plt.plot(x, normed_y1, label='numpy.random.power fit') |
|
||||||
|
|
||||||
count2, bins2, ignored2 = plt.hist(s2, |
|
||||||
bins=30, |
|
||||||
label='joinmarket', |
|
||||||
histtype='step') |
|
||||||
normed_y2 = samples * np.diff(bins2)[0] * y |
|
||||||
plt.plot(x, normed_y2, label='common.rand_pow_array fit') |
|
||||||
plt.title('testing power distribution') |
|
||||||
plt.legend(loc='upper left') |
|
||||||
plt.show() |
|
||||||
|
|
||||||
|
|
||||||
def test_choice(): |
|
||||||
|
|
||||||
xaxis_divisions = 100 |
|
||||||
sinp = np.sin(np.arange(xaxis_divisions) * 2 * np.pi / xaxis_divisions)**2 |
|
||||||
sinp /= sum(sinp) |
|
||||||
sinp = list(sinp) |
|
||||||
|
|
||||||
sincp = np.sinc((np.arange(xaxis_divisions) - 2 * xaxis_divisions / 3) * 2 * |
|
||||||
np.pi / xaxis_divisions)**2 |
|
||||||
sincp /= sum(sincp) |
|
||||||
sincp = list(sincp) |
|
||||||
|
|
||||||
x = np.arange(xaxis_divisions) * 2 * np.pi / xaxis_divisions |
|
||||||
gamma2p = x**2 * np.exp(-2 * x) |
|
||||||
gamma2p /= sum(gamma2p) |
|
||||||
gamma2p = list(gamma2p) |
|
||||||
|
|
||||||
plt.figure('choice test') |
|
||||||
for p, name in ((sinp, 'sin'), (sincp, 'sinc'), (gamma2p, 'gamma(2, 2)')): |
|
||||||
#for p, name in ((sincp, 'sincp'), ): |
|
||||||
samples = 50000 |
|
||||||
common_data = [] |
|
||||||
numpy_data = [] |
|
||||||
for i in range(samples): |
|
||||||
cpoint = common.rand_weighted_choice(xaxis_divisions, p) |
|
||||||
common_data.append(cpoint) |
|
||||||
nppoint = np.random.choice(xaxis_divisions, p=p) |
|
||||||
numpy_data.append(nppoint) |
|
||||||
|
|
||||||
count1, bins1, ignored1 = plt.hist(common_data, |
|
||||||
bins=xaxis_divisions, |
|
||||||
label=name + 'joinmarket', |
|
||||||
histtype='step') |
|
||||||
count2, bins2, ignored2 = plt.hist(numpy_data, |
|
||||||
bins=xaxis_divisions, |
|
||||||
label=name + 'numpy', |
|
||||||
histtype='step') |
|
||||||
|
|
||||||
plt.title('testing choice') |
|
||||||
plt.legend(loc='upper left') |
|
||||||
plt.show() |
|
||||||
|
|
||||||
|
|
||||||
def main(): |
|
||||||
test_power() |
|
||||||
test_choice() |
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__': |
|
||||||
main() |
|
||||||
Loading…
Reference in new issue