1 # Computes the persistence diagram of the alpha shapes in both 2D and 3D
2 # (decided dynamically based on the input file)
4 from dionysus import Filtration, StaticPersistence, data_dim_cmp, vertex_cmp, \
5 fill_alpha3D_complex, fill_alpha2D_complex, points_file
6 from sys import argv, exit
11 print "Usage: %s POINTS" % argv[0]
14 points = [p for p in points_file(argv[1])]
16 if len(points[0]) == 2: # 2D
17 fill_alpha2D_complex(points, simplices)
18 elif len(points[1]) == 3: # 3D
19 fill_alpha3D_complex(points, simplices)
21 simplices.sort(vertex_cmp) # Must ensure lexicographic ordering
22 print "Total number of simplices:", len(simplices)
24 f = Filtration(simplices, data_dim_cmp)
25 print "Filtration initialized"
27 p = StaticPersistence(f)
28 print "StaticPersistence initialized"
31 print "Simplices paired"
33 print "Outputting persistence diagram"
36 b = simplices[f[p(i)]]
38 print b.dimension(), sqrt(b.data), "inf"
41 d = simplices[f[p(i.pair)]]
42 print b.dimension(), sqrt(b.data), sqrt(d.data)