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')


plt.figure(figsize=my_figsize, dpi=my_dpi) plt.plot(platonic_faces, np.log(platonic_ints),p_m, label='Platonic') plt.plot(archimedean_faces, np.log(archimedean_ints),a_m, label='Archimedean') plt.plot(catalan_faces, np.log(catalan_ints),c_m, label='Catalan') plt.title('Intermediates vs. Faces') plt.xlabel('Faces in the Polyhedron') plt.ylabel('Log 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')


plt.figure(figsize=my_figsize, dpi=my_dpi) plt.plot(platonic_faces, np.log(platonic_cons),p_m, label='Platonic') plt.plot(archimedean_faces, np.log(archimedean_cons), a_m, label='Archimedean') plt.plot(catalan_faces, np.log(catalan_cons), c_m, label='Catalan') plt.title('Connections vs. Faces') plt.xlabel('Faces in the Polyhedron') plt.ylabel('Log 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')


plt.figure(figsize=my_figsize, dpi=my_dpi) plt.plot(platonic_faces, np.log(platonic_paths), p_m, label='Platonic') plt.plot(archimedean_faces, [mp.log(x) for x in archimedean_paths], a_m, label='Archimedean') plt.plot(catalan_faces, [mp.log(x) for x in catalan_paths], c_m, label='Catalan') plt.title('Pathways vs. Faces') plt.xlabel('Faces in the Polyhedron') plt.ylabel('Log 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')


4.03425697731 -3.1655210628

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')


1.16727420508 0.107233767352

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')


3.43881906554 -3.46746770013
[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.plot(np.log(platonic_ints), np.log(platonic_paths), p_m, label='Platonic') plt.plot(np.log(archimedean_ints), [mp.log(x) for x in archimedean_paths], a_m, label='Archimedean') plt.plot(np.log(catalan_ints), [mp.log(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('Log Intermediates') plt.ylabel('Log Pathways') #plt.xlim(0,32) plt.legend(loc = 2) plt.savefig(poly_name+"polys_int_path.eps", dpi=fig_dpi, format='eps')
plt.figure(figsize=my_figsize, dpi=my_dpi) plt.plot(np.log(platonic_ints), np.log(platonic_cons), p_m, label='Platonic') plt.plot(np.log(archimedean_ints), [mp.log(x) for x in archimedean_cons], a_m, label='Archimedean') plt.plot(np.log(catalan_ints), [mp.log(x) for x in catalan_cons],c_m, label='Catalan') plt.title('Connections vs. Intermediates') plt.xlabel('Log Intermediates') plt.ylabel('Log Connections') #plt.xlim(0,32) plt.legend(loc = 2) plt.savefig("polys_int_con.eps", dpi=fig_dpi, format='eps')
plt.figure(figsize=my_figsize, dpi=my_dpi) plt.plot(np.log(platonic_cons), np.log(platonic_paths), p_m, label='Platonic') plt.plot([mp.log(x) for x in archimedean_cons], [mp.log(x) for x in archimedean_paths], a_m, label='Archimedean') plt.plot([mp.log(x) for x in catalan_cons], [mp.log(x) for x in catalan_paths], c_m, label='Catalan') plt.title('Pathways vs. Connections') plt.ylabel('Log Pathways') plt.xlabel('Log Connections') #plt.xlim(0,32) plt.legend(loc = 2) plt.savefig("polys_con_path.eps", dpi=fig_dpi, format='eps')