CoCalc Public FilesBoolean-Cayley-graphs / sage-code / test_psycopg2_classification_database_prototypes.ipynbOpen with one click!
Author: Paul Leopardi
Compute Environment: Ubuntu 18.04 (Deprecated)
In [1]:
import datetime import os import psycopg2 from boolean_cayley_graphs.bent_function import BentFunction from boolean_cayley_graphs.classification_database_psycopg2 import * from boolean_cayley_graphs.bent_function_cayley_graph_classification import BentFunctionCayleyGraphClassification
In [2]:
sobj_dirname=os.path.join("..","sobj")
In [3]:
def drop_database(db_name): conn = psycopg2.connect(dbname="postgres") conn.set_isolation_level(ISOLATION_LEVEL_AUTOCOMMIT) curs = conn.cursor() curs.execute( "DROP DATABASE " + db_name) conn.commit()
In [4]:
try: drop_database('test_p6') except: pass conn = create_database('test_p6') conn = create_classification_tables('test_p6')
In [5]:
for i in range(1,5): print(i) name = "p6_"+str(i) cgc = BentFunctionCayleyGraphClassification.load_mangled(name + ".sobj", dir=sobj_dirname) insert_classification(conn, cgc, name)
1 2 3 4
In [6]:
cgc.report()
Algebraic normal form of Boolean function: x0*x1*x2 + x0*x3 + x1*x3*x4 + x1*x5 + x2*x3*x5 + x2*x3 + x2*x4 + x2*x5 + x3*x4 + x3*x5 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 64, 28, 12)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 3 extended Cayley classes in the extended translation class.
In [7]:
bentf = BentFunction(cgc.algebraic_normal_form) c = select_classification_where_bent_function(conn, bentf) c.report()
Algebraic normal form of Boolean function: x0*x1*x2 + x0*x3 + x1*x3*x4 + x1*x5 + x2*x3*x5 + x2*x3 + x2*x4 + x2*x5 + x3*x4 + x3*x5 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 64, 28, 12)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 3 extended Cayley classes in the extended translation class.
In [8]:
c = select_classification_where_name(conn, "p6_1") c.report()
Algebraic normal form of Boolean function: x0*x1 + x2*x3 + x4*x5 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 64, 28, 12)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 2 extended Cayley classes in the extended translation class.
In [9]:
curs = conn.cursor() print(datetime.datetime.now(), "before") curs.execute("SELECT COUNT(graph_id) FROM cayley_graph") print(datetime.datetime.now(), "after") for row in curs: for x in row: print(x)
2020-09-19 19:23:35.687522 before 2020-09-19 19:23:35.688587 after 12
In [10]:
print(datetime.datetime.now(), "before") curs.execute("SELECT COUNT(graph_id) FROM graph") print(datetime.datetime.now(), "after") for row in curs: for x in row: print(x)
2020-09-19 19:23:35.777019 before 2020-09-19 19:23:35.777740 after 11
In [11]:
conn.close()
In [12]:
try: drop_database('test_p8') except: pass conn = create_database('test_p8') conn = create_classification_tables('test_p8')
In [13]:
for i in range(1,11): name = "p8_"+str(i) cgc = BentFunctionCayleyGraphClassification.load_mangled(name + ".sobj", dir=sobj_dirname) print(datetime.datetime.now(), i) insert_classification(conn, cgc, name) print(datetime.datetime.now())
2020-09-19 19:23:40.962346 1 2020-09-19 19:23:57.198127 2 2020-09-19 19:24:14.249456 3 2020-09-19 19:24:32.799106 4 2020-09-19 19:24:51.402998 5 2020-09-19 19:25:09.035606 6 2020-09-19 19:25:27.242895 7 2020-09-19 19:25:46.095698 8 2020-09-19 19:26:04.052607 9 2020-09-19 19:26:21.101727 10 2020-09-19 19:26:38.921789
In [14]:
c8_5 = select_classification_where_name(conn, "p8_5") c8_5.report()
Algebraic normal form of Boolean function: x0*x1*x2 + x0*x6 + x1*x3*x4 + x1*x4 + x1*x5 + x2*x3*x5 + x2*x4 + x3*x7 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 256, 120, 56)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 9 extended Cayley classes in the extended translation class.
In [15]:
bentf = BentFunction(c8_5.algebraic_normal_form) c = select_classification_where_bent_function(conn, bentf) c.report()
Algebraic normal form of Boolean function: x0*x1*x2 + x0*x6 + x1*x3*x4 + x1*x4 + x1*x5 + x2*x3*x5 + x2*x4 + x3*x7 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 256, 120, 56)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 9 extended Cayley classes in the extended translation class.
In [16]:
c8_6 = select_classification_where_name(conn, "p8_6") c8_6.report()
Algebraic normal form of Boolean function: x0*x1*x2 + x0*x2 + x0*x3 + x1*x3*x4 + x1*x6 + x2*x3*x5 + x2*x4 + x5*x7 Function is bent. SDP design incidence structure t-design parameters: (True, (2, 256, 120, 56)) Classification of Cayley graphs and classification of Cayley graphs of duals are the same: There are 9 extended Cayley classes in the extended translation class.
In [17]:
curs = conn.cursor() print(datetime.datetime.now(), "before") curs.execute("SELECT COUNT(*) FROM cayley_graph") print(datetime.datetime.now(), "after") for row in curs: for x in row: print(x)
2020-09-19 19:26:43.102174 before 2020-09-19 19:26:43.102959 after 66
In [18]:
conn.close() conn = connect_to_database('test_p8')
In [19]:
curs = conn.cursor() print(datetime.datetime.now(), "before") curs.execute("SELECT COUNT(*) FROM cayley_graph") print(datetime.datetime.now(), "after") for row in curs: for x in row: print(x)
2020-09-19 19:26:43.428264 before 2020-09-19 19:26:43.429710 after 66
In [20]:
print(datetime.datetime.now(), "before") curs.execute("SELECT COUNT(*) FROM graph") print(datetime.datetime.now(), "after") for row in curs: for x in row: print(x)
2020-09-19 19:26:43.535688 before 2020-09-19 19:26:43.537105 after 55
In [21]:
conn.close()
In [22]:
conn = connect_to_database('test_p8')
In [23]:
curs = conn.cursor() print(datetime.datetime.now(), "before") curs.execute(""" select name, cayley_graph_index, graph_id, count(*) from matrices, ( select name, bent_function, cayley_graph_index, graph_id from ( select graph_id from cayley_graph group by graph_id having count (graph_id) > 1L ) as repeats natural join cayley_graph natural join bent_function ) as repeats_with_counts where matrices.bent_function = repeats_with_counts.bent_function and matrices.bent_cayley_graph_index = repeats_with_counts.cayley_graph_index group by name, cayley_graph_index, graph_id order by graph_id """) print(datetime.datetime.now(), "after") for row in curs: for x in row: print(x, end=" ") print("")
2020-09-19 19:26:43.791740 before 2020-09-19 19:26:44.362517 after p8_1 0 1 34816 p8_2 0 1 6144 p8_1 1 2 30720 p8_2 3 2 2048 p8_5 0 19 4096 p8_6 0 19 4096 p8_5 1 20 6144 p8_6 1 20 6144 p8_5 2 21 6144 p8_6 2 21 6144 p8_5 3 22 2048 p8_6 5 22 2048 p8_5 4 23 2048 p8_6 8 23 2048 p8_5 5 24 6144 p8_6 6 24 6144 p8_5 6 25 6144 p8_6 7 25 6144 p8_5 7 26 16384 p8_6 3 26 16384 p8_5 8 27 16384 p8_6 4 27 16384
In [24]:
conn.close()
In [ ]: