In [80]:
import numpy as np
import cPickle as pickle
from pydtw import dtw2d
from joblib import Parallel, delayed

In [81]:
def pickle_this(data, filename='distance_matrix.p'):
    pickle.dump(data, open(filename, 'wb'))

In [82]:
def inner_loop(sample, i, n):
    row = np.zeros((n,))
    for j in xrange(i, n):
        row[j] = dtw2d(sample[i], sample[j])[-1,-1]
    return row

In [83]:
sample = pickle.load( open( 'sample_pitches.p', 'rb' ) )

In [99]:
n = 4
idxs = np.random.choice(len(sample), n)
subset = sample[idxs]

In [95]:
distance_matrix = np.asmatrix(Parallel(n_jobs=6)(delayed(inner_loop)(subset, i, n) for i in range(n)))
print distance_matrix


[[    0.          1766.58088787  1668.80347053  1720.59559259]
 [    0.             0.          1429.22276921   991.13049528]
 [    0.             0.             0.          1393.70271966]
 [    0.             0.             0.             0.        ]]