def test_plot_prob_bounded_coal(self): n = 1000 k = 4 t = 800 alltimes = [] # sample times for i in xrange(5000): while True: times = [0] for j in xrange(k, 1, -1): times.append(times[-1] + coal.sample_coal(j, n)) if times[-1] >= t: break if times[-1] < t: break alltimes.append(times) p = Gnuplot() for i in range(1, 2): x, y = distrib([q[i] - q[i-1] for q in alltimes], width=20) p.plot(x, y, style="lines", xmax=500) x = list(frange(0, 500, 10)) #for i in range(1, 2): #k): y2 = [coal.prob_bounded_coal(j, k, n, t) for j in x] p.plot(x, y2, style="lines", xmax=500) fequals(y, y2, rel=.05, eabs=.01)
def test_prob_coal2(self): outdir = 'test/tmp/test_coal/Coal_test_prob_coal2/' make_clean_dir(outdir) k = 2 n = 1000 p = Gnuplot() p.enableOutput(False) p.plotfunc(lambda t: coal.prob_coal(t, k, n), 0, 4000, 10, ymin=0) # draw single coal samples x = [coal.sample_coal(k, n) for i in xrange(200)] plotdistrib(x, 40, plot=p) p.enableOutput(True) p.save(outdir + 'plot.png') eq_sample_pdf(x, lambda t: coal.prob_coal(t, k, n), 40)
def test_fast_sample_bounded_coal(self): # sample bounded coal times efficiently n = 1000 k = 5 t = 500 alltimes = [] # sample times for i in xrange(5000): while True: times = [0] for j in xrange(k, 1, -1): times.append(times[-1] + coal.sample_coal(j, n)) if times[-1] >= t: break if times[-1] < t: break alltimes.append(times) p = Gnuplot() for i in range(1, k): x, y = distrib([q[i] - q[i-1] for q in alltimes], width=30) p.plot(x, y, style="lines", xmax=500) p.enableOutput(True) p.replot() # sample times efficently alltimes2 = [] for i in xrange(5000): times = [0] for j in xrange(k, 1, -1): times.append(times[-1] + coal.sample_bounded_coal(j, n, t-times[-1])) alltimes2.append(times) #p = Gnuplot() for i in range(1, k): x, y = distrib([q[i] - q[i-1] for q in alltimes2], width=30) p.plot(x, y, style="lines", xmax=500) p.enableOutput(True) p.replot()