diff --git a/access_node/__main__.py b/access_node/__main__.py index 932a1d48aa9a43c6be843514622a5b9a1878daa9..9a7c5679c74b45fb99f73276b283e2e74fac2ce7 100644 --- a/access_node/__main__.py +++ b/access_node/__main__.py @@ -21,33 +21,41 @@ def SetupNestTables(postgres_username, postgres_password, port): print("Database connection opened successfully!") cur = con.cursor() - cur.execute("DROP TABLE IF EXISTS SIMULATION_NODES CASCADE") - cur.execute("DROP TABLE IF EXISTS MULTIMETERS CASCADE") - cur.execute("DROP TABLE IF EXISTS GIDS CASCADE") - cur.execute("DROP TABLE IF EXISTS MULT_PER_GID CASCADE") - - - cur.execute('''CREATE TABLE SIMULATION_NODES ( - NODE_ID SERIAL PRIMARY KEY NOT NULL UNIQUE, - ADDRESS VARCHAR(50), - CURRENT_SIM_TIME FLOAT);''') - - cur.execute('''CREATE TABLE MULTIMETERS ( - MULTIMETER_ID INT PRIMARY KEY NOT NULL UNIQUE, - ATTRIBUTE VARCHAR(50) );''') - - cur.execute('''CREATE TABLE GIDS ( - GID INT PRIMARY KEY NOT NULL UNIQUE, - NODE_ID INT, - POPULATION_ID INT, - FOREIGN KEY (NODE_ID) REFERENCES SIMULATION_NODES (NODE_ID));''') - - cur.execute('''CREATE TABLE MULT_PER_GID( - GID INT NOT NULL, - MULTIMETER_ID INT NOT NULL, - PRIMARY KEY (GID,MULTIMETER_ID), - FOREIGN KEY (GID) REFERENCES GIDS (GID), - FOREIGN KEY (MULTIMETER_ID) REFERENCES MULTIMETERS (MULTIMETER_ID));''') + cur.execute("DROP TABLE IF EXISTS nest_simulation_node CASCADE") + cur.execute("DROP TABLE IF EXISTS nest_multimeter CASCADE") + cur.execute("DROP TABLE IF EXISTS nest_neuron CASCADE") + cur.execute("DROP TABLE IF EXISTS nest_neuron_multimeter CASCADE") + + + cur.execute(''' + CREATE TABLE nest_simulation_node ( + id SERIAL PRIMARY KEY NOT NULL UNIQUE, + address VARCHAR(50), + current_simulation_time FLOAT + );''') + + cur.execute(''' + CREATE TABLE nest_multimeter ( + id INT PRIMARY KEY NOT NULL UNIQUE, + attribute VARCHAR(50) + );''') + + cur.execute(''' + CREATE TABLE nest_neuron ( + id INT PRIMARY KEY NOT NULL UNIQUE, + simulation_node_id INT, + population_id INT, + FOREIGN KEY (simulation_node_id) REFERENCES nest_simulation_node (id) + );''') + + cur.execute(''' + CREATE TABLE nest_neuron_multimeter ( + neuron_id INT NOT NULL, + multimeter_id INT NOT NULL, + PRIMARY KEY (neuron_id,multimeter_id), + FOREIGN KEY (neuron_id) REFERENCES nest_neuron (id), + FOREIGN KEY (multimeter_id) REFERENCES nest_multimeter (id) + );''') con.commit() con.close() @@ -57,42 +65,50 @@ def SetupArborTables(postgres_username, postgres_password, port): con = ConnectToDatabase(postgres_username, postgres_password, port) print("Database connection opened successfully!") cur = con.cursor() - cur.execute("DROP TABLE IF EXISTS PROBES CASCADE") - cur.execute("DROP TABLE IF EXISTS CELLS CASCADE") - cur.execute("DROP TABLE IF EXISTS ARBOR_SIMULATION_NODES CASCADE") - cur.execute("DROP TABLE IF EXISTS ATTRIBUTES CASCADE") - - cur.execute('''CREATE TABLE ARBOR_SIMULATION_NODES ( - NODE_ID INT PRIMARY KEY NOT NULL UNIQUE, - ADDRESS VARCHAR(50), - CURRENT_SIM_TIME FLOAT);''') - - cur.execute('''CREATE TABLE CELLS ( - CELL_ID INT PRIMARY KEY NOT NULL UNIQUE - );''') - - cur.execute('''CREATE TABLE CELL_PROPERTIES ( - CELL_ID INT NOT NULL, - PROPERTY VARCHAR(50) NOT NULL, - PRIMARY KEY (CELL_ID, PROPERTY), - FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID), - );''') - - cur.execute('''CREATE TABLE ATTRIBUTES ( - ATTRIBUTE_ID INT PRIMARY KEY NOT NULL UNIQUE, - NAME VARCHAR(50) NOT NULL, - );''') - - cur.execute('''CREATE TABLE PROBES ( - PROBE_ID INT PRIMARY KEY NOT NULL UNIQUE, - CELL_ID INT NOT NULL, - SEGMENT_ID INT NOT NULL, - POSITION FLOAT, - ATTRIBUTE_ID INT NOT NULL, - NODE_ID INT, - FOREIGN KEY (NODE_ID) REFERENCES ARBOR_SIMULATION_NODES (NODE_ID), - FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID), - FOREIGN KEY (ATTRIBUTE_ID) REFERENCES ATTRIBUTES (ATTRIBUTE_ID));''') + cur.execute("DROP TABLE IF EXISTS arbor_probe CASCADE") + cur.execute("DROP TABLE IF EXISTS arbor_cell CASCADE") + cur.execute("DROP TABLE IF EXISTS arbor_simulation_node CASCADE") + cur.execute("DROP TABLE IF EXISTS arbor_attribute CASCADE") + + cur.execute(''' + CREATE TABLE arbor_simulation_node ( + id INT PRIMARY KEY NOT NULL UNIQUE, + address VARCHAR(50), + current_simulation_time FLOAT + );''') + + cur.execute(''' + CREATE TABLE arbor_cell ( + id INT PRIMARY KEY NOT NULL UNIQUE + ); + ''') + + cur.execute(''' + CREATE TABLE cell_property ( + cell_id INT NOT NULL, + property VARCHAR(50) NOT NULL, + PRIMARY KEY (cell_id, property), + FOREIGN KEY (cell_id) REFERENCES arbor_cell (id), + );''') + + cur.execute(''' + CREATE TABLE arbor_attribute ( + id INT PRIMARY KEY NOT NULL UNIQUE, + name VARCHAR(50) NOT NULL, + );''') + + cur.execute(''' + CREATE TABLE arbor_probe ( + id INT PRIMARY KEY NOT NULL UNIQUE, + cell_id INT NOT NULL, + segment_id INT NOT NULL, + position FLOAT, + attribute_id INT NOT NULL, + simulation_node_id INT, + FOREIGN KEY (simulation_node_id) REFERENCES arbor_simulation_node (id), + FOREIGN KEY (cell_id) REFERENCES arbor_cell (id), + FOREIGN KEY (attribute_id) REFERENCES arbor_attribute (id) + );''') @@ -114,10 +130,10 @@ def main(): con = ConnectToDatabase('postgres', 'docker', 5432) cur = con.cursor() # NEST - cur.execute("SELECT ADDRESS FROM SIMULATION_NODES") + cur.execute("SELECT address FROM nest_simulation_node") nodes.nest_simulation_nodes = [i[0] for i in cur.fetchall()] # Arbor - #cur.execute("SELECT ADDRESS FROM SIMULATION_NODES") + #cur.execute("SELECT address FROM nest_simulation_node") #nodes.nest_simulation_nodes = [i[0] for i in cur.fetchall()] con.close() diff --git a/access_node/controllers/arbor_controller.py b/access_node/controllers/arbor_controller.py index 4a74cee84c871a0ae1ad2d987a0b649b4bb5baed..4b8115a2c70cbc7f269f31510a1b33ee4e1086e1 100644 --- a/access_node/controllers/arbor_controller.py +++ b/access_node/controllers/arbor_controller.py @@ -30,7 +30,7 @@ def arbor_get_attributes(): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT NAME FROM ATTRIBUTES") + cur.execute("SELECT name FROM arbor_attribute") attributes = [i[0] for i in cur.fetchall()] con.close() @@ -48,7 +48,7 @@ def arbor_get_cell_ids(): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT CELL_ID FROM CELLS") + cur.execute("SELECT id FROM arbor_cell") cell_ids = [i[0] for i in cur.fetchall()] con.close() @@ -69,9 +69,9 @@ def arbor_get_cell_properties(cell_ids=None): # noqa: E501 cur = con.cursor() if cell_ids == None: - cur.execute("SELECT CELL_ID, PROPERTY FROM CELL_PROPERTIES") + cur.execute("SELECT cell_id, property FROM cell_property") else: - cur.execute("SELECT CELL_ID, PROPERTY FROM CELL_PROPERTIES WHERE CELL_PROPERTIES.CELL_ID IN %s", (tuple(cell_ids),)) + cur.execute("SELECT cell_id, property FROM cell_property WHERE cell_property.cell_id IN %s", (tuple(cell_ids),)) properties = np.array(cur.fetchall()) cell_ids = np.unique(properties[:,0]) @@ -159,20 +159,20 @@ def arbor_get_probes(attribute=None): # noqa: E501 if attribute == None: cur.execute('''SELECT - PROBES.PROBE_ID, - PROBES.CELL_ID, - PROBES.SEGMENT_ID, - PROBES.POSITION, - FROM PROBES''') + arbor_probe.id, + arbor_probe.cell_id, + arbor_probe.segment_id, + arbor_probe.position, + FROM arbor_probe''') else: cur.execute('''SELECT - PROBES.PROBE_ID, - PROBES.CELL_ID, - PROBES.SEGMENT_ID, - PROBES.POSITION, - FROM PROBES INNER JOIN ATTRIBUTES - ON PROBES.ATTRIBUTE_ID = ATTRIBUTES.ATTRIBUTE_ID - WHERE ATTRIBUTES.NAME = %s''', (attribute,)) + arbor_probe.id, + arbor_probe.cell_id, + arbor_probe.segment_id, + arbor_probe.position, + FROM arbor_probe INNER JOIN arbor_attribute + ON arbor_probe.attribute_id = arbor_attribute.id + WHERE arbor_attribute.name = %s''', (attribute,)) probes = np.array(cur.fetchall()) con.close() @@ -191,7 +191,7 @@ def arbor_get_simulation_time_info(): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT MIN(CURRENT_SIM_TIME) FROM ARBOR_SIMULATION_NODES") + cur.execute("SELECT MIN(current_simulation_time) FROM arbor_simulation_node") current_time = cur.fetchall()[0][0] con.close() diff --git a/access_node/controllers/nest_controller.py b/access_node/controllers/nest_controller.py index 6b8f1b86214cfad2729719414b6268c0c4a64c15..95a2934df78dd6ddab6aef92f4efe425c2c3c592 100644 --- a/access_node/controllers/nest_controller.py +++ b/access_node/controllers/nest_controller.py @@ -30,7 +30,7 @@ def nest_get_gids(): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT GID FROM GIDS") + cur.execute("SELECT id FROM nest_neuron") gids = [i[0] for i in cur.fetchall()] con.close() @@ -50,7 +50,7 @@ def nest_get_gids_in_population(population_id): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT GID FROM GIDS WHERE GIDS.POPULATION_ID ="+str(population_id)) + cur.execute("SELECT id FROM nest_neuron WHERE nest_neuron.population_id ="+str(population_id)) gids = [i[0] for i in cur.fetchall()] con.close() @@ -68,13 +68,13 @@ def nest_get_multimeter_info(): # noqa: E501 con = connect_to_database() cur = con.cursor() - ur.execute("SELECT * FROM MULTIMETERS;") + ur.execute("SELECT * FROM nest_multimeter;") attributes = np.array(cur.fetchall()) gids = [] for id in attributes[:,0]: - cur.execute("SELECT GID FROM MULT_PER_GID WHERE MULTIMETER_ID = %s", (id,)) + cur.execute("SELECT id FROM nest_neuron_multimeter WHERE id = %s", (id,)) gids.append([i[0] for i in cur.fetchall()]) mult_info = [] @@ -175,15 +175,15 @@ def nest_get_neuron_properties(gids=None): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("Select * FROM GIDS LIMIT 0") + cur.execute("Select * FROM nest_neuron LIMIT 0") colnames = np.array([desc[0] for desc in cur.description]) # column 1 and 2 contain the Node_id/Population_id and thus are removed colnames = np.delete(colnames, [1,2]) if gids == None: - cur.execute("Select * FROM GIDS") + cur.execute("Select * FROM nest_neuron") else: - cur.execute("Select * FROM GIDS WHERE GID IN %s", (tuple(gids),)) + cur.execute("Select * FROM nest_neuron WHERE id IN %s", (tuple(gids),)) con.close() @@ -212,7 +212,7 @@ def nest_get_populations(): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT DISTINCT (POPULATION_ID) FROM GIDS") + cur.execute("SELECT DISTINCT (population_id) FROM nest_neuron") populations = [i[0] for i in cur.fetchall()] con.close() @@ -230,7 +230,7 @@ def nest_get_simulation_time_info(): # noqa: E501 con = connect_to_database() cur = con.cursor() - cur.execute("SELECT MIN(CURRENT_SIM_TIME) FROM SIMULATION_NODES") + cur.execute("SELECT MIN(current_simulation_time) FROM nest_simulation_node") current_time = cur.fetchall()[0][0] con.close()