def sample_pers(self): """ Subsample from the point cloud and build the Vietoris-Rips complex""" sample_pts = gd.pick_n_random_points(self.points, nb_points=self.sample_size) rips = gd.RipsComplex(points=sample_pts, max_edge_length=self.max_edge_length) simplex_tree = rips.create_simplex_tree(max_dimension=2) pers = simplex_tree.persistence() return pers
def test_simple_pick_n_random_points(): point_set = [[0, 1], [0, 0], [1, 0], [1, 1]] # Test the limits assert gudhi.pick_n_random_points(points=[], nb_points=0) == [] assert gudhi.pick_n_random_points(points=[], nb_points=1) == [] assert gudhi.pick_n_random_points(points=point_set, nb_points=0) == [] # Go furter than point set on purpose for iter in range(1, 10): sub_set = gudhi.pick_n_random_points(points=point_set, nb_points=iter) for sub in sub_set: found = False for point in point_set: if point == sub: found = True # Check each sub set point is existing in the point set assert found == True # From off file test for i in range(0, 7): assert (len( gudhi.pick_n_random_points(off_file="subsample.off", nb_points=i)) == i)
def witness_complex_persistence(points, numb_landmarks, alpha, dim, field): start_time = time.time() landmarks = g.pick_n_random_points(points=points, nb_points=numb_landmarks) witness_complex = g.EuclideanWitnessComplex(witnesses=points, landmarks=landmarks) simplex_tree = witness_complex.create_simplex_tree( max_alpha_square=alpha**2, limit_dimension=dim) logger.info("Build complex in {} sec".format(time.time() - start_time)) logger.info("{} vertices, {} simplices".format( simplex_tree.num_vertices(), simplex_tree.num_simplices())) start_time = time.time() simplex_tree.initialize_filtration() simplex_tree.persistence(homology_coeff_field=field) logger.info("Build persistence in {} sec".format(time.time() - start_time)) return simplex_tree
help="Flag for not to display the diagrams", ) args = parser.parse_args() with open(args.file, "r") as f: first_line = f.readline() if (first_line == "OFF\n") or (first_line == "nOFF\n"): print( "#####################################################################" ) print( "EuclideanWitnessComplex creation from points read in a OFF file") witnesses = gudhi.read_points_from_off_file(off_file=args.file) landmarks = gudhi.pick_n_random_points( points=witnesses, nb_points=args.number_of_landmarks) message = ("EuclideanWitnessComplex with max_edge_length=" + repr(args.max_alpha_square) + " - Number of landmarks=" + repr(args.number_of_landmarks)) print(message) witness_complex = gudhi.EuclideanWitnessComplex(witnesses=witnesses, landmarks=landmarks) simplex_tree = witness_complex.create_simplex_tree( max_alpha_square=args.max_alpha_square, limit_dimension=args.limit_dimension) message = "Number of simplices=" + repr(simplex_tree.num_simplices()) print(message)