| dmitriy@126 | 1 | from math import fabs |
| dmitriy@126 | 2 | from dionysus import Rips, Filtration, StaticPersistence #, enable_log |
| dmitriy@126 | 3 | |
| dmitriy@126 | 4 | # Simple minded pairwise distance functor distance |
| dmitriy@126 | 5 | class Distances: |
| dmitriy@126 | 6 | def __len__(self): |
| dmitriy@126 | 7 | return 5 |
| dmitriy@126 | 8 | |
| dmitriy@126 | 9 | def __call__(self, x, y): |
| dmitriy@126 | 10 | return fabs(y-x) |
| dmitriy@126 | 11 | |
| dmitriy@126 | 12 | dist = Distances() |
| dmitriy@126 | 13 | r = Rips(dist) |
| dmitriy@181 | 14 | lst = Filtration() |
| dmitriy@181 | 15 | lst2 = Filtration() |
| dmitriy@126 | 16 | |
| dmitriy@126 | 17 | #enable_log('rips') |
| dmitriy@126 | 18 | |
| dmitriy@126 | 19 | r.generate(1, 3, lst.append) |
| dmitriy@126 | 20 | r.generate(1, 3, lst2.append, [0,2,4]) |
| dmitriy@126 | 21 | |
| dmitriy@126 | 22 | print "Rips complex on all vertices:", lst |
| dmitriy@126 | 23 | print "Rips complex on vertices [0,2,4]):", lst2 |
| dmitriy@126 | 24 | |
| dmitriy@126 | 25 | print "Values:", [map(r.eval, lst)] |
| dmitriy@126 | 26 | print "Sorted:", sorted(lst, r.cmp) |
| dmitriy@126 | 27 | |
| dmitriy@126 | 28 | cofaces = [] |
| dmitriy@126 | 29 | r.vertex_cofaces(2, 1, 3, cofaces.append) |
| dmitriy@126 | 30 | print "Cofaces of vertex 2:", cofaces |
| dmitriy@126 | 31 | |
| dmitriy@126 | 32 | cofaces = [] |
| dmitriy@126 | 33 | r.vertex_cofaces(2, 1, 3, cofaces.append, [0,2,4]) |
| dmitriy@126 | 34 | print "Cofaces of vertex 2 on vertices [0,2,4]:", cofaces |
| dmitriy@126 | 35 | |
| dmitriy@181 | 36 | f = lst |
| dmitriy@181 | 37 | f.sort(r.cmp) |
| dmitriy@126 | 38 | p = StaticPersistence(f) |
| dmitriy@126 | 39 | p.pair_simplices() |
| dmitriy@181 | 40 | smap = p.make_simplex_map(f) |
| dmitriy@126 | 41 | for s in p: |
| dmitriy@181 | 42 | print smap[s], s.sign() |