def test_barcode(): N = 200 N_s = 50 k = int(N/5) w = .5 r = .6 vertices = get_image('C', 1, size=200, sample_size=N)[0] tangents = hm.find_tangents(vertices, k) curve = hm.get_curve(vertices, k = k, w = w) sparse = sparse_sample(vertices, N_s) v_s = vertices[sparse,:] t_s = tangents[sparse] c_s = curve[sparse] edges = hm.get_rips_complex(v_s, tangents=t_s, k = k, w = w, r = r) f, ax = plt.subplots(1,2) plt_edges, plt_barcode = ax plt_edges.scatter(v_s[:,0], v_s[:,1], marker = '.', c=c_s, s=200) for edge in edges: plt_edges.plot(v_s[edge, 0], v_s[edge, 1], lw = 1, c = 'blue') plt_edges.invert_yaxis() ordered_simplices, curve_lookup = hm.get_ordered_simplices(v_s, c_s, edges) barcode = bc.get_barcode(ordered_simplices, degree_values=c_s[np.argsort(c_s)]) b0 = barcode[barcode[:,2] == 0, :] bc.plot_barcode_gant(b0, plt=plt_barcode) plt.show()
def test_edges(): N = 200 N_s = 50 k = int(N/5) w = .5 r = .6 vertices = get_image('A', 2, size=200, sample_size=N)[0] tangents = hm.find_tangents(vertices, k) sparse = sparse_sample(vertices, N_s) v_s = vertices[sparse,:] t_s = tangents[sparse] edges = hm.get_rips_complex(v_s, tangents=t_s, k = k, w = w, r = r) plot_edges(v_s, edges, plt) plt.gca().invert_yaxis() plt.show()
def test_alpha_4d(): N = 200 N_s = 100 k = int(N/5) w = .2 r = .15 vertices = get_image('B', 2, size=200, sample_size=N)[0] tangents = hm.find_tangents(vertices, k) edges, v_s, _ = hm.alpha_complex_4d(vertices, tangents, r = r, w=w, N_s = N_s) plt.scatter(vertices[:,0], vertices[:,1], marker='.', c='gray') plt.scatter(v_s[:,0], v_s[:,1], marker='+', c='red') for edge in edges: plt.plot(v_s[edge,0], v_s[edge,1], lw = 1, c = 'blue') plt.gca().invert_yaxis() plt.show()
def test_witness_complex_4d(): N = 200 N_s = 20 k = int(N/5) w = .5 r = .6 vertices = get_image('V', 2, size=200, sample_size=N)[0] tangents = hm.find_tangents(vertices, k) edges, landmarks, sparse = hm.witness_complex_4d(vertices, tangents, w, N_s) plt.scatter(vertices[:,0], vertices[:,1], marker='.', c='gray') plt.scatter(landmarks[:,0], landmarks[:,1], marker='+', c='red') for edge in edges: plt.plot(landmarks[edge,0], landmarks[edge,1], lw = 1, c = 'blue') plt.gca().invert_yaxis() plt.show()
def test_edges_for_point(): N = 200 k = int(N/5) w = .2 r = 0.2 vertices = get_image('P', 0, size=100, sample_size=N)[0] # edges = hm.get_rips_complex(vertices, k, w, r) tangents = hm.find_tangents(vertices, k) tspace = hm.get_tspace(vertices, tangents, w) kd_tree = spatial.KDTree(tspace) edges = hm.rips_complex_for_point(0, tspace, kd_tree, r = r).T print(edges) plt.scatter(vertices[:,0], vertices[:,1], marker = '.', c='gray', s=4) for edge in edges: plt.plot(vertices[edge, 0], vertices[edge, 1], lw = 1, c = 'blue') # if annotate: # plt.annotate("{0}".format(edge[0]), (vertices[edge[0],0], vertices[edge[0],1])) # plt.annotate("{0}".format(edge[1]), (vertices[edge[1],0], vertices[edge[1],1])) plt.show()
def test_filtration(): N = 200 N_s = 50 k = int(N/5) w = .5 r = .6 vertices = get_image('A', 2, size=200, sample_size=N)[0] tangents = hm.find_tangents(vertices, k) curve = hm.get_curve(vertices, k = k, w = w) sparse = sparse_sample(vertices, N_s) v_s = vertices[sparse,:] t_s = tangents[sparse] c_s = curve[sparse] edges = hm.get_rips_complex(v_s, tangents=t_s, k = k, w = w, r = r) simplices, curve_lookup = hm.get_ordered_simplices(v_s, c_s, edges) max_degree = np.max(simplices[:,3]) degree_step = math.ceil(max_degree/16.0) verts_degree = simplices[simplices[:,4] == 0,0:3] f, ax = plt.subplots(4,4, sharex=True, sharey=True) ax[0][0].invert_yaxis() for i in range(4): for j in range(4): idx = i*4 + j deg = min(idx * degree_step, max_degree) plot_simplices(simplices, deg, v_s, ax[i][j]) ax[i][j].set_title("κ={0:1.4f}".format(curve[verts_degree[deg,0]]), fontsize=8) ax[i][j].set_xticklabels([]) ax[i][j].set_yticklabels([]) plt.tight_layout() plt.figure() barcode = bc.get_barcode(simplices, degree_values=c_s[np.argsort(c_s)]) b0 = barcode[barcode[:,2] == 0, :] bc.plot_barcode_gant(b0, plt=plt) plt.show()