Acceso mediante programa a la base de datos.

Sumario

Teoría: 15 min
Ejercicios: 60 min
Preguntas
  • ¿Cómo podemos insertar miles de tuplas de forma automática?

Objetivos
  • Conocer el fundamento de la programación relacionada con SQL desde Python.

  • Leer ficheros de nuestro ordenador e insertar la información relevante en una base de datos relacional.

  • Consultar desde Python una base de datos y extraer determinados campos.

Ayer creamos dos tablas llamadas SWISSENTRY y ACCNUMBERS en nuetra base de datos e insertamos un par de registros. A lo largo de la tarde de hoy, veremos como automatizar esto.

1. Inserción en una base de datos desde Python

Para ello vamos a descargar o el programa (uniprotInsert-alt.py) (versión HTML) o el programa (uniprotInsert.py) (versión HTML) y los iremos comentando juntos. Para visualizar el código con colores, tal y como aparece en el fichero HTML, podéis activar el destacado de sintaxis en vuestro programa de edición.

Una vez repasado el programa, descargaremos un fichero de muestra a nuestro ordenador y lo usaremos junto con el programa recién estudiado para insertar 4 registros. Si todo ha funcionado correctamente, haremos lo mismo con el proteoma de dos organismos: Mycoplasma mycoides y Staphylococcus aureus

2. Consultas de agregación

Mediante consulta vamos a:

  • Recuperar una entrada por su accession number principal.
  • Recuperar las entradas que tengan un peso molecular entre 30000 y 90000.
  • Recuperar las entradas cuya descripción contenga la palabra “kinase”.

Mediante consultas de agregación, vamos a obtener los siguientes valores:

  • Número de entradas de UniProt insertadas.
  • Número de entradas de UniProt con una secuencia de más de 300 aminoácidos.
  • Longitud media de las secuencias insertadas.
  • Longitud de mayor tamaño de las secuencias insertadas.
  • Identificador de la proteína con mayor tamaño.
  • Calcular el número de accession number que hay por entrada.
Download cast /files/casts/20230112-BBDD.cast

3. Creación de un fichero desde Python, usando información de la base de datos

En este caso vamos a hacer el caso contrario, es decir, vamos a crear un programa en Python que automáticamente hará consultas a la base de datos de unos campos determinados. Los resultados de esa consulta se procesarán con Python para crear un fichero. De forma más concreta vamos a seleccionar los identificadores y descripción de cada proteína almacenada en nuestra base de datos y su secuencia y con ello vamos a crear un fichero en formato FASTA. El programa lo podéis descargar desde este link (fasta_write.py) y para poder revisarlo juntos, podéis pinchar en la versión HTML donde aparece el programa con la sintaxis destacada en colores.

¿Cómo recuperarias el ID y el tamaño de secuencia de la proteína con accnumber Q7A6N0?

Para resolver esta pregunta tenemos que introducir dos valores en el select, el id y el tamaño de secuencia (length(seq))

Solution

SELECT id, length(seq) FROM SWISSENTRY WHERE accnumber = 'Q7A6N0';
id length(seq)
Q7A6N0_STAAN 16

¿Cuantas proteínas hay de membrana?

Tenemos que usar la función para contar (COUNT) y además el LIKE.

Solution

select count(*) from SWISSENTRY where description LIKE '%membrane%';
count(*)
11

No olvidar

  • Casi cualquier gestor de base de datos tiene un interfaz de consulta para ser usado desde cualquier lenguaje de programación.

  • Para SQLite se usa el paquete sqlite3.

  • Podemos poner restricciones a la hora de hacer consultas usando la sección WHERE. Esto además puede conjuntarse con otros operadores como LIKE.

  • Con las consultas de agregación podemos hacer cálculos para contar el número de registros, entre otros.