def test_simplex_tree_deep_copy_constructor(): st = SimplexTree() st.insert([1, 2, 3], 0.) # compute persistence only on the original st.compute_persistence() st_copy = SimplexTree(st) assert st_copy == st st_filt_list = list(st.get_filtration()) # check persistence is not copied assert st.__is_persistence_defined() == True assert st_copy.__is_persistence_defined() == False # remove something in the copy and check the copy is included in the original st_copy.remove_maximal_simplex([1, 2, 3]) a_filt_list = list(st_copy.get_filtration()) assert len(a_filt_list) < len(st_filt_list) for a_splx in a_filt_list: assert a_splx in st_filt_list # test double free del st del st_copy
def test_automatic_dimension(): st = SimplexTree() assert st.__is_defined() == True assert st.__is_persistence_defined() == False # insert test assert st.insert([0, 1, 3], filtration=0.5) == True assert st.insert([0, 1, 2], filtration=1.0) == True assert st.num_vertices() == 4 assert st.num_simplices() == 11 assert st.dimension() == 2 assert st.upper_bound_dimension() == 2 assert st.prune_above_filtration(0.6) == True assert st.dimension() == 2 assert st.upper_bound_dimension() == 2 st.assign_filtration([0, 1, 3], 0.7) assert st.filtration([0, 1, 3]) == 0.7 st.remove_maximal_simplex([0, 1, 3]) assert st.upper_bound_dimension() == 2 assert st.dimension() == 1 assert st.upper_bound_dimension() == 1
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]