from dionysus import *
from dionysus import viewer as v
import sys
from math import sqrt
if len(sys.argv) < 2:
print "Usage: %s POINTS" % sys.argv[0]
points = read_points(sys.argv[1])
f = Filtration()
fill_alpha_complex(points, f)
#f = Filtration((s for s in f if s.data[0] < 1))
f.sort(dim_data_cmp)
p = StaticCohomologyPersistence(f, prime = 11)
p.pair_simplices()
dgms = init_diagrams(p,f, lambda s: sqrt(s.data[0]), lambda n: n.cocycle)
#v.show_diagram(dgms[0])
#pt = v.show_diagram(dgms[1])
pt = v.show_diagram(dgms)
#pt1 = v.show_diagram(dgms[1])
#pt2 = v.show_diagram(dgms[1])
#pt3 = v.show_diagram(dgms[1])
#print pt
if pt:
#if pt1 and pt2 and pt3:
#rf = Filtration((s for s in f if sqrt(s.data[0]) <= pt[0]))
#rf = Filtration((s for s in f if sqrt(s.data[0]) < pt[1]))
rf = Filtration((s for s in f if sqrt(s.data[0]) <= (pt[0] + pt[1])/2))
#rf = Filtration((s for s in f if sqrt(s.data[0]) < min(pt1[1], pt2[1], pt3[1])))
values = circular.smooth(rf, pt[2])
#values1 = circular.smooth(rf, pt1[2])
#values2 = circular.smooth(rf, pt2[2])
#values3 = circular.smooth(rf, pt3[2])
#print pt[2]
cocycle = [rf[i] for (c,i) in pt[2] if i < len(rf)]
#print cocycle
v.show_complex(points, values = values)
v.show_complex(points, subcomplex = cocycle)
v.show_complex(points, rf, values = values, subcomplex = cocycle)
#vals = [values1[i] + values2[i] + values3[i] for i in xrange(len(values1))]
#v.show_complex(points, values = vals)
#v.show_complex(points, rf, values)
#v.show_complex(points, rf, values, point_size = 6.)
#v.show_complex(points, rf, vals, point_size = 6.)