examples/triangle/triangle.py
author Christos Mantoulidis <cmad@stanford.edu>
Tue, 28 Jul 2009 10:58:53 -0700
branchdev
changeset 153 7731c42892de
parent 129 95454ea3f9c0
child 181 1ee6edc17cb6
permissions -rw-r--r--
Modified WeightedRips::generate() to incorporate the simplex-appearance-value computation (before it would have to be done explicitly by the user by a for-loop after the call to generate())

from dionysus import Simplex, Filtration, StaticPersistence, \
                     vertex_cmp, data_cmp, data_dim_cmp \

complex = [Simplex((0,),        0),                 # A
           Simplex((1,),        1),                 # B
           Simplex((2,),        2),                 # C
           Simplex((0,1),       2.5),               # AB
           Simplex((1,2),       2.9),               # BC
           Simplex((0,2),       3.5),               # CA
           Simplex((0,1,2),     5)]                 # ABC

print "Complex:", complex
print "Vertex: ", sorted(complex, vertex_cmp)
print "Data:   ", sorted(complex, data_cmp)
print "DataDim:", sorted(complex, data_dim_cmp)

complex.sort(vertex_cmp)        # put complex in the lexicographic order; required for persistence computation

f = Filtration(complex, data_cmp)
print "Complex in the filtration order:", ', '.join((str(complex[i]) for i in f))

p = StaticPersistence(f)
p.pair_simplices()
for i in p:
    print "%s (%d) - %s (%d)" % (complex[f[p(i)]], i.sign(), 
                                 complex[f[p(i.pair)]], i.pair.sign())
    print "Cycle (%d):" % len(i.cycle()), " + ".join((str(complex[f[p(ii)]]) for ii in i.cycle()))

print "Number of unpaired simplices:", len([i for i in p if i == i.pair])