Advertisement
LuciaPrieto

Untitled

Jun 16th, 2018
390
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.64 KB | None | 0 0
  1. #Módulo: consulta.py
  2. #------------------------------------------------------------------------------
  3. def interacciones(cnx, file):
  4.     """Función que a partir de la lista de proteínas que se han insertado en la
  5.    BD, va consultando las interacciones entre proteínas. Solo se insertarán
  6.    aquellas de las que se disponga información de las dos proteínas.
  7.    """
  8.    
  9.    
  10.     cnx.autocommit = True
  11.     cursor = cnx.cursor(buffered = True)
  12.    
  13.     mysql_query = ("""
  14.                   SELECT protein.uniprot_id
  15.                   FROM edsssdb.protein;
  16.                   """)
  17.     #Consulta a la base de datos edsssdb que devuelve los identificadores de los
  18.     #las proteínas que han sido añadidas previamente.
  19.    
  20.     cursor.execute(mysql_query)
  21.     data=cursor.fetchall()
  22.    
  23.     file.write("\nCargando tabla p_interacts_with_p: ")
  24.    
  25.     prots = []    
  26.     for row in data:
  27.         prot = row[0]
  28.         prots.append(prot)
  29.    
  30.    
  31.     import time
  32.     from bioservices import PSICQUIC
  33.    
  34.     inters = []
  35.    
  36.     for i in range(len(prots)):
  37.         p = prots[i]
  38.         identif = 'identifier:' + str(p)
  39.    
  40.        
  41.         if i == 3000 or i == 6000 or i == 9000:
  42.             time.sleep(7)
  43.        
  44.         s = PSICQUIC(verbose = False)
  45.         q = s.query("intact", identif, "tab25")
  46.        
  47.        
  48.         if q!=[['']]:
  49.            
  50.             for i in range(len(q)):
  51.                 idA = q[i][0]
  52.                 idA = idA[10:len(idA)]
  53.                 idB = q[i][1]
  54.                 idB = idB[10:len(idB)]
  55.                 score = q[i][14]
  56.                 score = score[(len(score)-4):len(score)]
  57.                
  58.                 if idA in prots and idB in prots:
  59.                     #Hay que comprobar que hemos insertado previamente las
  60.                     #2 proteinas. Si no tenemos informacion de las dos en la
  61.                     #BD no vamos a incluir la interaccion.
  62.                    
  63.                     if not [idA,idB] in inters and not [idB,idA] in inters:
  64.                         #La interaccion p1-p2 es la misma que p2-p1, con lo que
  65.                         #tenemos que tener en cuenta esto para no introducir
  66.                         #duplicados.
  67.                         inters.append([idA,idB])
  68.                        
  69.                         try:
  70.                             insertar_edsssdb.inserta_en_p_interacts_with_p(idA, idB, score, cnx)
  71.                         except mysql.connector.Error as err:
  72.                             file.write(str(err.msg))
  73.    
  74.    
  75.     file.write('OK')
  76.    
  77. #------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement