summaryrefslogtreecommitdiff
path: root/python/src/simple_example.py
blob: 82cf6beba932160b3bb30696715b536127bf8dc7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
"""This file contains a simple example that demonstrates the usage of the library interface"""

if __name__ == "__main__":

    print("""
    we will build an ordered boundary matrix of this simplicial complex consisting of a single triangle: 
    
     3
     |\\
     | \\
     |  \\
     |   \\ 4
    5|    \\
     |     \\
     |  6   \\
     |       \\
     |________\\
     0    2    1

""")

    import phat

    # set the dimension of the cell that each column represents:
    dimensions = [0, 0, 1, 0, 1, 1, 2]

    # define a boundary matrix with the chosen internal representation
    boundary_matrix = phat.boundary_matrix(representation = phat.representations.vector_vector)

    # set the respective columns -- the columns entries have to be sorted
    boundary_matrix.set_dims(dimensions)
    boundary_matrix.set_col(0, [])
    boundary_matrix.set_col(1, [])
    boundary_matrix.set_col(2, [0,1])
    boundary_matrix.set_col(3, [])
    boundary_matrix.set_col(4, [1,3])
    boundary_matrix.set_col(5, [0,3])
    boundary_matrix.set_col(6, [2,4,5])

    # print some information of the boundary matrix:
    print()
    print("The boundary matrix has %d columns:" % boundary_matrix.get_num_cols())
    for col_idx in range(boundary_matrix.get_num_cols()):
        s = "Column %d represents a cell of dimension %d." % (col_idx, boundary_matrix.get_dim(col_idx))
        if (not boundary_matrix.is_empty(col_idx)):
            s = s + " Its boundary consists of the cells " + " ".join([str(c) for c in boundary_matrix.get_col(col_idx)])
        print(s)
    print("Overall, the boundary matrix has %d entries." % boundary_matrix.get_num_entries())

    pairs = phat.compute_persistence_pairs(boundary_matrix)

    pairs.sort()

    print()

    print("There are %d persistence pairs: " % len(pairs))
    for pair in pairs:
        print("Birth: %d, Death: %d" % pair)