{"id":562,"date":"2023-10-20T13:59:43","date_gmt":"2023-10-20T11:59:43","guid":{"rendered":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/?page_id=562"},"modified":"2025-06-13T10:48:25","modified_gmt":"2025-06-13T08:48:25","slug":"1-14-exemple-practic-gestio-del-cataleg-de-gens-humans","status":"publish","type":"page","link":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/1-14-exemple-practic-gestio-del-cataleg-de-gens-humans\/","title":{"rendered":"1.14. Exemple pr\u00e0ctic: gesti\u00f3 del cat\u00e0leg de gens humans"},"content":{"rendered":"<p>Per demostrar com extreure coneixement \u00fatil d\u2019una base de dades relacional, us proposem analitzar amb MySQL el contingut d\u2019un cat\u00e0leg de gens humans. Un gen \u00e9s un fragment d\u2019ADN ubicat en el genoma que cont\u00e9 la informaci\u00f3 precisa per sintetitzar una mol\u00e8cula d\u2019ARN. En els organismes eucariotes, un gen est\u00e0 constitu\u00eft per una successi\u00f3 de fragments \u00fatils denominats <em>exons<\/em>. En una proporci\u00f3 significativa dels gens humans hi ha diverses combinacions alternatives d\u2019exons, donant lloc a diferents formes alternatives d\u2019un mateix gen, denominades <em>transcrits alternatius<\/em>. Per codificar la informaci\u00f3 relativa a la localitzaci\u00f3 dels gens en el genoma \u00e9s freq\u00fcent utilitzar fitxers de text tabulat. Cada l\u00ednia d\u2019aquests fitxers cont\u00e9 els valors dels atributs que caracteritzen un transcrit d\u2019un determinat gen. B\u00e0sicament, un transcrit d\u2019un gen posseeix una localitzaci\u00f3 concreta, identificada per un cromosoma, una posici\u00f3 inicial\/final i una direcci\u00f3 de lectura. Altres caracter\u00edstiques que podem recuperar sobre un transcrit s\u00f3n el seu codi, el nom del gen, el nombre d\u2019exons o les seves coordenades exactes.<\/p>\n<div class=\"featured featured-blue\"><p><strong>Vegeu tamb\u00e9<\/strong><\/p>\n<p>Per revisar els conceptes de <em>genoma<\/em>, <em>cromosoma<\/em>, <em>gen<\/em> i <em>prote\u00efna<\/em> us recomanem l\u2019assignatura Fonaments de biologia molecular.<\/p>\n<\/div>\n<p>El navegador gen\u00f2mic d\u2019UCSC representa gr\u00e0ficament els diferents tipus d\u2019anotacions existents sobre el genoma hum\u00e0 en forma de centenars de pistes. Per administrar eficientment aquest elevat volum d\u2019informaci\u00f3, una c\u00f2pia del SGBD MySQL est\u00e0 funcionant de forma transparent als milers d\u2019usuaris que cada dia visiten aquest servidor. D\u2019aquesta manera, en el cas que volguem reproduir una pista al nostre ordinador, disposem a la secci\u00f3 de desc\u00e0rregues d\u2019un fitxer SQL per ser executat amb l\u2019ordre <code>source<\/code> i un fitxer de text amb el conjunt de dades que s\u2019han d\u2019importar amb la instrucci\u00f3 <code>LOAD DATA<\/code>. En aquest exercici utilitzarem l\u2019anotaci\u00f3 dels gens humans distribu\u00efda pel consorci <strong>RefSeq <\/strong>per al genoma hum\u00e0. Aquest format \u00e9s com\u00fa a totes les esp\u00e8cies subministrades pel navegador.<\/p>\n<div class=\"featured featured-blue\"><p><strong>Vegeu tamb\u00e9<\/strong><\/p>\n<p>\u00c9s possible aprofundir sobre el funcionament dels navegadors gen\u00f2mics en l\u2019assignatura Gen\u00f2mica computacional.<\/p>\n<\/div>\n<p>Ara procedirem a descarregar-nos els dos fitxers associats a la pista <strong>refGene<\/strong>, que cont\u00e9 el cat\u00e0leg de gens humans anotats pel consorci <strong>RefSeq<\/strong>, en la seva versi\u00f3 <strong>hg38<\/strong>.<\/p>\n<p>Per a aix\u00f2, hem d\u2019utilitzar l\u2019ordre <code>wget<\/code> per transferir tots dos fitxers al nostre terminal.<\/p>\n<p><code>wget<\/code> http:\/\/hgdownload.soe.ucsc.edu\/goldenPath\/hg38\/database\/refGene.sql<\/p>\n<p><code>wget<\/code> http:\/\/hgdownload.soe.ucsc.edu\/goldenPath\/hg38\/database\/refGene.txt.gz<\/p>\n<p>Mostrem a continuaci\u00f3 el contingut del fitxer <strong>refGene.sql<\/strong> que realitza la creaci\u00f3 de la taula <strong>refGene<\/strong>. Els atributs que consultarem amb m\u00e9s freq\u00fc\u00e8ncia seran: <strong>name <\/strong>(codi del transcrit), <strong>chrom <\/strong>(cromosoma), <strong>strand <\/strong>(cadena), <strong>txStart <\/strong>i <strong>txEnd <\/strong>(coordenades d\u2019inici i final), <strong>exonCount <\/strong>(nombre d\u2019exons) i <strong>name2 <\/strong>(nom del gen).<\/p>\n<p>\u00c9s important no confondre els camps de <strong>name <\/strong>i <strong>name2<\/strong>: un gen pot tenir diversos transcrits, per\u00f2 un transcrit \u00fanicament pertany a un gen.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">CREATE TABLE 'refGene' (\r\n    'bin' smallint(5) unsigned NOT NULL,\r\n    'name' varchar(255) NOT NULL,\r\n    'chrom' varchar(255) NOT NULL,\r\n    'strand' char(1) NOT NULL,\r\n    'txStart' int(10) unsigned NOT NULL,\r\n    'txEnd' int(10) unsigned NOT NULL,\r\n    'cdsStart' int(10) unsigned NOT NULL,\r\n    'cdsEnd' int(10) unsigned NOT NULL,\r\n    'exonCount' int(10) unsigned NOT NULL,\r\n    'exonStarts' longblod NOT NULL,\r\n    'exonEnds' longblod NOT NULL,\r\n    'score' int(11) DEFAULT NULL,\r\n    'name2' varchar(255) NOT NULL,\r\n    'cdsStartStat' enum('none','unk','incmpl','cmpl') NOT NULL,\r\n    'cdsEndStat' enum('none','unk','incompl','cmpl') NOT NULL,\r\n    'exonFrames' longblod NOT NULL,\r\n    KEY 'chrom' ('chrom', 'bin'),\r\n    KEY 'name' ('name'),\r\n    KEY 'name2' ('name2')\r\n) ENGINE=MyISAM DEFAULT CHARSET=1atin1;\r\n<\/pre>\n<p>Passarem ara a visualitzar amb el terminal el segon fitxer <strong>refGene.txt<\/strong>. Aquest arxiu cont\u00e9 les dades del cat\u00e0leg complet de gens anotats en el genoma hum\u00e0. Hem de carregar aquesta informaci\u00f3 a la nostra base de dades un cop estigui creada la taula <strong>refGene<\/strong>. En el context d\u2019aquest exercici, cada registre cont\u00e9 informaci\u00f3 sobre el transcrit d\u2019un determinat gen. En el cas que un gen posseeixi diversos transcrits, cadascun es codifica en registres separats (cadasc\u00fa amb el seu propi codi i les seves corresponents coordenades).<\/p>\n<p>En primer lloc, hem de descomprimir el fitxer amb l\u2019ordre <strong>gzip<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">% gzip -d refGene.txt.gz\r\n\r\n% head -5 refGene.txt\r\n\r\n585 NR_046018 chr1 + 11873 14409 14409 14409 3 11873,12612,13220, 12227,12721,14409, 0 DOX11L1\r\nunk unk -1,-1,-1,\r\n\r\n585 NR_024540 chrl - 14361 29370 29370 29370 11 14361,14969,15795,16606,16857,17232,11605, 11914,\r\n18267,24737,29320,14829,15038,15947,16765,17055,17368,17742,18061,18366,24891,29370, 0 WASH7P\r\nunk unk -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,\r\n\r\n932 NR_104645 chrX + 45505387 45523644 45523644 45523644 3 45505387,45510496,45521607, 45505465,\r\n45510595,45523644, 0 LINC01204 unk unk -1,-1,-1,\r\n\r\n1078 NR_104148 chr7 + 64666082 6468783O 64687830 64687830 4 64666082,64669036,64679176,64684334,\r\n64666285,64669178,64679336,64687830, O ZNF107 unk unk -1,-1,-1,-1,\r\n\r\n103 NR_120408 chrl4 + 31561384 31861223 31861223 31861223 10 31561384,31562067,31565013,31599288,\r\n31673354,31673483,31826628,31846470,31850118,31859117,31561547,31562215,31565048,31599379,\r\n31673394,31673574,31826714,31846591,31850201,3186l223, ONUBPL unk unk -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,<\/pre>\n<div class=\"featured featured-blue\"><p>Les anotacions d\u2019un genoma solen actualitzar-se freq\u00fcentment. Per aquest motiu, les dades mostrades en aquest tutorial poden variar lleugerament amb el pas del temps.<\/p>\n<\/div>\n<p>Un cop dins de l\u2019int\u00e8rpret de MySQL, indicarem que treballarem dins de la nostra base <strong>de dades<\/strong>.<\/p>\n<p>Executarem, posteriorment, el fitxer <strong>refGene.sql<\/strong> amb l\u2019ordre <code>source<\/code> per crear la taula <strong>refGene<\/strong>.<\/p>\n<p>Per verificar que la instrucci\u00f3 anterior ha funcionat correctament, podem veure el llistat d\u2019atributs de la taula <strong>refGene <\/strong>amb l\u2019ordre \u00a0<strong><code>DESCRIBE<\/code><\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; USE cataleg;\r\n\r\nDatabase changed\r\n\r\nmysql&gt; DESCRIBE refGene;\r\n\r\n+---------------+-----------------------------------+------+------+---------+-------+\r\n| Field         | Type                              | Null | Key  | Default | Extra |\r\n+---------------+-----------------------------------+------+------+---------+-------+\r\n| bin           | smallint(5) unsigned              | NO   |      | NULL    |       |\r\n| name          | varchar(255)                      | NO   | MUL  | NULL    |       |\r\n| chrom         | varchar(255)                      | NO   | MUL  | NULL    |       |\r\n| strand        | char(1)                           | NO   |      | NULL    |       |\r\n| txStart       | int(10) unsigned                  | NO   |      | NULL    |       |\r\n| txEnd         | int(10) unsigned                  | NO   |      | NULL    |       |\r\n| cdsStart      | int(10) unsigned                  | NO   |      | NULL    |       |\r\n| cdsEnd        | int(10) unsigned                  | NO   |      | NULL    |       |\r\n| exonCount     | int(10) unsigned                  | NO   |      | NULL    |       |\r\n| exonStarts    | longblog                          | NO   |      | NULL    |       |\r\n| exonEnds      | longblog                          | NO   |      | NULL    |       |\r\n| score         | int(11)                           | YES  |      | NULL    |       |\r\n| name2         | varchar(255)                      | NO   | MUL  | NULL    |       |\r\n| cdsStartStat  | emun('none','unk',incmpl','cmpl') | NO   |      | NULL    |       |\r\n| cdsEndStat    | emun('none','unk',incmpl','cmpl') | NO   |      | NULL    |       |\r\n| exonFrames    | longblog                          | NO   |      | NULL    |       |\r\n+---------------+-----------------------------------+------+------+---------+-------+\r\n16 rows in set (0.14 sec)<\/pre>\n<div class=\"featured featured-blue\"><p>Assumirem que ambd\u00f3s fitxers (refGene.sql i refGene.txt) estan guardats en la mateixa carpeta de treball des de la qual hem invocat el programa MySQL, anteriorment.<\/p>\n<\/div>\n<p>El segon pas consisteix a poblar la taula amb les anotacions dels gens humans que hem descarregat dins del fitxer<strong> refGene.txt<\/strong>. Fent servir l\u2019ordre<strong> LOAD DATA<\/strong> podem bolcar tot el contingut a la taula <strong>refGene<\/strong>:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; LOAD DATA LOCAL INFILE 'refGene.txt'  INTO TABLE refGene;\r\n\r\nQuery OK, 69853 rows affected (2.54 sec)\r\nRecords: 69853  Deleted: 0  Skipped: 0  Warnings: 0<\/pre>\n<p>Ens trobem en condicions de comen\u00e7ar a interrogar la base de dades. Recordem, novament, que cada registre de la taula <strong>refGene <\/strong>alberga la informaci\u00f3 associada a l\u2019espai d\u2019un gen en particular. Igualment, \u00e9s important tenir en compte que una elevada fracci\u00f3 dels gens humans posseeix dos o m\u00e9s transcrits alternatius. La nostra missi\u00f3, a continuaci\u00f3, \u00e9s mostrar l\u2019enorme potencial de les consultes de SQL a l\u2019hora d\u2019extreure nou coneixement biol\u00f2gic de les dades emmagatzemades a les taules de la nostra base de dades.<\/p>\n<p>Comen\u00e7arem mostrant els primers registres de la nostra taula, incloent-hi \u00fanicament diversos dels seus atributs per afavorir la llegibilitat dels valors dels registres per pantalla:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT name2,name,chrom,strand,txStart,txEnd,exonCount\r\n    -&gt; FROM refGene ORDER BY name2 LIMIT 10;\r\n\r\n+----------+--------------+-------+--------+----------+----------+-----------+\r\n| name2    | name1        | chrom | strand | txStart  | txEnd    | exonCount |\r\n+----------+--------------+-------+--------+----------+----------+-----------+\r\n| A1BG     | NM_130786    | chr19 | -      | 58346805 | 58353499 |         8 |\r\n| A1BG-AS1 | NR_015380    | chr19 | +      | 58351969 | 5835583  |         4 |\r\n| A1CF     | NM_01198819  | chr10 | -      | 50799408 | 50885675 |        15 |\r\n| A1CF     | NM_014576    | chr10 | -      | 50799408 | 50885675 |        13 |\r\n| A1CF     | NM_138932    | chr10 | -      | 50799408 | 50885675 |        13 |\r\n| A1CF     | NM_01198820  | chr10 | -      | 50799408 | 50885675 |        14 |\r\n| A1CF     | NM_01198818  | chr10 | -      | 50799408 | 50885675 |        14 |\r\n| A1CF     | NM_138933    | chr10 | -      | 50799408 | 50885675 |        13 |\r\n| A2M      | NM_001347423 | chr12 | -      |  9067707 |  9116229 |        37 |\r\n| A2M      | NM_000014    | chr12 | -      |  9067707 |  9116229 |        36 |\r\n+----------+--------------+-------+--------+----------+----------+-----------+\r\n10 rows in set (0.00 sec)\r\n<\/pre>\n<p>At\u00e8s que cada registre cont\u00e9 la informaci\u00f3 d\u2019un transcrit, el nombre de transcrits coneguts en el genoma hum\u00e0 coincidir\u00e0 amb el nombre de registres emmagatzemats a la taula <strong>refGene<\/strong>. Aquest comptatge \u00e9s senzill:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT COUNT(*) FROM refGene;\r\n\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n|  69853   |\r\n+----------+\r\n1 row in set (0.00 sec)<\/pre>\n<p>Tamb\u00e9 podem comptar f\u00e0cilment el nombre total de gens codificats en el genoma hum\u00e0. Si un gen posseeix diversos transcrits alternatius, llavors trobarem diversos registres en el nostre cat\u00e0leg que posseeixen un valor diferent de l\u2019atribut <strong>name<\/strong>, per\u00f2 que comparteixen el mateix valor per a l\u2019atribut <strong>name2<\/strong>. Per tant, emprant la cl\u00e0usula <code>DISTINCT<\/code> sobre aquest \u00faltim atribut, comptarem una \u00fanica vegada cada gen de la nostra taula, encara que posseeixi diverses formes alternatives:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT COUNT(DISTINCT name2) FROM refGene;\r\n\r\n+-----------------------+\r\n| COUNT(DISTINCT name2) |\r\n+-----------------------+\r\n|                 27656 |\r\n+-----------------------+\r\n1 row in set (0.07 sec)<\/pre>\n<p>Si agrupem els registres de la taula per l\u2019atribut <strong>name2<\/strong>, podem elaborar un inventari del nombre de transcrits alternatius anotats per a cada gen.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT name2, COUNT(name2)\r\n    -&gt; FROM refGene GROUP BY name2 LIMIT 10;\r\n\r\n+----------+--------------+\r\n| name2    | COUNT(name2) |\r\n+----------+--------------+\r\n| A1BG     |            1 |\r\n| A1BG-AS1 |            1 |\r\n| A1CF     |            6 |\r\n| A2M      |            4 |\r\n| A2M-AS1  |            3 |\r\n| A2ML1    |            2 |\r\n| A2MP1    |            1 |\r\n| A3GALT2  |            1 |\r\n| A4GALT   |            3 |\r\n| A4GNT    |            1 |\r\n+----------+--------------+\r\n10 rows in set (0.00 sec)\r\n<\/pre>\n<p>Podem obtenir resultats interessants aplicant la cl\u00e0usula <code>WHERE<\/code> sobre els atributs de cada registre. Per exemple, imaginem que desitgem con\u00e8ixer el nombre de transcrits ubicats en cada cadena de la mol\u00e8cula d\u2019ADN:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT COUNT(*) FROM refGene WHERE strand LIKE '+';\r\n\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n|    35724 |\r\n+----------+\r\n1 row in set (0.10 sec)\r\n\r\nmysql&gt; SELECT COUNT(*) FROM refGene WHERE strand LIKE '-';\r\n\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n|    34129 |\r\n+----------+\r\n1 row in set (0.09 sec)<\/pre>\n<p>Tamb\u00e9 podem comptar el nombre de transcrits localitzats en un cromosoma:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT COUNT(*) FROM refGene WHERE chrom LIKE 'chr21';\r\n\r\n+----------+\r\n| COUNT(*) |\r\n+----------+\r\n|      961 |\r\n+----------+\r\n1 row in set (0.00 sec)<\/pre>\n<p>Novament, jugant amb l\u2019atribut <strong>name2 <\/strong>podem comptar el nombre de gens codificats en el mateix cromosoma:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT COUNT(DISTINCT name2) \r\n    -&gt; FROM refGene WHERE chrom LIKE 'chr21';\r\n\r\n+-----------------------+\r\n| COUNT(DISTINCT name2) |\r\n+-----------------------+\r\n|                   408 |\r\n+-----------------------+\r\n1 row in set (0.01 sec)<\/pre>\n<p>O identificar quins s\u00f3n els transcrits que posseeixen un major nombre d\u2019exons:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT name2,name,exonCount \r\n    -&gt; FROM refGene ORDER BY exonCount DESC LIMIT 10;\r\n\r\n+-------+--------------+-----------+\r\n| name2 | name         | exonCount |\r\n+-------+--------------+-----------+\r\n| TTN   | NM_001267550 |       363 |\r\n| TTN   | NM_001256850 |       313 |\r\n| TTN   | NM_133378    |       312 |\r\n| TTN   | NM_133437    |       192 |\r\n| TTN   | NM_133432    |       192 |\r\n| TTN   | NM_003319    |       191 |\r\n| NEB   | NM_001271208 |       183 |\r\n| NEB   | NM_001164507 |       182 |\r\n| NEB   | NM_001164508 |       182 |\r\n| MUC19 | NM_173600    |       174 |\r\n+-------+--------------+-----------+\r\n10 rows in set (0.11 sec)<\/pre>\n<p>Tamb\u00e9 podem seleccionar aquells que posseeixen un \u00fanic ex\u00f3:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT name2,name,exonCount\r\n    -&gt; FROM refGene WHERE exonCount = 1\r\n    -&gt; ORDER BY name2 LIMIT 10;\r\n\r\n+------------+---------------+-----------+\r\n| name2      | name          | exonCount |\r\n+------------+---------------+-----------+\r\n| AADACL2-AS1 | NR_110203    |         1 |\r\n| ABALON      | NR_131907    |         1 |\r\n| AEBP16B     | NM_080622    |         1 |\r\n| ACKR1       | NM_001122951 |         1 |\r\n| ACKR4       | NM_178445    |         1 |\r\n| ACTBL2      | NM_001017992 |         1 |\r\n| ACTG1P20    | NR_033926    |         1 |\r\n| ACTG1P4     | NR_024438    |         1 |\r\n| ACTL10      | NM_001024675 |         1 |\r\n| ACTL7A      | NM_006687    |         1 |\r\n+------------+---------------+-----------+\r\n10 rows in set (0.00 sec)<\/pre>\n<p>\u00c9s possible calcular el nombre d\u2019exons, de mitjana, per cada transcrit:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT AVG(exonCount) FROM refGene;\r\n\r\n+----------------+\r\n| AVG(exonCount) |\r\n+----------------+\r\n|         9.4126 |\r\n+----------------+\r\n1 row in set (0.11 sec)\r\n<\/pre>\n<p>I la longitud mitjana dels gens humans:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT AVG(txEnd-txStart+1) FROM refGene;\r\n\r\n+----------------------+\r\n| AVG(txEnd-txStart+1) |\r\n+----------------------+\r\n|           56983.2770 |\r\n+----------------------+\r\n1 row in set (0.10 sec)<\/pre>\n<p>Finalment, integrarem en aquesta an\u00e0lisi el genoma de ratol\u00ed dom\u00e8stic. Descarreguem els fitxers <strong>refGene.sql<\/strong> i <strong>refGene.txt<\/strong> d\u2019aquesta esp\u00e8cie en la seva versi\u00f3 mm9.<\/p>\n<p>Per evitar sobreescriure les anotacions humanes, hem de gravar ambd\u00f3s fitxers amb un nom diferent (per exemple,<strong> refGene_mouse.sql <\/strong>i <strong>refGene_mouse.txt<\/strong>). Posteriorment, cal editar el contingut del fitxer SQL per modificar el nom de la taula, per la mateixa ra\u00f3.<\/p>\n<p>Despr\u00e9s d\u2019aquestes modificacions, ja estem en condicions de llan\u00e7ar la creaci\u00f3 de la nova taula amb l\u2019ordre <strong>source<\/strong> i la seva repoblaci\u00f3 amb les dades relatives al genoma del ratol\u00ed amb l\u2019ordre <code>LOAD DATA<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"droide\">DROP TABLE IF EXISTS 'refGene_mouse';\r\n\r\nCREATE TABLE 'refGene_mouse' (\r\n   'bin\" smallint(S) unsigned NOT NULL,\r\n   'name' varchar(255) NOT NULL,\r\n   'chrom' varchar(255) NOT NULL,\r\n   'strand' char(l) NOT NULL,\r\n...\r\n---------------------------------------\r\n\r\nmysql&gt; source 'refGene_mouse.sql';\r\n\r\nQuery OK, 0 rows affected (O.00 sec)\r\n\r\nmysql&gt; LOAD DATA LOCAL INFILE 'refGene_mouse.txt'\r\n    -&gt; INTO TABLE refGene_mouse;\r\n\r\nQuery OK, 34904 rows affected (l.23 sec)\r\nRecords: 34904  Deleted: O  Skipped: O  Warnings: 0<\/pre>\n<p>Comprovem que els registres emmagatzemats a la nova taula s\u00f3n correctes:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT name2,name,chrom,strand,txStart,txEnd,exonCount\r\n   -&gt; FROM refGene_mouse ORDER BY name2 LIMIT 10;\r\n\r\n+---------------+--------------+-------+--------+-----------+-----------+-----------+\r\n| name2         | name         | chrom | strand | txStart   | txEnd     | exonCount |\r\n+---------------+--------------+-------+--------+-----------+-----------+-----------+\r\n| 0610005C13R1k | NR_O38166    | chr7  | -      |  52823164 |  52830S46 |         5 |\r\n| 0610005C13R1k | NR_038165    | chr7  | -      |  52823164 |  52830S46 |         4 | \r\n| 0610007P14Rik | NM_021446    | chr12 | -      |  87156404 |  87165495 |         5 | \r\n| 0610009B22Rik | NM_L025319   | chr11 | -      |  51498886 |  51502136 |         2 | \r\n| 0610009Ll8Rik | NR_038126    | chr11 | +      | 120209991 | 120212504 |         2 | \r\n| 0610009O20Rik | NM_024179    | chr18 | +      |  38409902 |  38422283 |        13 | \r\n| 0610010B08Rik | NM_001177543 | chr2  | -      | 175017505 | 175163713 |         6 | \r\n| 0610010B08Rik | NM_001177543 | chr2  | -      | 174952492 | 175261278 |         6 |\r\n| 0610010B08Rik | NM_001177543 | chr2  | +      | 175639522 | 175655901 |         5 |\r\n| 0610010B08Rik | NM_001177543 | chr2  | +      | 175737073 | 175753460 |         5 |\r\n+---------------+--------------+-------+--------+-----------+-----------+-----------+\r\n10 rows in set (0,00 sec)<\/pre>\n<p>Ara, si seleccionem aquells registres de les dues taules que pertanyen al mateix gen en ambdues esp\u00e8cies, podem construir un cat\u00e0leg de gens hom\u00f2legs.<\/p>\n<p>Podem dur a terme aquesta associaci\u00f3 perqu\u00e8 SQL no distingeix entre maj\u00fascules o min\u00fascules a l\u2019hora de comparar la columna <strong>name2<\/strong>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\">mysql&gt; SELECT DISTINCT refGene.name2,refGene.chrom,refGene.strand,\r\n    -&gt; RefGene.txStart,refGene.txEnd,refGene.exonCount,\r\n    -&gt; refGene_mouse.name2,RefGene_mouse.chrom,\r\n    -&gt; refGene_mouse.strand,refGene_mouse.txStart,\r\n    -&gt; refGene_mouse.txEnd,refGene_mouse.exonCount\r\n    -&gt; FROM refGene JOIN refGene_mouse\r\n    -&gt; ON refGene.name2 = refGene_mouse.name2\r\n    -&gt; ORDER BY refGene.name2 ASC LIMIT 10;\r\n\r\n+---------+-------+--------+----------+----------+-----------+---------+-------+--------+-----------+-----------+-----------+\r\n| name2   | chrom | strand | txStart  | txEnd    | exonCount | name2   | chrom | strand | txStart   | txEnd     | exonCount |\r\n+---------+----------------+----------+----------+-----------+---------+-------+--------+-----------+-----------+-----------+\r\n| A1BG    | chr19 | -      | 58346805 | 58353499 |         8 | A1bg    | chr15 | -      |  60749143 |  60752825 |         7 |\r\n| A1CF    | chr10 | -      | 50799408 | 50885675 |        13 | A1cf    | chr19 | +      |  31943250 |  32023896 |        12 |\r\n| A1CF    | chr10 | -      | 50799408 | 50885675 |        14 | A1cf    | chr19 | +      |  31943250 |  32023896 |        12 |\r\n| A1CF    | chr10 | -      | 50799408 | 50885675 |        15 | A1cf    | chr19 | +      |  31943250 |  32023896 |        12 |\r\n| A2M     | chr12 | -      |  9067707 |  9116229 |        35 | A2m     | chr6  | +      | 121586190 | 121629256 |        36 |\r\n| A2M     | chr12 | -      |  9067707 |  9116229 |        36 | A2m     | chr6  | +      | 121586190 | 121629256 |        36 |\r\n| A2M     | chr12 | -      |  9067707 |  9116229 |        37 | A2m     | chr6  | +      | 121586190 | 121629256 |        36 |\r\n| A3GALT2 | chr1  | -      | 33306765 | 33321098 |         5 | A3galt2 | chr4  | +      | 128436501 | 128446542 |         5 |\r\n| A4GALT  | chr22 | -      | 42692111 | 42720910 |         3 | A4galt  | chr15 | -      |  83057151 |  83082161 |         3 |\r\n| A4GALT  | chr22 | -      | 42692111 | 42720910 |         3 | A4galt  | chr15 | -      |  83057151 |  83082204 |         3 |\r\n+---------+-------+--------+----------+----------+-----------+---------+-------+--------+-----------+-----------+-----------+\r\n10 rows in set (5.14 sec)<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Per demostrar com extreure coneixement \u00fatil d\u2019una base de dades relacional, us proposem analitzar amb MySQL el contingut d\u2019un cat\u00e0leg de gens humans. Un gen \u00e9s un fragment d\u2019ADN ubicat en el genoma que cont\u00e9 la informaci\u00f3 precisa per sintetitzar una mol\u00e8cula d\u2019ARN. En els organismes eucariotes, un gen est\u00e0 constitu\u00eft per una successi\u00f3 de [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/562"}],"collection":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/comments?post=562"}],"version-history":[{"count":25,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/562\/revisions"}],"predecessor-version":[{"id":988,"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/pages\/562\/revisions\/988"}],"wp:attachment":[{"href":"http:\/\/eines-informatiques.recursos.uoc.edu\/gestion-de-datos\/wp-json\/wp\/v2\/media?parent=562"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}