diff --git a/src/db_utils/db_creation.py b/src/db_utils/db_creation.py index d45851494a920e2c5cae8dd78e0cc389718c0f9b..425441a91fb48fb960052b99c303f63536d507d2 100755 --- a/src/db_utils/db_creation.py +++ b/src/db_utils/db_creation.py @@ -3,147 +3,221 @@ # -*- coding: utf-8 -*- - -#Creation of the database using Sqlite3 and SQL commands +""" +Creation of the database using Sqlite3 and SQL commands +""" import sqlite3 - - -conn = sqlite3.connect("../../Results/Db_creation/chia_pet_database.db") -c = conn.cursor() - - -########################### -# Create table - gin_gene # -########################### -c.execute('''CREATE TABLE IF NOT EXISTS gin_gene - ([name] VARCHAR(30) NOT NULL, - [id] INT NOT NULL, - [chromosome] VARCHAR(2) NOT NULL, - [start] INT NOT NULL, - [stop] INT NOT NULL, - [strand] VARCHAR(1) NOT NULL, - PRIMARY KEY ([id]))''') - - -########################### -# Create table - gin_exon # -########################### -c.execute('''CREATE TABLE IF NOT EXISTS gin_exon - ([id] VARCHAR(30) NOT NULL, - [pos] INT NOT NULL, - [name] VARCHAR(45) NOT NULL, - [id_gene] INT NOT NULL, - [chromosome] VARCHAR(2) NOT NULL, - [start] INT NOT NULL, - [stop] INT NOT NULL, - [strand] VARCHAR(1) NOT NULL, - PRIMARY KEY ([id]) - FOREIGN KEY ([id_gene]) REFERENCES gin_gene([id]))''') - - -############################## -# Create table - gin_project # -############################## -c.execute('''CREATE TABLE IF NOT EXISTS gin_project - ([id] INT NOT NULL, - [id_sample] VARCHAR(45) NOT NULL, - [id_project] VARCHAR(45) NOT NULL, - [database] VARCHAR(45) NOT NULL, - [name] VARCHAR(45) NULL, - [description] TEXT NULL, - [antiboby] VARCHAR(45) NOT NULL, - [cell_line] VARCHAR(45) NOT NULL, - [institute] VARCHAR(45) NULL, - [citation] VARCHAR(20) NULL, - PRIMARY KEY ([id]))''') - - -##################################### -# Create table - gin_gene_frequency # -##################################### -c.execute('''CREATE TABLE IF NOT EXISTS gin_gene_frequency - ([id] INT NOT NULL, - [ft] VARCHAR(3) NOT NULL, - [id_gene] INT NOT NULL, - [frequency] FLOAT NULL, - PRIMARY KEY ([id]), - FOREIGN KEY ([id_gene]) REFERENCES gin_gene([id]))''') - - -##################################### -# Create table - gin_exon_frequency # -##################################### -c.execute('''CREATE TABLE IF NOT EXISTS gin_exon_frequency - ([id] INT NOT NULL, - [ft] VARCHAR(3) NOT NULL, - [id_exon] VARCHAR(30) NOT NULL, - [frequency] FLOAT NULL, - PRIMARY KEY ([id]), - FOREIGN KEY ([id_exon]) REFERENCES gin_exon([id]))''') - - -####################################### -# Create table - gin_exon_interaction # -####################################### -c.execute('''CREATE TABLE IF NOT EXISTS gin_exon_interaction - ([id] INT NOT NULL, - [force] INT NOT NULL, - [exon1] VARCHAR(30) NOT NULL, - [exon2] VARCHAR(30) NOT NULL, - [id_project] INT NOT NULL, - [level] VARCHAR(25) NOT NULL, - PRIMARY KEY ([id]), - FOREIGN KEY ([exon1]) REFERENCES gin_exon([id]), - FOREIGN KEY ([exon2]) REFERENCES gin_exon([id]), - FOREIGN KEY ([id_project]) REFERENCES gin_project([id]))''') - - -####################################### -# Create table - gin_gene_interaction # -####################################### -c.execute('''CREATE TABLE IF NOT EXISTS gin_gene_interaction - ([id] INT NOT NULL, - [force] INT NOT NULL, - [gene1] INT NOT NULL, - [gene2] INT NOT NULL, - [id_project] INT NOT NULL, - [level] VARCHAR(25) NOT NULL, - PRIMARY KEY ([id]), - FOREIGN KEY ([gene1]) REFERENCES gin_gene([id]), - FOREIGN KEY ([gene2]) REFERENCES gin_gene([id]), - FOREIGN KEY ([id_project]) REFERENCES gin_project([id]))''') - - -############################################ -# Create table - gin_project_splicing_lore # -############################################ -c.execute('''CREATE TABLE IF NOT EXISTS gin_project_splicing_lore - ([id] INT NOT NULL, - [project_name] VARCHAR(45) NULL, - [source_db] VARCHAR(45) NOT NULL, - [db_id_project] VARCHAR(15) NOT NULL, - [sf_name] VARCHAR(45) NOT NULL, - [cl_name] VARCHAR(45) NOT NULL, +from .config import Config +import logging +from ..logging_conf import logging_def + + +def create_gin_gene_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_gene. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_gene + ([name] VARCHAR(30) NOT NULL, + [id] INT NOT NULL, + [chromosome] VARCHAR(2) NOT NULL, + [start] INT NOT NULL, + [stop] INT NOT NULL, + [strand] VARCHAR(1) NOT NULL, PRIMARY KEY ([id]))''') - - -############################ -# Create table - ase_event # -############################ -c.execute('''CREATE TABLE IF NOT EXISTS ase_event + conn.commit() + + +def create_gin_exon_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_exon. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_exon + ([id] VARCHAR(30) NOT NULL, + [pos] INT NOT NULL, + [name] VARCHAR(45) NOT NULL, + [id_gene] INT NOT NULL, + [chromosome] VARCHAR(2) NOT NULL, + [start] INT NOT NULL, + [stop] INT NOT NULL, + [strand] VARCHAR(1) NOT NULL, + PRIMARY KEY ([id]) + FOREIGN KEY ([id_gene]) REFERENCES gin_gene([id]))''') + conn.commit() + + +def create_gin_projects_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_project. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_projects + ([id] INT NOT NULL, + [id_sample] VARCHAR(45) NOT NULL, + [id_project] VARCHAR(45) NOT NULL, + [database] VARCHAR(45) NOT NULL, + [name] VARCHAR(45) NULL, + [description] TEXT NULL, + [antiboby] VARCHAR(45) NOT NULL, + [cell_line] VARCHAR(45) NOT NULL, + [institute] VARCHAR(45) NULL, + [citation] VARCHAR(20) NULL, + PRIMARY KEY ([id]))''') + conn.commit() + + +def create_gin_gene_frequency_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_gene_frequency. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_gene_frequency + ([id] INT NOT NULL, + [ft] VARCHAR(3) NOT NULL, + [id_gene] INT NOT NULL, + [frequency] FLOAT NULL, + PRIMARY KEY ([id]), + FOREIGN KEY ([id_gene]) REFERENCES gin_gene([id]))''') + conn.commit() + + +def create_gin_exon_frequency_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_exon_frequency. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_exon_frequency ([id] INT NOT NULL, - [id_project] INT NOT NULL, - [gene_id] INT NOT NULL, - [pos] INT NOT NULL, - [exon_id] VARCHAR(30) NOT NULL, - [delta_psi] FLOAT NULL, - [pvalue] FLOAT NULL, - [pvalue_glm_cor] FLOAT NULL, + [ft] VARCHAR(3) NOT NULL, + [id_exon] VARCHAR(30) NOT NULL, + [frequency] FLOAT NULL, PRIMARY KEY ([id]), - FOREIGN KEY ([exon_id]) REFERENCES gin_exon([id]), - FOREIGN KEY ([gene_id]) REFERENCES gin_gene([id]), - FOREIGN KEY ([id_project]) REFERENCES gin_project_splicing_lore([id]))''') - -conn.commit() \ No newline at end of file + FOREIGN KEY ([id_exon]) REFERENCES gin_exon([id]))''') + conn.commit() + + +def create_gin_exon_interaction_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_exon_interaction. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_exon_interaction + ([id] INT NOT NULL, + [force] INT NOT NULL, + [exon1] VARCHAR(30) NOT NULL, + [exon2] VARCHAR(30) NOT NULL, + [id_project] INT NOT NULL, + [level] VARCHAR(25) NOT NULL, + PRIMARY KEY ([id]), + FOREIGN KEY ([exon1]) REFERENCES gin_exon([id]), + FOREIGN KEY ([exon2]) REFERENCES gin_exon([id]), + FOREIGN KEY ([id_project]) REFERENCES gin_project([id]))''') + conn.commit() + + +def create_gin_gene_interaction_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_gene_interaction. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_gene_interaction + ([id] INT NOT NULL, + [force] INT NOT NULL, + [gene1] INT NOT NULL, + [gene2] INT NOT NULL, + [id_project] INT NOT NULL, + [level] VARCHAR(25) NOT NULL, + PRIMARY KEY ([id]), + FOREIGN KEY ([gene1]) REFERENCES gin_gene([id]), + FOREIGN KEY ([gene2]) REFERENCES gin_gene([id]), + FOREIGN KEY ([id_project]) REFERENCES gin_project([id]))''') + conn.commit() + + +def create_gin_project_splicing_lore_table(conn: sqlite3.Connection) -> None: + """ + Create table gin_project_splicing_lore + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_project_splicing_lore + ([id] INT NOT NULL, + [project_name] VARCHAR(45) NULL, + [source_db] VARCHAR(45) NOT NULL, + [db_id_project] VARCHAR(15) NOT NULL, + [sf_name] VARCHAR(45) NOT NULL, + [cl_name] VARCHAR(45) NOT NULL, + PRIMARY KEY ([id]))''') + conn.commit() + + +def create_gin_ase_event_table(conn: sqlite3.Connection) -> None: + """ + Create table ase_event. + + :param conn: Connection to chia-pet database. + """ + c = conn.cursor() + c.execute('''CREATE TABLE IF NOT EXISTS gin_ase_event + ([id] INT NOT NULL, + [id_project] INT NOT NULL, + [gene_id] INT NOT NULL, + [pos] INT NOT NULL, + [exon_id] VARCHAR(30) NOT NULL, + [delta_psi] FLOAT NULL, + [pvalue] FLOAT NULL, + [pvalue_glm_cor] FLOAT NULL, + PRIMARY KEY ([id]), + FOREIGN KEY ([exon_id]) REFERENCES gin_exon([id]), + FOREIGN KEY ([gene_id]) REFERENCES gin_gene([id]), + FOREIGN KEY ([id_project]) + REFERENCES gin_project_splicing_lore([id]))''') + conn.commit() + + +def main_create_db(logging_level: str = "DISABLE"): + """ + Create an empty chia-pet database. + """ + logging_def(Config.db_file.parent, __file__, logging_level) + conn = sqlite3.connect(Config.db_file) + logging.debug('Creation of gin_gene') + create_gin_gene_table(conn) + logging.debug('Creation of gin_exon') + create_gin_exon_table(conn) + logging.debug('Creation of gin_project_gene') + create_gin_projects_table(conn) + logging.debug('Creation of gin_gene_frequency_table') + create_gin_gene_frequency_table(conn) + logging.debug('Creation of gin_exon_frequency_table') + create_gin_exon_frequency_table(conn) + logging.debug('Creation of gin_exon_interaction_table') + create_gin_exon_interaction_table(conn) + logging.debug('Creation of gin_gene_interaction_table') + create_gin_gene_interaction_table(conn) + logging.debug('Creation of gin_project_splicing_lore_table') + create_gin_project_splicing_lore_table(conn) + logging.debug('Creation of gin_ase_event_table') + create_gin_ase_event_table(conn) + + +if __name__ == "__main__": + main_create_db("DEBUG")