1. Bases de dades relacionals

1.14. Exemple pràctic: gestió del catàleg de gens humans

Per demostrar com extreure coneixement útil d’una base de dades relacional, us proposem analitzar amb MySQL el contingut d’un catàleg de gens humans. Un gen és un fragment d’ADN ubicat en el genoma que conté la informació precisa per sintetitzar una molècula d’ARN. En els organismes eucariotes, un gen està constituït per una successió de fragments útils denominats exons. En una proporció significativa dels gens humans hi ha diverses combinacions alternatives d’exons, donant lloc a diferents formes alternatives d’un mateix gen, denominades transcrits alternatius. Per codificar la informació relativa a la localització dels gens en el genoma és freqüent utilitzar fitxers de text tabulat. Cada línia d’aquests fitxers conté els valors dels atributs que caracteritzen un transcrit d’un determinat gen. Bàsicament, un transcrit d’un gen posseeix una localització concreta, identificada per un cromosoma, una posició inicial/final i una direcció de lectura. Altres característiques que podem recuperar sobre un transcrit són el seu codi, el nom del gen, el nombre d’exons o les seves coordenades exactes.

El navegador genòmic d’UCSC representa gràficament els diferents tipus d’anotacions existents sobre el genoma humà en forma de centenars de pistes. Per administrar eficientment aquest elevat volum d’informació, una còpia del SGBD MySQL està funcionant de forma transparent als milers d’usuaris que cada dia visiten aquest servidor. D’aquesta manera, en el cas que volguem reproduir una pista al nostre ordinador, disposem a la secció de descàrregues d’un fitxer SQL per ser executat amb l’ordre source i un fitxer de text amb el conjunt de dades que s’han d’importar amb la instrucció LOAD DATA. En aquest exercici utilitzarem l’anotació dels gens humans distribuïda pel consorci RefSeq per al genoma humà. Aquest format és comú a totes les espècies subministrades pel navegador.

Ara procedirem a descarregar-nos els dos fitxers associats a la pista refGene, que conté el catàleg de gens humans anotats pel consorci RefSeq, en la seva versió hg38.

Per a això, hem d’utilitzar l’ordre wget per transferir tots dos fitxers al nostre terminal.

wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/refGene.sql

wget http://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/refGene.txt.gz

Mostrem a continuació el contingut del fitxer refGene.sql que realitza la creació de la taula refGene. Els atributs que consultarem amb més freqüència seran (figura 54): name (codi del transcrit), chrom (cromosoma), strand (cadena), txStart i txEnd (coordenades d’inici i final), exonCount (nombre d’exons) i name2 (nom del gen).

És important no confondre els camps de name i name2: un gen pot tenir diversos transcrits, però un transcrit únicament pertany a un gen.

Figura 54. Atributs dels transcrits anotats pel consorci RefSeq.
Font: elaboració pròpia.

Passarem ara a visualitzar amb el terminal el segon fitxer refGene.txt. Aquest arxiu conté les dades del catàleg complet de gens anotats en el genoma humà. Hem de carregar aquesta informació a la nostra base de dades un cop estigui creada la taula refGene. En el context d’aquest exercici, cada registre conté informació sobre el transcrit d’un determinat gen. En el cas que un gen posseeixi diversos transcrits, cadascun es codifica en registres separats (cadascú amb el seu propi codi i les seves corresponents coordenades).

En primer lloc, hem de descomprimir el fitxer amb l’ordre gzip.

Figura 55. El catàleg refGene.txt de gens humans.
Font: elaboració pròpia.

Un cop dins de l’intèrpret de MySQL, indicarem que treballarem dins de la nostra base de dades.

Executarem, posteriorment, el fitxer refGene.sql amb l’ordre source per crear la taula refGene.

Per verificar que la instrucció anterior ha funcionat correctament, podem veure el llistat d’atributs de la taula refGene amb l’ordre  DESCRIBE:

Figura 56. Creació de la taula refGene.
Font: elaboració pròpia.

El segon pas consisteix a poblar la taula amb les anotacions dels gens humans que hem descarregat dins del fitxer refGene.txt. Fent servir l’ordre LOAD DATA podem bolcar tot el contingut a la taula refGene:

Figura 57. Poblar la taula refGene.
Font: elaboració pròpia.

Ens trobem en condicions de començar a interrogar la base de dades. Recordem, novament, que cada registre de la taula refGene alberga la informació associada a l’espai d’un gen en particular. Igualment, és important tenir en compte que una elevada fracció dels gens humans posseeix dos o més transcrits alternatius. La nostra missió, a continuació, és mostrar l’enorme potencial de les consultes de SQL a l’hora d’extreure nou coneixement biològic de les dades emmagatzemades a les taules de la nostra base de dades.

Començarem mostrant els primers registres de la nostra taula, incloent-hi únicament diversos dels seus atributs per afavorir la llegibilitat dels valors dels registres per pantalla:

Figura 58. Mostra del contingut de la taula refGene.
Font: elaboració pròpia.

Atès que cada registre conté la informació d’un transcrit, el nombre de transcrits coneguts en el genoma humà coincidirà amb el nombre de registres emmagatzemats a la taula refGene. Aquest comptatge és senzill:

Figura 59. Comptar els transcrits de la taula refGene.
Font: elaboració pròpia.

També podem comptar fàcilment el nombre total de gens codificats en el genoma humà. Si un gen posseeix diversos transcrits alternatius, llavors trobarem diversos registres en el nostre catàleg que posseeixen un valor diferent de l’atribut name, però que comparteixen el mateix valor per a l’atribut name2. Per tant, emprant la clàusula DISTINCT sobre aquest últim atribut, comptarem una única vegada cada gen de la nostra taula, encara que posseeixi diverses formes alternatives:

Figura 60. Comptar els gens de la taula refGene.
Font: elaboració pròpia.

Si agrupem els registres de la taula per l’atribut name2, podem elaborar un inventari del nombre de transcrits alternatius anotats per a cada gen.

Figura 61. Comptar el nombre de transcrits de cada gen de la taula refGene.
Font: elaboració pròpia.

Podem obtenir resultats interessants aplicant la clàusula WHERE sobre els atributs de cada registre. Per exemple, imaginem que desitgem conèixer el nombre de transcrits ubicats en cada cadena de la molècula d’ADN:

Figura 62. Comptar en una cadena d’ADN.
Font: elaboració pròpia.

També podem comptar el nombre de transcrits localitzats en un cromosoma:

Figura 63. Comptar els transcrits d’un cromosoma.
Font: elaboració pròpia.

Novament, jugant amb l’atribut name2 podem comptar el nombre de gens codificats en el mateix cromosoma:

Figura 64. Comptar els gens d’un cromosoma.
Font: elaboració pròpia.

O identificar quins són els transcrits que posseeixen un major nombre d’exons:

Figura 65. Recuperar els transcrits amb major nombre d’exons.
Font: elaboració pròpia.

També podem seleccionar aquells que posseeixen un únic exó:

Figura 66. Recuperar els transcrits amb un únic exó.
Font: elaboració pròpia.

És possible calcular el nombre d’exons, de mitjana, per cada transcrit:

Figura 67. Calcular el nombre d’exons de mitjana per cada transcrit.
Font: elaboració pròpia.

I la longitud mitjana dels gens humans:

Figura 68. Calcular la longitud mitjana dels gens.
Font: elaboració pròpia.

Finalment, integrarem en aquesta anàlisi el genoma de ratolí domèstic. Descarreguem els fitxers refGene.sql i refGene.txt d’aquesta espècie en la seva versió mm9.

Per evitar sobreescriure les anotacions humanes, hem de gravar ambdós fitxers amb un nom diferent (per exemple, refGene_mouse.sql i refGene_mouse.txt). Posteriorment, cal editar el contingut del fitxer SQL per modificar el nom de la taula, per la mateixa raó (figura 69).

Després d’aquestes modificacions, ja estem en condicions de llançar la creació de la nova taula amb l’ordre source i la seva repoblació amb les dades relatives al genoma del ratolí amb l’ordre LOAD DATA.

Figura 69. Incorporar els gens de ratolí a la nostra base de dades.
Font: elaboració pròpia.

Comprovem que els registres emmagatzemats a la nova taula són correctes:

Figura 70. Visualitzar els primers transcrits del genoma del ratolí domèstic.
Font: elaboració pròpia.

Ara, si seleccionem aquells registres de les dues taules que pertanyen al mateix gen en ambdues espècies, podem construir un catàleg de gens homòlegs.

Podem dur a terme aquesta associació perquè SQL no distingeix entre majúscules o minúscules a l’hora de comparar la columna name2.

Figura 71. Llistat de gens comuns entre el genoma humà i el genoma de ratolí.
Font: elaboració pròpia.