""" This file is part of the Gudhi Library - https://gudhi.inria.fr/ - which is released under MIT. See file LICENSE or go to https://gudhi.inria.fr/licensing/ for full license details. Author(s): Marc Glisse Copyright (C) 2020 Inria Modification(s): - YYYY/MM Author: Description of the modification """ import gudhi import numpy as np def test_flag_generators(): pts = np.array([[0, 0], [0, 1.01], [1, 0], [1.02, 1.03], [100, 0], [100, 3.01], [103, 0], [103.02, 3.03]]) r = gudhi.RipsComplex(pts, max_edge_length=4) st = r.create_simplex_tree(max_dimension=50) st.persistence() g = st.flag_persistence_generators() assert np.array_equal(g[0], [[2, 2, 0], [1, 1, 0], [3, 3, 1], [6, 6, 4], [5, 5, 4], [7, 7, 5]]) assert len(g[1]) == 1 assert np.array_equal(g[1][0], [[3, 2, 2, 1]]) assert np.array_equal(g[2], [0, 4]) assert len(g[3]) == 1 assert np.array_equal(g[3][0], [[7, 6]]) # Compare trivial cases (where the simplex is the generator) with persistence_pairs. # This still makes assumptions on the order of vertices in a simplex and could be more robust. pairs = st.persistence_pairs() assert {tuple(i) for i in g[0]} == {(i[0][0],) + tuple(i[1]) for i in pairs if len(i[0]) == 1 and len(i[1]) != 0} assert {(i[0], i[1]) for i in g[1][0]} == {tuple(i[0]) for i in pairs if len(i[0]) == 2 and len(i[1]) != 0} assert set(g[2]) == {i[0][0] for i in pairs if len(i[0]) == 1 and len(i[1]) == 0} assert {(i[0], i[1]) for i in g[3][0]} == {tuple(i[0]) for i in pairs if len(i[0]) == 2 and len(i[1]) == 0} def test_lower_star_generators(): st = gudhi.SimplexTree() st.insert([0, 1, 2], -10) st.insert([0, 3], -10) st.insert([1, 3], -10) st.assign_filtration([2], -1) st.assign_filtration([3], 0) st.assign_filtration([0], 1) st.assign_filtration([1], 2) st.make_filtration_non_decreasing() st.persistence(min_persistence=-1) g = st.lower_star_persistence_generators() assert len(g[0]) == 2 assert np.array_equal(g[0][0], [[0, 0], [3, 0], [1, 1]]) assert np.array_equal(g[0][1], [[1, 1]]) assert len(g[1]) == 2 assert np.array_equal(g[1][0], [2]) assert np.array_equal(g[1][1], [1]) def test_empty(): st = gudhi.SimplexTree() st.persistence() assert st.lower_star_persistence_generators() == ([], []) g = st.flag_persistence_generators() assert np.array_equal(g[0], np.empty((0, 3))) assert g[1] == [] assert np.array_equal(g[2], []) assert g[3] == []