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.
Vegeu també
Per revisar els conceptes de genoma, cromosoma, gen i proteïna us recomanem l’assignatura Fonaments de biologia molecular.
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.
Vegeu també
És possible aprofundir sobre el funcionament dels navegadors genòmics en l’assignatura Genòmica computacional.
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.
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.
Les anotacions d’un genoma solen actualitzar-se freqüentment. Per aquest motiu, les dades mostrades en aquest tutorial poden variar lleugerament amb el pas del temps.
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
:
Assumirem que ambdós fitxers (refGene.sql i refGene.txt) estan guardats en la mateixa carpeta de treball des de la qual hem invocat el programa MySQL, anteriorment.
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:
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:
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:
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:
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.
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:
També podem comptar el nombre de transcrits localitzats en un cromosoma:
Novament, jugant amb l’atribut name2 podem comptar el nombre de gens codificats en el mateix cromosoma:
O identificar quins són els transcrits que posseeixen un major nombre d’exons:
També podem seleccionar aquells que posseeixen un únic exó:
És possible calcular el nombre d’exons, de mitjana, per cada transcrit:
I la longitud mitjana dels gens humans:
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
.
Comprovem que els registres emmagatzemats a la nova taula són correctes:
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.