def test_laplacian_eigenmap_deterministic():
    # Test that laplacian eigenmap is deterministic
    random_state = np.random.RandomState(36)
    data = random_state.randn(10, 30)
    sims = rbf_kernel(data)
    embedding_1 = laplacian_eigenmap(sims)
    embedding_2 = laplacian_eigenmap(sims)
    assert_array_almost_equal(embedding_1, embedding_2)
def test_laplacian_eigenmap_unnormalized():
    # Test that laplacian_eigenmap is also processing unnormalized laplacian correctly
    random_state = np.random.RandomState(36)
    data = random_state.randn(10, 30)
    sims = rbf_kernel(data)
    n_components = 8
    embedding_1 = laplacian_eigenmap(sims,
                                     norm_laplacian=False,
                                     n_components=n_components,
                                     drop_first=False)

    # Verify using manual computation with denembedding eigh
    laplacian, dd = graph_laplacian(sims, normed=False, return_diag=True)
    _, diffusion_map = eigh(laplacian)
    embedding_2 = diffusion_map.T[:n_components] * dd
    embedding_2 = _deterministic_vector_sign_flip(embedding_2).T

    assert_array_almost_equal(embedding_1, embedding_2)