In [1]:
%load_ext autoreload
%load_ext line_profiler
%autoreload 2
import cyResampling as cyR
import pyResampling as pyR
import weaveResampling as weR
N = 100000
w = random.uniform(size=N)
#w = ones(N)
w /= sum(w)
In [2]:
# Multinomial test
print 'Multinomial:'
print 'Weave'
%timeit weR.resampleMultinomial(w)
print 'Python'
%timeit pyR.resampling(w, 'mult')
print 'Cython'
%timeit cyR.resampling(w, 'multinomial')
print '\n'
# Residual test
print 'Residual:'
print 'Python'
%timeit pyR.resampling(w, 'res')
print 'Cython'
%timeit cyR.resampling(w, 'residual')
print '\n'
# Stratified test
print 'Stratified:'
print 'Weave'
%timeit weR.resampleStratified(w)
print 'Python'
%timeit pyR.resampling(w, 'strat')
print 'Cython'
%timeit cyR.resampling(w, 'stratified')
print '\n'
# Systematic test
print 'Systematic:'
print 'Weave'
%timeit weR.resampleSystematic(w)
print 'Python'
%timeit pyR.resampling(w, 'sys')
print 'Cython'
%timeit cyR.resampling(w, 'systematic')
In [19]:
K = 20000
avg_temp = zeros((K,N))
for k in range(K):
avg_temp[k,:] = np.bincount(cyR.resampling(w, 'multinomial'), minlength=N)
avg = np.sum(avg_temp, axis=0)/N/K
In [20]:
print sum(abs(avg-w))
In [9]:
%prun cyR.resampling(w, 'systematic')
In [5]:
%lprun -f weR.resampleStratified weR.resampleStratified(w)
In [31]:
2/10000.
Out[31]:
In [34]:
np.sum(avg,axis=0)/N/K
Out[34]:
In [ ]: