def test(): curve = Curve({0: -2, 1: 2, 2: 0, 3: 1, 4: -2, 5: 1, 6: -7}) assert (curve.curve == Curve(curve.reflect()).reflect()) assert (curve.normalize() == Curve(curve.normalize()).normalize()) assert (curve.normalize_reflect() == Curve(curve.normalize()).reflect()) assert (min([c for k, c in curve.normalize().items()]) == -0.5) assert (max([c for k, c in curve.normalize().items()]) == 0.5)
def test(): curve = Curve({0: -2, 1: 2, 2: 0, 3: 1, 4: -2, 5: 1, 6: -7}) assert (curve.curve == Curve(curve.reflect()).reflect()) assert (curve.normalize() == Curve(curve.normalize()).normalize()) assert (curve.normalize_reflect() == Curve(curve.normalize()).reflect()) assert (min([c for k, c in curve.normalize().items()]) == -0.5) assert (max([c for k, c in curve.normalize().items()]) == 0.5) curve = Curve({7: -2, 8: 2, 9: 0, 10: 1, 11: -2, 12: 1, 13: -7}) tcurve = curve.trim(8.5, 11) assert (min(tcurve.keys()) == 9) assert (max(tcurve.keys()) == 11)
def test(): # integer curve 1 curve = Curve({0:-2, 1:2, 2:0, 3:3, 4:-4, 5:1, 6:-7}) tmt = {0:(3,6),1:(1,0),2:(1,0),3:(3,6),4:(5,6),5:(5,6),6:(6,6)} assert(tmt == compute_merge_tree(curve.curve)) assert(tmt == compute_merge_tree(curve.normalize())) tMt = {0:(0,3),1:(2,3),2:(2,3),3:(3,3),4:(4,3),5:(4,3),6:(6,3)} assert(tMt == compute_merge_tree(curve.reflect())) assert(tMt == compute_merge_tree(curve.normalize_reflect())) # integer curve 2 curve2 = Curve({0:0, 1:-1, 2:-2, 3:1, 4:3, 5:6, 6:2}) tmt2 = {0:(0,2),1:(1,2),2:(2,2),3:(3,2),4:(4,2),5:(5,2),6:(5,2)} assert(tmt2 == compute_merge_tree(curve2.curve)) assert(tmt2 == compute_merge_tree(curve2.normalize())) tMt2 = {0:(2,5),1:(1,0),2:(2,5),3:(3,5),4:(4,5),5:(5,5),6:(6,5)} assert(tMt2 == compute_merge_tree(curve2.reflect())) assert(tMt2 == compute_merge_tree(curve2.normalize_reflect())) import numpy as np # discretized smooth curve # round entries to avoid round-off errors x = np.arange(-2.5, 5.01, 0.01) y = -0.25 * x ** 4 + 4.0/3 * x ** 3 + 0.5 * x ** 2 - 4.0 * x curve = Curve({round(t,2): round(v,10) for (t, v) in zip(x, y)}) tmt = {-2.5: (-2.5, -2.5), 5.0: (4.0, -2.5), 1.0: (-1.0, -2.5)} assert(tmt == births_only(curve.curve)) # discretized symmetric smooth curve # round entries to avoid round-off errors # identical depth minima are labeled by first occurrence x = np.arange(-0.75,0.76,0.01) y = 0.25*x**2*(x**2 - 0.5) curve = Curve({round(t,2): round(v,10) for (t, v) in zip(x, y)}) tmt = {-0.5 : (-0.5,-0.5), 0.5 : (0.0,-0.5)} assert(tmt == births_only(curve.curve)) tMt = {-0.75 : (-0.75,-0.75), 0.0 : (-0.5,-0.75), 0.75 : (0.5,-0.75)} print(births_only(curve.reflect())) assert (tMt == births_only(curve.reflect()))
def test(): # integer curve 1 curve = Curve({0: -2, 1: 2, 2: 0, 3: 3, 4: -4, 5: 1, 6: -7}) births_only_merge_tree = tmt.births_only(curve.curve) ti = get_sublevel_sets(births_only_merge_tree, curve.curve, 0.75) assert (ti == {0: (0, 1), 2: (1, 3), 4: (3, 5), 6: (5, 6)}) ti = get_sublevel_sets(births_only_merge_tree, curve.curve, 2) assert (ti == {0: (0, 1), 4: (3, 5), 6: (5, 6)}) ti = get_sublevel_sets(births_only_merge_tree, curve.curve, 3) assert (ti == {6: (5, 6)}) # integer curve 2 curve2 = Curve({0: 0, 1: -1, 2: -2, 3: 1, 4: 3, 5: 6, 6: 2}) births_only_merge_tree = tmt.births_only(curve2.curve) time_ints = get_sublevel_sets(births_only_merge_tree, curve2.curve, 0.75) assert (time_ints == {2: (0, 3), 6: (5, 6)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve2.curve, 1) assert (time_ints == {2: (0, 3), 6: (5, 6)}) ti = get_sublevel_sets(births_only_merge_tree, curve2.curve, 3) assert (ti == {2: (0, 5)}) # curve 3 with 3 equal points curve3 = Curve({ 0: 2, 1: 0, 2: 0, 3: 0, 4: 2, 5: 3, 6: 3, 7: 3, 8: 1.5, 9: 0 }) births_only_merge_tree = tmt.births_only(curve3.curve) time_ints = get_sublevel_sets(births_only_merge_tree, curve3.curve, 0.5) assert (time_ints == {1: (0, 4), 9: (8, 9)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve3.curve, 1.1) assert (time_ints == {1: (0, 5), 9: (7, 9)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve3.curve, 1.5) assert (time_ints == {1: (0, 5), 9: (7, 9)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve3.curve, 1.6) assert (time_ints == {1: (0, 9)}) # find maxima curve4 = Curve(curve3.reflect()) births_only_merge_tree = tmt.births_only(curve4.curve) time_ints = get_sublevel_sets(births_only_merge_tree, curve4.curve, 0.5) assert (time_ints == {0: (0, 1), 5: (4, 8)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve4.curve, 1.1) assert (time_ints == {5: (3, 9)}) # curve 3 with 2 equal points curve5 = Curve({0: 2, 1: 0, 2: 0, 3: 2, 4: 3, 5: 3, 6: 1.5, 7: 0}) births_only_merge_tree = tmt.births_only(curve5.curve) time_ints = get_sublevel_sets(births_only_merge_tree, curve5.curve, 0.5) assert (time_ints == {1: (0, 3), 7: (6, 7)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve5.curve, 1.1) assert (time_ints == {1: (0, 4), 7: (5, 7)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve5.curve, 1.5) assert (time_ints == {1: (0, 4), 7: (5, 7)}) time_ints = get_sublevel_sets(births_only_merge_tree, curve5.curve, 1.6) assert (time_ints == {1: (0, 7)}) # constant curve curve6 = Curve({0: 2, 1: 2, 2: 2, 3: 2, 4: 2, 5: 2, 6: 2, 7: 2}) births_only_merge_tree = tmt.births_only(curve6.curve) time_ints = get_sublevel_sets(births_only_merge_tree, curve6.curve, 0.5) assert (time_ints == {0: (0, 7)}) print(time_ints)