1. Introducció als entorns de treball UNIX

1.17. Exemple pràctic 1: Analitzant el genoma humà

1.17.3. Anàlisi dels gens humans

L’anàlisi del catàleg de gens d’una espècie és un exemple perfecte de la utilitat de les ordres del terminal en aquest capítol. Un gen és una seqüència d’ADN que conté informació per crear una molècula biològica. Els gens dels organismes eucariotes es componen d’exons. Molts gens humans tenen combinacions plausibles d’exons, el que resulta en transcrits alternatius.

Per codificar la ubicació dels gens, s’utilitzen fitxers tabulats que contenen informació com la localització i les característiques del transcrit del gen, com el nombre d’exons i les coordenades exactes.

En aquest exercici, s’utilitza l’anotació del consorci RefSeq per obtenir informació sobre el genoma humà, en un primer moment, però també s’utilitzarà informació del genoma de ratolí (mouse). La informació es troba en un fitxer anomenat refGene.txt i es pot obtenir a la pàgina web del navegador genòmic d’UCSC mitjançant l’enllaç Annotation. La direcció de descàrregues es mostra a la taula 19.

Taula 19. Pàgines de descàrrega dels fitxers refGene.txt en funció de l’espècie.

Accés Direcció
Pàgina descàrrega human https://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/
Pàgina descàrrega mouse https://hgdownload.soe.ucsc.edu/goldenPath/mm39/database/

Font: elaboració pròpia.

Les anotacions, en el servidor d’UCSC, solen representar-se gràficament en el navegador genòmic en forma de pista. El navegador genòmic està gestionat internament per l’administrador de bases de dades relacionals de MySQL. En conseqüència, en aquesta pàgina web trobarem dos tipus de fitxer per a cada pista d’anotacions d’UCSC. El primer fitxer, l’extensió del qual serà del tipus sql, conté una especificació genèrica dels atributs de les anotacions. Aquest arxiu és necessari per crear una taula buida en una base de dades relacional. El segon fitxer, que estarà comprimit i posseirà l’extensió txt, conté pròpiament la informació de cada anotació de forma tabulada. En accedir a la pàgina de descàrrega es visualitza la informació següent:

This directory contains a dump of the UCSC genome annotation database for the

    Dec. 2013 (GRCh38/hg38) assembly of the human genome

    (hg38, GRCh38 Genome Reference Consortium Human Reference 38 (GCA_000001405.15))




      affyGnf1h.sql                                2015-05-11 01:50  2.1K 

      affyGnf1h.txt.gz                            2015-05-11 01:50  596K 

      …

      refGene.sql                                   2020-08-17 18:56  1.9K 

      refGene.txt.gz                               2020-08-17 18:56  8.3M 

      …

      xenoRefSeqAli.sql                        2020-08-17 19:17  2.1K 

      xenoRefSeqAli.txt.gz                    2020-08-17 19:17   17M

Ara procedim a descarregar el fitxer txt associat a la pista refGene, que conté el catàleg de gens humans anotats pel consorci RefSeq. Per a això, s’utilitza l’ordre wget novament per transferir el fitxer al terminal.

$ wget https://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/refGene.txt.gz
--2023-04-26 16:35:43--  https://hgdownload.soe.ucsc.edu/goldenPath/hg38/database/refGene.txt.gz

S'està resolent hgdownload.soe.ucsc.edu (hgdownload.soe.ucsc.edu)... 128.114.119.163

S'està connectant a hgdownload.soe.ucsc.edu (hgdownload.soe.ucsc.edu)|128.114.119.163|:443... conectat.

HTTP: s'ha enviat la petició, s'està esperant una resposta... 200 OK

Mida: 8668756 (8,3M) [application/x-gzip]

S'està desant a: «refGene.txt.gz»

refGene.txt.gz                                     100%[================>]   8,27M  2,22MB/s    in 3,7s    

2023-04-26 16:35:49 (2,22 MB/s) - s'ha desat «refGene.txt.gz» [8668756/8668756]

A continuació, et convidem a revisar el contingut del primer fitxer: refGene.sql. ja que és útil per conèixer les característiques dels gens anotats a cada columna del fitxer. Els atributs que s’utilitzen amb més freqüència són els següents: 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 name i name2: un gen pot tenir diversos transcrits, però un transcrit sols pot pertànyer a un gen. Aquests paràmetres es troben a la capçalera del fitxer descarregat.

Visualitzarem el contingut del fitxer refGene.txt. Aquest arxiu conté informació sobre el catàleg complet de gens anotats en el genoma humà. Cada línia representa un transcrit d’un gen determinat. En el cas que un gen tingui diversos transcrits, cadascun es codifica en línies separades, cadascuna amb el seu propi codi i les seves coordenades corresponents. En totes les línies, els atributs de cada dia estan separats pel caràcter tabulador o «\t». Abans de poder visualitzar el contingut de l’arxiu, l’hem de descomprimir utilitzant l’ordre gzip.

# Descompressió del fitxer amb gzip

$ gzip -d refGene.txt.gz

# Visualització de les primeres cinc línies amb l’ordre head

$ head -5 refGene.txt
585  NR_024540  chr1 -    14361 29370 29370 29370 11     14361,14969,15795,16606,16857,17232,17605,17914,18267,24737,29320,     14829,15038,15947,16765,17055,17368,17742,18061,18366,24891,29370,    0    WASH7P    unk  unk  -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,

585  NR_106918  chr1 -    17368 17436 17436 17436 1    17368,    17436,     0    MIR6859-1  unk  unk  -1,

585  NR_107062  chr1 -    17368 17436 17436 17436 1    17368,    17436,     0    MIR6859-2  unk  unk  -1,

585  NR_107063  chr1 -    17368 17436 17436 17436 1    17368,    17436,     0    MIR6859-3  unk  unk  -1,

585  NR_128720  chr1 -    17368 17436 17436 17436 1    17368,    17436,     0    MIR6859-4  unk  unk  -1,

Tingueu en compte que 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 en comparació amb una nova descàrrega del mateix fitxer.

A causa de la gran quantitat d’informació que conté aquest arxiu són difícils de manejar. A continuació, es decideix treballar amb uns determinats camps i s’utilitzarà l’ordre gawk per extreure únicament els camps necessaris d’aquest exercici. En particular, trobem interessants els següents atributs: nom del gen, identificador del transcrit, cromosoma, cadena, coordenades i nombre d’exons. Per evitar haver d’executar l’ordre prèvia cada vegada que es necessitin aquestes dades, es redirecciona la sortida cap a un arxiu refgene-select.txt. Una vegada obtingut, es compten el nombre total de transcrits humans.

# Analitzem el fitxer refGene.sql per determinar la posició de cada columna

$ gawk '{print $13,$2,$3,$4,$5,$6,$9;}' refGene.txt > refgene-select.txt

# Es visualitzen les últimes 5 línies

$ tail -5 refgene-select.txt
KIAA0825   NM_001385728    chr5 -   94519215   94618604   6

KIAA0825   NM_001385729    chr5 -   94519215   94618604   6

KIAA0825   NR_169752      chr5 -    94519215   94618604   4

KIAA0825   NR_169753       chr5 -    94519215   94618604   6

KIAA0825   NR_169754       chr5 -   94519215   94618604   6

# El nombre de transcrits és el nombre de línies del fitxer

$ wc -l refgene-select.txt
88819 refgene-select.txt

Continuem amb diferents anàlisis,

# Es demana el nombre de transcrits genètics distribuïts en la cadena positiva

$ gawk '{if ($4 == "+") print $0;}' refgene-select.txt | wc -l
45121

# Es demana el nombre de transcrits del cromosoma 21

$ grep chr21 refgene-select.txt | wc -l
1121

# Es mostren els primers set transcrits després d’ordenar per nom del gen

$ sort refgene-select.txt | head -7
A1BG NM_130786      chr19     -    58345182   58353492   8

A1BG-AS1 NR_015380   chr19     +    58351969   58355183   4

A1CF NM_001198818    chr10     -    50799408   50885675   14

A1CF NM_001198819    chr10     -    50799408   50885675   15

A1CF NM_001198820    chr10     -    50799408   50885675   14

A1CF NM_001370130    chr10     -    50799408   50885627   12

A1CF NM_001370131    chr10     -    50799408   50885627   12

# Es mostren els primers sis transcrits després d’ordenar pel nombre de gens que conté cada transcrits

$ sort -rnk 7 refgene-select.txt | head -6
TTN NM_001267550     chr2 -   178525990 178807423 363

TTN NM_001256850     chr2 -    178525990 178807423 313

TTN NM_133378   chr2 -    178525990 178807423 312

TTN NM_133437   chr2 -    178525990 178807423 192

TTN NM_133432   chr2 -    178525990 178807423 192

TTN NM_003319   chr2 -    178525990 178807423 191

El fitxer refgene-select.txt conté el llistat dels transcrits humans. Com que un gen pot donar lloc a diversos transcrits alternatius, podem comptar quants gens té el genoma humà  i esbrinar quants d’ells posseeixen un major nombre de transcrits. Per aconseguir-ho, ordenem els noms dels gens i introduïm diferents variants de l’ordre uniq per agrupar-los. D’altra banda, la millor forma d’estudiar el comportament d’una línia d’ordres és la desconstrucció: eliminant les últimes instruccions es pot mostrar el resultat parcial de l’execució en pantalla.

# Ordena la columna pel nom dels gens

$ gawk '{print $1;}' refgene-select.txt | sort | more
A1BG

A1BG-AS1

A1CF

A1CF

A1CF

A1CF

A1CF

…

# Ordena la columna pel nom dels gens i que siguin valors únics

$ gawk '{print $1;}' refgene-select.txt | sort | uniq | more
A1BG

A1BG-AS1

A1CF

A2M

A2M-AS1

A2ML1

…

# Determina el nombre de gens únics en el fitxer

$ gawk '{print $1;}' refgene-select.txt | sort | uniq | wc -l
28307

# Determina quants transcrits hi ha per a cadascun dels gens

$ gawk '{print $1;}' refgene-select.txt | sort | uniq -c | more
1 A1BG

1 A1BG-AS1

8 A1CF

4 A2M

3 A2M-AS1

2 A2ML1

1 A2MP1

…

# Determina quants transcrits hi ha per a cadascun dels gens i ordena’ls pel nombre d’exons, de major a menor

$ gawk '{print $1;}' refgene-select.txt | sort | uniq -c | sort -rn
260 KIR2DS2

215 LOC101928804

177 KIR2DS4

144 MAP4

144 KIR3DS1

129 KIR2DL

…

Una altra operació molt freqüent consisteix en el càlcul de valors mitjà. En el següent exemple, l’estudiant calcularà la mitjana d’exons per transcrit i la longitud mitjana d’aquests. El funcionament de gawk és similar en tots dos casos, ja que treballa amb la variable t com a comptador que acumula la suma total. La divisió pel nombre de línies visitades (NR), un cop es completa la lectura de l’arxiu, genera el valor mitjà en cada cas.

# Càlcul de mitjana d’exons per transcrit

$ gawk 'BEGIN{t=0;}{t=t+$7;}END{print t/NR;}' refgene-select.txt
10.0961

# Càlcul de la longitud mitjana dels transcrits

$ gawk 'BEGIN{t=0;}{t=t+$6-$5+1;}END{print t/NR;}' refgene-select.txt
64883

Per il·lustrar la utilitat d’associar dos fitxers de text tabulat, es combinarà el catàleg de gens humans introduït fins ara (arxiu refGene.txt per a H. sapiens es reanomena com a refGene-human.txt) amb el catàleg equivalent del genoma del ratolí (arxiu refGene.txt per a M. musculus i reanomenat com a refGene-mouse.txt després d’haver-lo descarregat del servidor genòmic d’UCSC).

$ gzip -d refGene.txt.gz
 $ mv refGene.txt refGene-human.txt
$ wget https://hgdownload.soe.ucsc.edu/goldenPath/mm39/database/refGene.txt

# Es reanomena el fitxer del genoma M.musculus

$ mv refGene.txt refGene-mouse.txt

# Per a cadascun dels fitxers, se seleccionen les columnes nom del gen i cromosoma i posteriorment se’n visualitzen els 5 primers

$ gawk '{print $13, $3;}' refGene-human.txt | sort | uniq > refgene-select-human.txt
 $ head -5 refgene-select-human.txt
A1BG chr19

A1BG-AS1 chr19

A1CF chr10

A2M chr12

A2M-AS1 chr12

# Per al fitxer genoma de ratolí

$ gawk '{print $13, $3;}' refGene-mouse.txt | sort | uniq > refgene-select-mouse.txt
 $ head -5 refgene-select-mouse.txt
0610005C13Rik chr7

0610009B22Rik chr11

0610009E02Rik chr2

0610009L18Rik chr11

0610010F05Rik chr11

Amb aquesta transformació prèvia del fitxer, s’han preparat els fitxers per utilitzar l’ordre join: a continuació, es mostra com associar els gens que tenen el mateix nom en ambdues espècies. A l’ordre join s’hi afegeix l’opció -i, perquè s’ignoren les diferències de majúscules/minúscules. Cada línia del resultat final conté el nom del gen i la seva ubicació en ambdós genomes.

$ join -i refgene-select-human.txt refgene-select-human.txt > refgene-comun.txt
 $ head -5 refgene-comun.txt
A1BG chr19 chr19

A1BG-AS1 chr19 chr19

A1CF chr10 chr10

A2M chr12 chr12

A2M-AS1 chr12 chr12

A partir d’aquesta anàlisi preliminar del catàleg de gens humans, es poden portar a la pràctica múltiples variants de les ordres que s’han mostrat aquí. Per exemple, és possible afegir més atributs, més genomes o més fitxers amb altres propietats per ampliar aquesta exploració. Per tant, us animem a experimentar amb cada bloc d’ordres utilitzat durant aquest exercici. Amb aquesta aplicació pràctica, es demostra la validesa del terminal de Gnu/Linux per analitzar eficientment dades biològiques. En futurs apartats, s’introduiran sistemes més complexos per gestionar grans conjunts de dades, de manera que l’usuari podrà reproduir el mateix cas pràctic utilitzant aquestes tècniques.