def test_sumdist_rmsd(): pairs = random.random_integers(low=0, high=9, size=(5, 2)).astype(np.intp) alldist = scipy.spatial.distance.squareform(pdist(X_rmsd, "rmsd")) np.testing.assert_almost_equal( sum(alldist[p[0], p[1]] for p in pairs), sumdist(X_rmsd, "rmsd", pairs), decimal=6)
def test_sumdist_rmsd(): pairs = random.random_integers(low=0, high=9, size=(5, 2)) alldist = scipy.spatial.distance.squareform(pdist(X_rmsd, "rmsd")) np.testing.assert_almost_equal( sum(alldist[p[0], p[1]] for p in pairs), sumdist(X_rmsd, "rmsd", pairs), decimal=6)
def test_sumdist_rmsd(): pairs = random.randint(0, 10, size=(5, 2)).astype(np.intp) alldist = scipy.spatial.distance.squareform(pdist(X_rmsd, "rmsd")) np.testing.assert_almost_equal( sum(alldist[p[0], p[1]] for p in pairs), sumdist(X_rmsd, "rmsd", pairs), decimal=6)
def test_sumdist_double_float(): pairs = random.random_integers(low=0, high=9, size=(5, 2)) for metric in VECTOR_METRICS: for X in (X_double, X_float): alldist = scipy.spatial.distance.squareform(pdist(X, metric)) np.testing.assert_almost_equal( sum(alldist[p[0], p[1]] for p in pairs), sumdist(X, metric, pairs))
def test_pdist_rmsd_2(): got = pdist(X_rmsd, "rmsd", X_indices) all2all = np.array([md.rmsd(X_rmsd, X_rmsd[i], precentered=True) for i in range(len(X_rmsd))]).astype(np.double) submatrix = all2all[np.ix_(X_indices, X_indices)] ref = submatrix[np.triu_indices(5, k=1)] np.testing.assert_almost_equal(got, ref, decimal=4)
def test_sumdist_double_float(): pairs = random.random_integers(low=0, high=9, size=(5, 2)).astype(np.intp) for metric in VECTOR_METRICS: for X in (X_double, X_float): alldist = scipy.spatial.distance.squareform(pdist(X, metric)) np.testing.assert_almost_equal( sum(alldist[p[0], p[1]] for p in pairs), sumdist(X, metric, pairs))
def test_pdist_rmsd_1(): got = pdist(X_rmsd, "rmsd") all2all = np.array([ md.rmsd(X_rmsd, X_rmsd[i], precentered=True) for i in range(len(X_rmsd)) ]) ref = all2all[np.triu_indices(10, k=1)] np.testing.assert_almost_equal(got, ref, decimal=5)
def test_pdist_double_float_2(): # test without X_indices for metric in VECTOR_METRICS: for X, Y in ((X_double, Y_double), (X_float, Y_float)): pdist_1 = pdist(X, metric, X_indices=X_indices) pdist_2 = scipy.spatial.distance.pdist(X[X_indices], metric) yield lambda: np.testing.assert_almost_equal( pdist_1, pdist_2, decimal=5 if X.dtype == np.float32 else 10)
def pdist(X, metric='euclidean'): if isinstance(metric, six.string_types): return libdistance.pdist(X, metric) n = len(X) d = np.empty((n, n)) for i in range(n): d[i, :] = metric(X, X, i) return scipy.spatial.distance.squareform(d, checks=False)
def test_pdist_double_float_2(): # test without X_indices for metric in VECTOR_METRICS: for X, Y in ((X_double, Y_double), (X_float, Y_float)): pdist_1 = pdist(X, metric, X_indices=X_indices) pdist_2 = scipy.spatial.distance.pdist(X[X_indices], metric) yield lambda : np.testing.assert_almost_equal( pdist_1, pdist_2, decimal=5 if X.dtype == np.float32 else 10)
def test_index(): n = 50 def q(i, j): if i == j: raise ValueError() if (i < j): return int(n*i - i*(i+1)/2 + j - 1 - i) return int(n*j - j*(j+1)/2 + i - 1 - j) X = np.random.randn(n, 1) pdist = libdistance.pdist(X, 'euclidean') for i in range(n): for j in range(n): if (i != j): assert euclidean(X[i], X[j]) == pdist[q(i,j)]
def test_index(): n = 50 def q(i, j): if i == j: raise ValueError() if (i < j): return int(n * i - i * (i + 1) / 2 + j - 1 - i) return int(n * j - j * (j + 1) / 2 + i - 1 - j) X = np.random.randn(n, 1) pdist = libdistance.pdist(X, 'euclidean') for i in range(n): for j in range(n): if (i != j): assert euclidean(X[i], X[j]) == pdist[q(i, j)]
def test_pdist_rmsd_1(): got = pdist(X_rmsd, "rmsd") all2all = np.array([md.rmsd(X_rmsd, X_rmsd[i], precentered=True) for i in range(len(X_rmsd))]) ref = all2all[np.triu_indices(10, k=1)] np.testing.assert_almost_equal(got, ref, decimal=5)