In [101]:
%matplotlib inline
In [102]:
import numpy as np
import mpmath as mp
import matplotlib.pyplot as plt
In [103]:
from matplotlib import rc
rc('font', **{'family':'serif','serif':['Palatino'], 'size':'16'})
rc('text', usetex=True)
fig_width = 10
fig_height = 6
my_figsize = (fig_width, fig_height)
fig_dpi = 200
my_dpi = fig_dpi
In [104]:
platonic_names_uc = ["Tetrahedron",
"Cube",
"Octahedron",
"Dodecahedron",
"Icosahedron"]
platonic_names = ["tetrahedron",
"cube",
"octahedron",
"dodecahedron",
"icosahedron"]
platonic_faces = [4, 6, 8, 12, 20]
platonic_ints = [4, 8, 14, 73, 2649]
platonic_cons = [3, 9, 21, 263, 17241]
platonic_paths = [1, 3, 14, 17696, 57396146640]
platonic_shell_ints = [4, 7, 11, 52, 469]
platonic_shell_cons = [5, 7, 13, 155, 1985]
platonic_shell_paths = [1, 2, 4, 2166, 105999738]
In [105]:
archimedean_names_uc = ["Truncated Tetrahedron",
"Cuboctahedron",
"Truncated Cube",
"Truncated Octahedron",
"Rhombicuboctahedron",
"Truncated Cuboctahedron"]
archimedean_names = ["truncated_tetrahedron",
"cuboctahedron",
"truncated_cube",
"truncated_octahedron",
"rhombicuboctahedron",
"truncated_cuboctahedron"]
archimedean_faces = [8, 14, 14, 14, 26, 26]
archimedean_ints = [28, 340, 499, 555, 638850, 1525658]
archimedean_cons = [63, 1634, 2729, 3069, 6459801, 17672374]
archimedean_paths = [402, 10170968, 101443338, 68106377, mp.mpf('164068345221515292308'), mp.mpf('13837219462483379105902')]
archimedean_shell_ints = [21, 136, 247, 342, 70887, 515335]
archimedean_shell_cons = [40, 468, 1000, 1464, 462721, 4070813]
archimedean_shell_paths = [174, 477776, 5232294, 5704138, 64308526503247584, 13890723216176694816]
In [106]:
catalan_names_uc = ["Triakis Tetrahedron",
"Rhombic Dodecahedron",
"Triakis Octahedron",
"Tetrakis Hexahedron",
"Deltoidal Icositetrahedron",
"Pentagonal Icositetrahedron",
"Rhombic Triacontahedron"]
catalan_names = ["triakis_tetrahedron",
"rhombic_dodecahedron",
"triakis_octahedron",
"tetrakis_hexahedron",
"deltoidal_icositetrahedron",
"pentagonal_icositetrahedron",
"rhombic_triacontahedron"]
catalan_faces = [12, 12, 24, 24, 24, 24, 30]
catalan_ints = [98, 127, 12748, 50767, 209675, 345938, 2423212]
catalan_cons = [318, 493, 81296, 394377, 1989548, 3544987, 26823095]
catalan_paths = [38938, 76936, 169402670046670, 4253948297210346, 418663242727526726, 2828128000716774492, 161598744916797017978128]
catalan_shell_ints = [48, 67, 1021, 4224, 33046, 95326, 97741]
catalan_shell_cons = [115, 195, 4237, 21125, 208317, 657013, 702219]
catalan_shell_paths = [5012, 6258, 210459770300, 5894431702846, 703619122996096, 7572459719248765, 7057239571753327764]
In [107]:
platonic_shellings = [24,
480,
4224,
19041600,
1417229099520]
archimedean_shellings = [9216,
113055744,
654801408,
937087104,
mp.mpf('4728400467971102208'),
mp.mpf('688499026944479645952')]
catalan_shellings = [587040,
5836800,
66063419534592,
mp.mpf('1389323257015296'),
mp.mpf('125987819253281472'),
mp.mpf('1144572832023047616'),
mp.mpf('15574782555813226074240')]
In [108]:
all_faces = platonic_faces + archimedean_faces + catalan_faces
all_ints = platonic_ints + archimedean_ints + catalan_ints
all_cons = platonic_cons + archimedean_cons + catalan_cons
all_paths = platonic_paths + archimedean_paths + catalan_paths
all_shell_ints = platonic_shell_ints + archimedean_shell_ints + catalan_shell_ints
all_shell_cons = platonic_shell_cons + archimedean_shell_cons + catalan_shell_cons
all_shell_paths = platonic_shell_paths + archimedean_shell_paths + catalan_shell_paths
In [109]:
p_m = '^'
a_m = 'rs'
c_m = 'gp'
poly_name = ""
In [121]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_ints,p_m, label='Platonic')
plt.semilogy(archimedean_faces, archimedean_ints,a_m, label='Archimedean')
plt.semilogy(catalan_faces, catalan_ints,c_m, label='Catalan')
plt.title('Intermediates vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Intermediates')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig("polys_face_int.eps", dpi=fig_dpi, format='eps')
In [122]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_cons,p_m, label='Platonic')
plt.semilogy(archimedean_faces, archimedean_cons, a_m, label='Archimedean')
plt.semilogy(catalan_faces, catalan_cons, c_m, label='Catalan')
plt.title('Connections vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Connections')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_face_con.eps", dpi=fig_dpi, format='eps')
In [125]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_paths, p_m, label='Platonic')
plt.semilogy(archimedean_faces, 10**np.array([mp.log10(x) for x in archimedean_paths]), a_m, label='Archimedean')
plt.semilogy(catalan_faces, 10**np.array([mp.log10(x) for x in catalan_paths]), c_m, label='Catalan')
plt.title('Pathways vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Pathways')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_face_path.eps", dpi=fig_dpi, format='eps')
In [126]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_shell_ints, p_m, label='Platonic')
plt.semilogy(archimedean_faces, archimedean_shell_ints, a_m, label='Archimedean')
plt.semilogy(catalan_faces, catalan_shell_ints, c_m, label='Catalan')
plt.title('Shellable Intermediates vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Shellable Intermediates')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_face_shell_int.eps", dpi=fig_dpi, format='eps')
In [127]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_shell_cons, p_m, label='Platonic')
plt.semilogy(archimedean_faces, archimedean_shell_cons, a_m, label='Archimedean')
plt.semilogy(catalan_faces, catalan_shell_cons, c_m, label='Catalan')
plt.title('Shellable Connections vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Shellable Connections')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_face_shell_con.eps", dpi=fig_dpi, format='eps')
In [128]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_shell_paths, p_m, label='Platonic')
plt.semilogy(archimedean_faces, archimedean_shell_paths, a_m, label='Archimedean')
plt.semilogy(catalan_faces, catalan_shell_paths, c_m, label='Catalan')
plt.title('Shellable Pathways vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Shellable Pathways')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_face_shell_path.eps", dpi=fig_dpi, format='eps')
In [129]:
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.semilogy(platonic_faces, platonic_shellings, p_m, label='Platonic')
plt.semilogy(archimedean_faces, 10**np.array([mp.log10(x) for x in archimedean_shellings]), a_m, label='Archimedean')
plt.semilogy(catalan_faces, 10**np.array([mp.log10(x) for x in catalan_shellings]), c_m, label='Catalan')
plt.title('Shellings vs. Faces')
plt.xlabel('Faces in the Polyhedron')
plt.ylabel('Shellings')
plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_face_shellings.eps", dpi=fig_dpi, format='eps')
In [117]:
z1 = np.log10(np.array(all_ints))
z2 = np.array([mp.log10(x) for x in all_paths])
In [118]:
Ns = 10**np.arange(8)
[a,b] = np.polyfit(np.log10(np.array(all_ints)),np.array([mp.log10(x) for x in all_paths]),1)
print a, b
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.loglog(platonic_ints, 10**np.log10(platonic_paths), p_m, label='Platonic')
plt.loglog(archimedean_ints, 10**np.array([mp.log10(x) for x in archimedean_paths]), a_m, label='Archimedean')
plt.loglog(catalan_ints, 10**np.array([mp.log10(x) for x in catalan_paths]), c_m, label='Catalan')
plt.loglog(Ns,np.exp(b)*Ns**a, 'r', label="slope = "+str(a)[:6])
plt.title('Pathways vs. Intermediates')
plt.xlabel('Intermediates')
plt.ylabel('Pathways')
#plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_int_path.eps", dpi=fig_dpi, format='eps')
In [119]:
Ns = 10**np.arange(8)
[a,b] = np.polyfit(np.log10(np.array(all_ints)),np.array([mp.log10(x) for x in all_cons]),1)
print a, b
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.loglog(platonic_ints, 10**np.log10(platonic_cons), p_m, label='Platonic')
plt.loglog(archimedean_ints, 10**np.array([mp.log10(x) for x in archimedean_cons]), a_m, label='Archimedean')
plt.loglog(catalan_ints, 10**np.array([mp.log10(x) for x in catalan_cons]), c_m, label='Catalan')
plt.loglog(Ns,np.exp(b)*Ns**a, 'r', label="slope = "+str(a)[:6])
plt.title('Connections vs. Intermediates')
plt.xlabel('Intermediates')
plt.ylabel('Connection')
#plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_int_con.eps", dpi=fig_dpi, format='eps')
In [120]:
Ns = 10**np.arange(9)
[a,b] = np.polyfit(np.log10(np.array(all_cons)),np.array([mp.log10(x) for x in all_paths]),1)
print a, b
plt.figure(figsize=my_figsize, dpi=my_dpi)
plt.loglog(platonic_cons, 10**np.log10(platonic_paths), p_m, label='Platonic')
plt.loglog(archimedean_cons, 10**np.array([mp.log10(x) for x in archimedean_paths]), a_m, label='Archimedean')
plt.loglog(catalan_cons, 10**np.array([mp.log10(x) for x in catalan_paths]), c_m, label='Catalan')
plt.loglog(Ns,np.exp(b)*Ns**a, 'r', label="slope = "+str(a)[:6])
plt.title('Pathways vs. Connections')
plt.xlabel('Connections')
plt.ylabel('Pathways')
#plt.xlim(0,32)
plt.legend(loc = 2)
plt.savefig(poly_name+"polys_con_path.eps", dpi=fig_dpi, format='eps')