| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 
 |  
class sqlite_manager:
    def __init__(self, result):
        """
        """
        self.db_path=result+"mycarn_result.db"
 
    def createSQLdb(self):
        """
        """
        #Delete previous database
        if(os.path.isfile(self.db_path)):
            os.remove(self.db_path)
        #Connect database
        self.connectDB()
        #Create RNA database
        self.cur.executescript("""
            create table rna (rnaid integer primary key, name varchar unique, length integer, type integer);
            create table soft (softid integer primary key, name varchar);
            create table interact (interactid integer primary key, softid REFERENCES soft(softid), srnaid REFERENCES rna(rnaid), mrnaid REFERENCES rna(rnaid));
            create table contact (contactid integer primary key, interactid REFERENCES interact(interactid), srna_begin integer, srna_end integer, mrna_begin integer, mrna_end integer, score real);
        """)
        #Commit database
        self.conn.commit()
        #Disconnect database
        self.disconnectDB()
 
    def connectDB(self):
        """
        Connect to the database
        """
        self.conn=sqlite3.connect(self.db_path,check_same_thread=False,isolation_level=None)
        #connect
        self.cur=self.conn.cursor()
 
    def disconnectDB(self):
        """
        Disconnect the database
        """
        #close cursor 
        self.cur.close()
        #Close connection
        self.conn.close()
 
    def setSoft(self,name):
        """
        """
        self.cur.execute("insert into soft(name) values(?)",(name,))
        lastrowid=self.cur.lastrowid
        self.conn.commit()
        return lastrowid
 
    def setRNA(self,RNA_inf, type):
        """
        """
        #Connect database
        self.connectDB()
        try:
            RNA_infReader=csv.reader(open(RNA_inf, 'rb'), delimiter='\t')
            #passage de l'entete
            RNA_infReader.next()
            for i in RNA_infReader:
                self.cur.execute("insert into rna(name,length,type) values(?,?,?)",(i[0],int(i[1]),type))
            self.conn.commit()
        except IOError:
            sys.exit("Error : can not open file %s"%RNA_inf)    
        #Disconnect database
        self.disconnectDB() |