Beispiel #1
0
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.)
Beispiel #4
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))