def test_rips_from_points(): point_list = [[0, 0], [1, 0], [0, 1], [1, 1]] rips_complex = RipsComplex(points=point_list, max_edge_length=42) simplex_tree = rips_complex.create_simplex_tree(max_dimension=1) assert simplex_tree.__is_defined() == True assert simplex_tree.__is_persistence_defined() == False assert simplex_tree.num_simplices() == 10 assert simplex_tree.num_vertices() == 4 assert simplex_tree.get_filtration() == [ ([0], 0.0), ([1], 0.0), ([2], 0.0), ([3], 0.0), ([0, 1], 1.0), ([0, 2], 1.0), ([1, 3], 1.0), ([2, 3], 1.0), ([1, 2], 1.4142135623730951), ([0, 3], 1.4142135623730951), ] assert simplex_tree.get_star([0]) == [ ([0], 0.0), ([0, 1], 1.0), ([0, 2], 1.0), ([0, 3], 1.4142135623730951), ] assert simplex_tree.get_cofaces([0], 1) == [ ([0, 1], 1.0), ([0, 2], 1.0), ([0, 3], 1.4142135623730951), ]
def bettiNumbers(self, *args, **kwargs): from gudhi import RipsComplex, plot_persistence_diagram, plot_persistence_barcode, sparsify_point_set import random as r import numpy as np import matplotlib.pyplot as plt targetCluster = kwargs.get('targetCluster', [1]) threshold = kwargs.get('threshold', 0.05) sparsifyThreshold = kwargs.get('sparsifyThreshold', threshold/8) plot = kwargs.get('plot', False) pointList = [] for point in self.points: if point.cluster in targetCluster: pointList.append(np.array(point.coordinates)) pointList = sparsify_point_set( points=pointList, min_squared_dist=sparsifyThreshold**2) point_complex = RipsComplex( max_edge_length=threshold/2, points=pointList) simplex_tree = point_complex.create_simplex_tree( max_dimension=self.dimension) persistence = simplex_tree.persistence() if plot: plot_persistence_barcode(persistence) plt.plot() plot_persistence_diagram(persistence) plt.plot() return simplex_tree.betti_numbers()
def bettiNumbers(self, *args, **kwargs): from gudhi import RipsComplex import random as r import numpy as np nPoints = kwargs.get('nPoints', self.nPoints) targetCluster = kwargs.get('targetCluster', [1]) maxEdge = kwargs.get('maxEdge', 10) maxDim = kwargs.get('maxDim', self.dimension) fromValue = kwargs.get('fromValue', 0.05) toValue = kwargs.get('toValue', 0.05) pointListTemp = [] for point in self.points: if point.cluster in targetCluster: pointListTemp.append(np.array(point.coordinates)) pointList = [] for point in pointListTemp: random = r.random() if random <= nPoints / len(pointListTemp): pointList.append(point) point_complex = RipsComplex(max_edge_length=maxEdge, points=pointList) simplex_tree = point_complex.create_simplex_tree(max_dimension=maxDim) persistence = simplex_tree.persistence() return simplex_tree.persistent_betti_numbers(from_value=fromValue, to_value=toValue)
def test_compatibility_with_rips(): distance_matrix = np.array([[0, 1, 1, sqrt(2)], [1, 0, sqrt(2), 1], [1, sqrt(2), 0, 1], [sqrt(2), 1, 1, 0]]) dtm_rips = DTMRipsComplex(distance_matrix=distance_matrix, max_filtration=42) st = dtm_rips.create_simplex_tree(max_dimension=1) rips_complex = RipsComplex(distance_matrix=distance_matrix, max_edge_length=42) st_from_rips = rips_complex.create_simplex_tree(max_dimension=1) assert list(st.get_filtration()) == list(st_from_rips.get_filtration())
def test_filtered_rips_from_points(): point_list = [[0, 0], [1, 0], [0, 1], [1, 1]] filtered_rips = RipsComplex(points=point_list, max_edge_length=1.0) simplex_tree = filtered_rips.create_simplex_tree(max_dimension=1) assert simplex_tree.__is_defined() == True assert simplex_tree.__is_persistence_defined() == False assert simplex_tree.num_simplices() == 8 assert simplex_tree.num_vertices() == 4
def test_filtered_rips_from_distance_matrix(): distance_matrix = [[0], [1, 0], [1, sqrt(2), 0], [sqrt(2), 1, 1, 0]] filtered_rips = RipsComplex(distance_matrix=distance_matrix, max_edge_length=1.0) simplex_tree = filtered_rips.create_simplex_tree(max_dimension=1) assert simplex_tree.__is_defined() == True assert simplex_tree.__is_persistence_defined() == False assert simplex_tree.num_simplices() == 8 assert simplex_tree.num_vertices() == 4
def test_sparse_with_multiplicity(): points = [ [3, 4], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [0.1, 2], [3, 4.1], ] rips = RipsComplex(points=points, sparse=0.01) simplex_tree = rips.create_simplex_tree(max_dimension=2) assert simplex_tree.num_simplices() == 7 diag = simplex_tree.persistence()
def test_rips_from_distance_matrix(): distance_matrix = [[0], [1, 0], [1, sqrt(2), 0], [sqrt(2), 1, 1, 0]] rips_complex = RipsComplex(distance_matrix=distance_matrix, max_edge_length=42) simplex_tree = rips_complex.create_simplex_tree(max_dimension=1) assert simplex_tree.__is_defined() == True assert simplex_tree.__is_persistence_defined() == False assert simplex_tree.num_simplices() == 10 assert simplex_tree.num_vertices() == 4 assert list(simplex_tree.get_filtration()) == [ ([0], 0.0), ([1], 0.0), ([2], 0.0), ([3], 0.0), ([0, 1], 1.0), ([0, 2], 1.0), ([1, 3], 1.0), ([2, 3], 1.0), ([1, 2], 1.4142135623730951), ([0, 3], 1.4142135623730951), ] assert simplex_tree.get_star([0]) == [ ([0], 0.0), ([0, 1], 1.0), ([0, 2], 1.0), ([0, 3], 1.4142135623730951), ] assert simplex_tree.get_cofaces([0], 1) == [ ([0, 1], 1.0), ([0, 2], 1.0), ([0, 3], 1.4142135623730951), ]
from gudhi import RipsComplex, SimplexTree import gudhi from src.datasets import mnist from pprint import pprint import sys print('Making Rips complex') if len(sys.argv) > 1: rc = RipsComplex(off_file=sys.argv[1]) else: rc = RipsComplex(points=mnist(7)) print('And simplex tree') simplex_tree = rc.create_simplex_tree(max_dimension=10) diag = simplex_tree.persistence() print("betti_numbers()=") print(simplex_tree.betti_numbers()) pprint(diag)