示例#1
0
def boundary_comp_dist(samples,size,radius,edge_conn=2):
    dist = []
    for i in range(samples):
        print(i)
        K = map_to_link(random_map(size,edge_conn))
        c = choice(K.crossings)
        dist.append(num_boundary_components(K,c,radius))
    return Counter(dist)
示例#2
0
def nhd_size_dist(num_samples,link_size,radius):
    nhds = []
    for i in range(num_samples):
        print(i)
        link = map_to_link(random_map(link_size,2))
        c = link.crossings[0]
        T1, T2 = tangle_neighborhood(link,c,radius)
        nhds.append((len(T1.crossings),T1.n))
    return Counter(nhds)
示例#3
0
def unrooted_isosig_dist(num_samples,size,radius,edge_conn=2):
    nhds = []
    for i in range(num_samples):
        print(i)
        link = map_to_link(random_map(size,edge_conn))
        c = choice(link.crossings)
        T1, T2 = tangle_neighborhood(link,c,radius)
        nhds.append(T1.min_isosig())
    return Counter(nhds)
示例#4
0
def isosig_dist_with_gluings(num_samples,size,radius,edge_conn=2):
    nhds = []
    for i in range(num_samples):
        print(i)
        link = map_to_link(random_map(size,edge_conn))
        c = choice(link.crossings)
        root = choice(c.crossing_strands())
        T1, T2, gluings = tangle_neighborhood(link,c,radius,hull=True)
        root = crossing_strand_from_name(T1,cslabel(root))
        nhds.append(T1.min_isosig_with_gluings(gluings,root))
    return Counter(nhds)
示例#5
0
def neighborhood_distribution_different_links(num_samples,size,radius):
    nhd_classes = []
    nhds = []
    for i in range(num_samples):
        print(i)
        link = map_to_link(random_map(size,2))
        c = link.crossings[0]
        T1, T2 = tangle_neighborhood(link,c,radius)
        nhds.append(T1)
    i = 0
    for nhd in nhds:
        print(i)
        i += 1
        already_found = False
        for nhd_class in nhd_classes:
            if nhd.is_isotopic(nhd_class[0]):
                nhd_class[1] += 1
                already_found = True
                break
        if not already_found:
            nhd_classes.append([nhd,1])    
    return nhd_classes
示例#6
0
def random_link_shadow(size, edge_conn=2):
    PD = map_to_link(random_map(size, edge_conn_param=edge_conn)).PD_code()
    return RibbonGraph(PD=PD)
def random_rooted_link(size, edge_conn=2):
    K = map_to_link(random_map(size, edge_conn))
    root = choice(K.crossing_strands())
    return K, root
示例#8
0
        if new_dist:
            nhds.append([double_volumes,1,T1])
    return nhds

"""
Asks if two sorted lists of floats are near each other
"""
def close_float_sets(L1, L2, tolerance):
    if len(L1) != len(L2):
        return False
    for i in range(len(L1)):
        if abs(L1[i]-L2[i])>tolerance:
            return False
    return True

K = map_to_link(random_map(100,2))
Kc = K.copy()
c = Kc.crossings[0]
v = Kc.exterior().volume()
G = K.dual_graph()
cycle = max(cycle_basis(G),key=len)
T1, T2, gluings = tangle_neighborhood(Kc,c,1)
print(gluings)
"""
v1 = T1.circular_sum(T1,0).exterior().volume()
v2 = T2.circular_sum(T2,0).exterior().volume()
avg_vol = v1/2+v2/2
tsums = T1.all_circular_sums(T2)
vols = map(lambda x: x.exterior().volume(), tsums)

print(v,avg_vol)
def random_alternating_knot(n):
    while True:
        L = map_to_link(random_map(n, edge_conn_param=4))
        if len(L.link_components) == 1:
            break
    return L.alternating()