def test_collapse_edges(): st = SimplexTree() assert st.insert([0, 1], filtration=1.0) == True assert st.insert([1, 2], filtration=1.0) == True assert st.insert([2, 3], filtration=1.0) == True assert st.insert([0, 3], filtration=1.0) == True assert st.insert([0, 2], filtration=2.0) == True assert st.insert([1, 3], filtration=2.0) == True assert st.num_simplices() == 10 st.collapse_edges() assert st.num_simplices() == 9 assert st.find([1, 3]) == False for simplex in st.get_skeleton(0): assert simplex[1] == 1.
def test_reset_filtration(): st = SimplexTree() assert st.insert([0, 1, 2], 3.) == True assert st.insert([0, 3], 2.) == True assert st.insert([3, 4, 5], 3.) == True assert st.insert([0, 1, 6, 7], 4.) == True # Guaranteed by construction for simplex in st.get_simplices(): assert st.filtration(simplex[0]) >= 2. # dimension until 5 even if simplex tree is of dimension 3 to test the limits for dimension in range(5, -1, -1): st.reset_filtration(0., dimension) for simplex in st.get_skeleton(3): print(simplex) if len(simplex[0]) < (dimension) + 1: assert st.filtration(simplex[0]) >= 2. else: assert st.filtration(simplex[0]) == 0.
def test_collapse_edges(): st = SimplexTree() assert st.insert([0, 1], filtration=1.0) == True assert st.insert([1, 2], filtration=1.0) == True assert st.insert([2, 3], filtration=1.0) == True assert st.insert([0, 3], filtration=1.0) == True assert st.insert([0, 2], filtration=2.0) == True assert st.insert([1, 3], filtration=2.0) == True assert st.num_simplices() == 10 if __GUDHI_USE_EIGEN3: st.collapse_edges() assert st.num_simplices() == 9 assert st.find([1, 3]) == False for simplex in st.get_skeleton(0): assert simplex[1] == 1. else: # If no Eigen3, collapse_edges throws an exception with pytest.raises(RuntimeError): st.collapse_edges()
def test_insertion(): st = SimplexTree() assert st.__is_defined() == True assert st.__is_persistence_defined() == False # insert test assert st.insert([0, 1]) == True assert st.dimension() == 1 assert st.insert([0, 1, 2], filtration=4.0) == True assert st.dimension() == 2 assert st.num_simplices() == 7 assert st.num_vertices() == 3 # find test assert st.find([0, 1, 2]) == True assert st.find([0, 1]) == True assert st.find([0, 2]) == True assert st.find([0]) == True assert st.find([1]) == True assert st.find([2]) == True assert st.find([3]) == False assert st.find([0, 3]) == False assert st.find([1, 3]) == False assert st.find([2, 3]) == False # filtration test assert st.filtration([0, 1, 2]) == 4.0 assert st.filtration([0, 2]) == 4.0 assert st.filtration([1, 2]) == 4.0 assert st.filtration([2]) == 4.0 assert st.filtration([0, 1]) == 0.0 assert st.filtration([0]) == 0.0 assert st.filtration([1]) == 0.0 # skeleton test assert list(st.get_skeleton(2)) == [ ([0, 1, 2], 4.0), ([0, 1], 0.0), ([0, 2], 4.0), ([0], 0.0), ([1, 2], 4.0), ([1], 0.0), ([2], 4.0), ] assert list(st.get_skeleton(1)) == [ ([0, 1], 0.0), ([0, 2], 4.0), ([0], 0.0), ([1, 2], 4.0), ([1], 0.0), ([2], 4.0), ] assert list(st.get_skeleton(0)) == [([0], 0.0), ([1], 0.0), ([2], 4.0)] # remove_maximal_simplex test assert st.get_cofaces([0, 1, 2], 1) == [] st.remove_maximal_simplex([0, 1, 2]) assert list(st.get_skeleton(2)) == [ ([0, 1], 0.0), ([0, 2], 4.0), ([0], 0.0), ([1, 2], 4.0), ([1], 0.0), ([2], 4.0), ] assert st.find([0, 1, 2]) == False assert st.find([0, 1]) == True assert st.find([0, 2]) == True assert st.find([0]) == True assert st.find([1]) == True assert st.find([2]) == True assert st.persistence(persistence_dim_max=True) == [ (1, (4.0, float("inf"))), (0, (0.0, float("inf"))), ] assert st.__is_persistence_defined() == True assert st.betti_numbers() == [1, 1] assert st.persistent_betti_numbers(-0.1, 10000.0) == [0, 0] assert st.persistent_betti_numbers(0.0, 10000.0) == [1, 0] assert st.persistent_betti_numbers(3.9, 10000.0) == [1, 0] assert st.persistent_betti_numbers(4.0, 10000.0) == [1, 1] assert st.persistent_betti_numbers(9999.0, 10000.0) == [1, 1]