summaryrefslogtreecommitdiff
path: root/src/cython/gudhi.pyx
blob: ae9669f4f2130dc043c5f47c9735cc3ab1e5b359 (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
60
61
62
63
64
65
66
67
68
69
70
71
72
from cython cimport numeric
from libcpp.vector cimport vector
from libcpp.utility cimport pair

cimport cgudhi

# SimplexTree python interface
cdef class SimplexTree:
    cdef cgudhi.Simplex_tree_interface[cgudhi.Simplex_tree_options_full_featured] *thisptr
    def __cinit__(self, points=None, max_dimension=3, max_edge_length=float('inf')):
        self.thisptr = new cgudhi.Simplex_tree_interface[cgudhi.Simplex_tree_options_full_featured]()
        # Constructor from graph expansion
        if points is not None:
            self.thisptr.graph_expansion(points,max_dimension,max_edge_length)
    def __dealloc__(self):
        if self.thisptr != NULL:
            del self.thisptr
    def get_filtration(self):
        return self.thisptr.filtration()
    def filtration(self, simplex):
        return self.thisptr.simplex_filtration(simplex)
    def set_filtration(self, filtration):
        self.thisptr.set_filtration(<double>filtration)
    def initialize_filtration(self):
        self.thisptr.initialize_filtration()
    def num_vertices(self):
        return self.thisptr.num_vertices()
    def num_simplices(self):
        return self.thisptr.num_simplices()
    def dimension(self):
        return self.thisptr.dimension()
    def set_dimension(self, dim):
        self.thisptr.set_dimension(<int>dim)
    def find(self, simplex):
        cdef vector[int] complex
        for i in simplex:
          complex.push_back(i)
        return self.thisptr.find_simplex(complex)
    def insert(self, simplex, filtration = 0.0):
        return self.thisptr.insert_simplex(simplex, <double>filtration)
    def insert_with_subfaces(self, simplex, filtration = 0.0):
        return self.thisptr.insert_simplex_and_subfaces(simplex, <double>filtration)
    def get_filtered_tree(self):
        return self.thisptr.get_filtered_tree()
    def get_skeleton_tree(self, dim):
        return self.thisptr.get_skeleton_tree(<int>dim)
    def get_star_tree(self, simplex):
        return self.thisptr.get_star_tree(simplex)
    def get_coface_tree(self, simplex, dim):
        return self.thisptr.get_coface_tree(simplex, <int>dim)


cdef class MiniSimplexTree:
    cdef cgudhi.Simplex_tree_interface[cgudhi.Simplex_tree_options_mini] *thisptr
    def __cinit__(self):
        self.thisptr = new cgudhi.Simplex_tree_interface[cgudhi.Simplex_tree_options_mini]()
    def __dealloc__(self):
        if self.thisptr != NULL:
            del self.thisptr
    def num_vertices(self):
        return self.thisptr.num_vertices()
    def num_simplices(self):
        return self.thisptr.num_simplices()
    def dimension(self):
        return self.thisptr.dimension()
    def set_dimension(self, dim):
        self.thisptr.set_dimension(<int>dim)
    def find(self, simplex):
        cdef vector[int] complex
        for i in simplex:
          complex.push_back(i)
        return self.thisptr.find_simplex(complex)