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
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
    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)