diff --git a/access_node/__main__.py b/access_node/__main__.py index 29b726c0b9614fb1a72a89953f11c26ea1047446..16aa09c4e702d0b2de99397f5f73280c0d36d3a7 100644 --- a/access_node/__main__.py +++ b/access_node/__main__.py @@ -57,33 +57,39 @@ def SetupArborTables(postgres_username, postgres_password, port): 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 SIMULATION_NODES CASCADE") + cur.execute("DROP TABLE IF EXISTS ARBOR_SIMULATION_NODES CASCADE") cur.execute("DROP TABLE IF EXISTS ATTRIBUTES CASCADE") - cur.execute('''CREATE TABLE SIMULATION_NODES ( - NODE_ID INT PRIMARY KEY NOT NULL UNIQUE, + + cur.execute('''CREATE TABLE ARBOR_SIMULATION_NODES ( + NODE_ID INT PRIMARY KEY NOT NULL UNIQUE, ADDRESS VARCHAR(25), 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), + PROPERTY VARCHAR(50) NOT NULL, PRIMARY KEY (CELL_ID, PROPERTY), FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID), );''') + cur.execute('''CREATE TABLE PROBES ( PROBE_ID INT PRIMARY KEY NOT NULL UNIQUE, - CELL_ID INT, - SEGMENT_ID INT, + CELL_ID INT NOT NULL, + SEGMENT_ID INT NOT NULL, POSITION FLOAT, NODE_ID INT, - FOREIGN KEY (NODE_ID) REFERENCES SIMULATION_NODES (NODE_ID), + FOREIGN KEY (NODE_ID) REFERENCES ARBOR_SIMULATION_NODES (NODE_ID), FOREIGN KEY (CELL_ID) REFERENCES CELLS (CELL_ID));''') + cur.execute('''CREATE TABLE ATTRIBUTES ( ATTRIBUTE_ID INT PRIMARY KEY NOT NULL UNIQUE, - NAME INT NOT NULL, + NAME VARCHAR(50) NOT NULL, );''') + con.commit() con.close() print("Arbor tables created successfully!\n") diff --git a/access_node/controllers/nest_controller.py b/access_node/controllers/nest_controller.py index 20ff5be7d894904be751293a986a1bff179847c6..517284330826983094231a3a29d0cc9607e4c98a 100644 --- a/access_node/controllers/nest_controller.py +++ b/access_node/controllers/nest_controller.py @@ -13,6 +13,12 @@ import requests import psycopg2 import numpy as np + +def connect_to_database(): + return psycopg2.connect(database="postgres", user="postgres", + password="docker", host="database", port="5432") + + def nest_get_gids(): # noqa: E501 """Retrieves the list of all GID. @@ -21,12 +27,12 @@ def nest_get_gids(): # noqa: E501 :rtype: List[int] """ - con = psycopg2.connect(database="postgres", user="postgres", - password="docker", host="database", port="5432") - + con = connect_to_database() cur = con.cursor() + cur.execute("SELECT GID FROM GIDS") gids = [i[0] for i in cur.fetchall()] + con.close() return gids @@ -41,12 +47,12 @@ def nest_get_gids_in_population(population_id): # noqa: E501 :rtype: List[int] """ - con = psycopg2.connect(database="postgres", user="postgres", - password="docker", host="database", port="5432") + con = connect_to_database() cur = con.cursor() cur.execute("SELECT GID FROM GIDS WHERE GIDS.POPULATION_ID ="+str(population_id)) gids = [i[0] for i in cur.fetchall()] + con.close() return gids @@ -59,8 +65,7 @@ def nest_get_multimeter_info(): # noqa: E501 :rtype: MultimeterInfo """ - con = psycopg2.connect(database="postgres", user="postgres", - password="docker", host="database", port="5432") + con = connect_to_database() cur = con.cursor() cur.execute("SELECT MULTIMETER_ID FROM MULTIMETERS") @@ -80,8 +85,8 @@ def nest_get_multimeter_info(): # noqa: E501 "attributes": attributes[i][0], "gids": gids[i]}) + con.close() - return mult_info @@ -169,9 +174,7 @@ def nest_get_neuron_properties(gids=None): # noqa: E501 :rtype: List[NestNeuronProperties] """ - con = psycopg2.connect(database="postgres", user="postgres", - password="docker", host="database", port="5432") - + con = connect_to_database() cur = con.cursor() cur.execute("Select * FROM GIDS LIMIT 0") @@ -183,6 +186,7 @@ def nest_get_neuron_properties(gids=None): # noqa: E501 cur.execute("Select * FROM GIDS") else: cur.execute("Select * FROM GIDS WHERE GID IN %s", (tuple(gids),)) + con.close() properties = np.array(cur.fetchall()) @@ -207,12 +211,13 @@ def nest_get_populations(): # noqa: E501 :rtype: List[int] """ - con = psycopg2.connect(database="postgres", user="postgres", - password="docker", host="database", port="5432") - + con = connect_to_database() cur = con.cursor() + cur.execute("SELECT DISTINCT (POPULATION_ID) FROM GIDS") populations = [i[0] for i in cur.fetchall()] + + con.close() return populations @@ -224,13 +229,14 @@ def nest_get_simulation_time_info(): # noqa: E501 :rtype: SimulationTimeInfo """ - con = psycopg2.connect(database="postgres", user="postgres", - password="docker", host="database", port="5432") - + con = connect_to_database() cur = con.cursor() + cur.execute("SELECT MIN(CURRENT_SIM_TIME) FROM SIMULATION_NODES") current_time = cur.fetchall()[0][0] + con.close() + # TODO Add Start and End time when available time_info = SimulationTimeInfo(current=current_time) return time_info