06-flat-torus.py
author Dmitriy Morozov <dmitriy@mrzv.org>
Tue, 12 Jun 2012 22:35:53 -0700
changeset 1 a0e045bf9248
parent 0 337c84a13184
child 2 4b3728f0d920
permissions -rw-r--r--
Uncommented tutorial.py

# Flat torus
from    random      import uniform
from    math        import sqrt

class TorusDistances:
    def __init__(self, count):
        self.points = []
        for i in xrange(count):
            self.points.append((uniform(0,1), uniform(0,1)))

    def __len__(self):
        return len(self.points)

    def __call__(self, i, j):
        x1,y1 = self.points[i]
        x2,y2 = self.points[j]

        sq_dist = ((x1 - x2) % 1)**2 + ((y1 - y2) % 1)**2
        return sqrt(sq_dist)

rips = Rips(TorusDistances(200))
f = Filtration()
rips.generate(2, .5, f.append)
print "Number of simplices:", len(f)

f.sort(rips.cmp)

p = StaticPersistence(f)
p.pair_simplices()

dgm = init_diagrams(p, f, rips.eval)
show_diagram(dgm[:2])