def get_persistence_images(persistence_diagram): pi = PersistenceImage(sigma=0.001, n_bins=N_BINS, weight_function=None, n_jobs=N_JOBS) print("Computed persistence images") return pi.fit_transform(persistence_diagram)
def test_pi_positive(pts): pi = PersistenceImage(sigma=1) diagrams = np.expand_dims(np.concatenate( [np.sort(pts, axis=1), np.zeros((pts.shape[0], 1))], axis=1), axis=0) assert np.all(pi.fit_transform(diagrams) >= 0.)
def test_pi_positive(pts): diagrams = np.expand_dims(np.concatenate( [np.sort(pts, axis=1), np.zeros((pts.shape[0], 1))], axis=1), axis=0) sigma = (np.max(diagrams[:, :, 1] - np.min(diagrams[:, :, 0]))) / 2 pi = PersistenceImage(sigma=sigma) assert np.all(pi.fit_transform(diagrams) >= 0.)
def persistence_image(persistence_diagram, sigma, title): pi = PersistenceImage(sigma=sigma, n_bins=100, weight_function=None, n_jobs=N_JOBS) persistence_image = pi.fit_transform(persistence_diagram) fig = pi.plot(persistence_image) fig.update_layout(title=title).show() return persistence_image
def test_large_pi_null_parallel(): """Test that pi is computed correctly when the input array is at least 1MB and more than 1 process is used, triggering joblib's use of memmaps""" X = np.linspace(0, 100, 300000) pi = PersistenceImage(sigma=1, n_bins=10, n_jobs=2) diagrams = np.expand_dims(np.stack([X, X, np.zeros(len(X))]).transpose(), axis=0) diagrams = np.repeat(diagrams, 2, axis=0) diagrams[1, :, 1] += 1 assert_almost_equal(pi.fit_transform(diagrams)[0], 0)
def test_pi_null(X): """Test that, if one trivial diagram (all pts on the diagonal) is provided, (along with a non-trivial one), then its pi is null""" pi = PersistenceImage(sigma=1, n_bins=10) X = np.append(X, 1 + X[-1]) diagrams = np.expand_dims(np.stack( [X, X, np.zeros((X.shape[0], ), dtype=int)]).transpose(), axis=0) diagrams = np.repeat(diagrams, 2, axis=0) diagrams[1, :, 1] += 1 assert_almost_equal(pi.fit_transform(diagrams)[0], 0)
def test_pi_null(X): """Test that, if one trivial diagram (all pts on the diagonal) is provided, along with a non-trivial one, then its persistence image is null""" n_bins = 10 X = np.append(X, 1 + X[-1]) diagrams = np.expand_dims(np.stack([X, X, np.zeros(len(X))]).transpose(), axis=0) diagrams = np.repeat(diagrams, 2, axis=0) diagrams[1, :, 1] += 1 sigma = (np.max(diagrams[:, :, 1] - np.min(diagrams[:, :, 0]))) / 2 pi = PersistenceImage(sigma=sigma, n_bins=n_bins) assert_almost_equal(pi.fit_transform(diagrams)[0], 0)
def test_pi_zero_weight_function(n_jobs): pi = PersistenceImage(weight_function=lambda x: x * 0., n_jobs=n_jobs) X_res = pi.fit_transform(X) assert np.array_equal(X_res, np.zeros_like(X_res))