06-flat-torus.py
author Dmitriy Morozov <dmitriy@mrzv.org>
Mon, 18 Jun 2012 10:04:58 -0700
changeset 5 9acb920a945c
parent 2 4b3728f0d920
permissions -rw-r--r--
Added PDF of the talk

# 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)

distances = TorusDistances(250)
rips = Rips(distances)
f = Filtration()
rips.generate(2, .75, 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])