{"id":1841,"date":"2018-11-17T13:59:12","date_gmt":"2018-11-17T11:59:12","guid":{"rendered":"http:\/\/bioinfo2.ugr.es\/biocomputacion\/?page_id=1841"},"modified":"2018-11-18T11:08:39","modified_gmt":"2018-11-18T09:08:39","slug":"practica-4","status":"publish","type":"page","link":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/practica-4\/","title":{"rendered":"Visualizaci\u00f3n de datos de expresi\u00f3n"},"content":{"rendered":"<p>En esta pr\u00e1ctica aprenderemos a representar gr\u00e1ficamente datos de expresi\u00f3n utilizando el lenguaje de programaci\u00f3n <a href=\"https:\/\/www.r-project.org\/about.html\">R<\/a>.<\/p>\n<h2>Preparar el entorno de trabajo<\/h2>\n<p>Abra una terminal en el servidor de docencia y ejecute R. Ver\u00e1 un mensaje como el siguiente:<\/p>\n<pre class=\"p1\"><span class=\"s1\">R version 3.4.4 (2018-03-15) -- \"Someone to Lean On\"<\/span>\r\n\r\n<span class=\"s1\">Copyright (C) 2018 The R Foundation for Statistical Computing<\/span>\r\n\r\n...\r\n<\/pre>\n<p>Est\u00e1 en una sesi\u00f3n interactiva del interprete de R. Ejecute las siguientes sentencias:<\/p>\n<pre>library(pheatmap)\r\ndata &lt;- read.delim(\"\/home\/biocomp\/practica4\/TEP_Matrix.tab\",\r\n                   header=T, row.names=\"GeneSymbol\")<\/pre>\n<p>Ahora su entorno de trabajo est\u00e1 listo.<\/p>\n<h2>Explorar la matriz de expresi\u00f3n<\/h2>\n<p>El objeto <em>data<\/em>\u00a0contiene la matriz de expresi\u00f3n que utilizaremos en esta pr\u00e1ctica. Esta matriz procede de un estudio de mRNA en plaquetas en pacientes control vs. pacientes con c\u00e1ncer de pulm\u00f3n de c\u00e9lulas no peque\u00f1as (el art\u00edculo est\u00e1 disponible <a href=\"https:\/\/www.cell.com\/cancer-cell\/fulltext\/S1535-6108(17)30296-9\">aqu\u00ed<\/a>).<\/p>\n<p>Para ver las primeras 10 l\u00edneas de la matriz y las \u00faltimas 10 l\u00edneas de la matriz ejecute:<\/p>\n<pre>head(data, 10)\r\ntail(data, 10)<\/pre>\n<p>Las filas de esta matriz corresponden a los genes y las filas a los pacientes. Cada valor num\u00e9rico representa la cantidad relativa de mRNA de un gen concreto en un paciente concreto.<\/p>\n<p>Para obtener una lista de todos los genes ejecute:<\/p>\n<pre>genes &lt;- rownames(data)\r\ngenes<\/pre>\n<p>Para obtener una lista de todos los pacientes ejecute:<\/p>\n<pre>patients &lt;- colnames(data)\r\npatients<\/pre>\n<p>Para obtener la cantidad relativa de mRNA de un determinado gen (ej. &#8220;DPM1&#8221;) en un determinado paciente (ej. &#8220;Control_56&#8221;) ejecute:<\/p>\n<pre>data[\"DPM1\", \"Control_56\"]<\/pre>\n<p>Para obtener la cantidad relativa de mRNA de un determinado gen (ej. &#8220;DPM1&#8221;) en todos los pacientes ejecute:<\/p>\n<pre>DMP1 &lt;- as.numeric(data[\"DPM1\",])\r\nDMP1<\/pre>\n<p>Para obtener la media y la desviaci\u00f3n t\u00edpica de la cantidad relativa de mRNA del gen DMP1 ejecute:<\/p>\n<pre>mean(DMP1)\r\nsd(DMP1)<\/pre>\n<p>Para obtener la cantidad relativa de mRNA de todos los genes de un determinado paciente (ej. &#8220;Control_56&#8221;) ejecute:<\/p>\n<pre>Control_56 &lt;- as.numeric(data[,\"Control_56\"])\r\nControl_56<\/pre>\n<h2>Obtener un muestreo aleatorio de la matriz<\/h2>\n<p>La matriz contiene 3053 genes y 779 pacientes. Compru\u00e9belo ejecutando dim(data).<\/p>\n<p>Para facilitar la visualizaci\u00f3n de la matriz, obtenga una matriz m\u00e1s peque\u00f1as (30 genes aleatorios y 15 pacientes aleatorios) ejecutando:<\/p>\n<pre>genes &lt;- rownames(data)\r\npatients &lt;- colnames(data)\r\nrandom_genes &lt;- sample(genes, 30)\r\nrandom_patients &lt;- sample(patients, 15)\r\nrandom_data &lt;- data[random_genes, random_patients]\r\nrandom_data<\/pre>\n<p>Su matriz aleatoria est\u00e1 en el objeto <em>random_data<\/em>.<\/p>\n<h2>Calcular el Z-score<\/h2>\n<p>Aplicaremos una normalizaci\u00f3n a la escala de color del mapa de calor. Para ello transformaremos las cantidades relativas de mRNA en valores de Z-score.<\/p>\n<p>Ejecute:<\/p>\n<pre>cal_z_score &lt;- function(x) { (x - mean(x)) \/ sd(x) }\r\nrandom_data_norm &lt;- t(apply(random_data, 1, cal_z_score))<\/pre>\n<h2>Visualizar la matriz<\/h2>\n<p>A continuaci\u00f3n vamos a visualizar la matriz contenida en el objeto\u00a0<em>radom_data<\/em>. Para ello utilizaremos el paquete <a href=\"https:\/\/cran.r-project.org\/web\/packages\/pheatmap\/index.html\">pheatmap<\/a>, que tomar\u00e1 los datos de la matriz y la representar\u00e1 en forma de mapa de calor. Adem\u00e1s, pheatmap agrupar\u00e1 los genes y los pacientes en funci\u00f3n de su parecido en las cantidades relativas de mRNA. Estas agrupaciones se representan en forma de dendrogramas en los m\u00e1rgenes superior e izquierdo del mapa de calor.<\/p>\n<p>Ejecute:<\/p>\n<pre>pdf(\"my_heatmap.pdf\")\r\npheatmap(random_data_norm)\r\ndev.off()<\/pre>\n<p>Y transfiera el fichero my_heatmap.pdf a su ordenador para poder visualizarlo. Debe obtener algo como esto (pero con diferentes genes y pacientes):<\/p>\n<p><a href=\"http:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap.png\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-1875\" src=\"http:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap-1024x1024.png\" alt=\"\" width=\"640\" height=\"640\" srcset=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap-1024x1024.png 1024w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap-150x150.png 150w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap-300x300.png 300w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap-768x768.png 768w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap-270x270.png 270w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<p>Para facilitar la interpretaci\u00f3n del mapa de calor a\u00f1adiremos una anotaci\u00f3n con el tipo de paciente en funci\u00f3n de su diagn\u00f3stico cl\u00ednico.<\/p>\n<p>Ejecute:<\/p>\n<pre>diagnosis &lt;- read.delim(\"\/home\/biocomp\/practica4\/diagnosis.txt\", header=F, row.names=1)\r\ncolnames(diagnosis) &lt;- c(\"diagnosis\")\r\npdf(\"my_heatmap_diagnosis.pdf\")\r\npheatmap(random_data_norm, annotation_col = diagnosis)\r\ndev.off()<\/pre>\n<p>Y transfiera el fichero my_heatmap_diagnosis.pdf a su ordenador para poder visualizarlo. Debe obtener algo como esto (pero con diferentes genes y pacientes):<\/p>\n<p><a href=\"http:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis.png\"><img loading=\"lazy\" class=\"alignnone size-large wp-image-1876\" src=\"http:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis-1024x1024.png\" alt=\"\" width=\"640\" height=\"640\" srcset=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis-1024x1024.png 1024w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis-150x150.png 150w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis-300x300.png 300w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis-768x768.png 768w, https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-content\/uploads\/2018\/11\/my_heatmap_diagnosis-270x270.png 270w\" sizes=\"(max-width: 640px) 100vw, 640px\" \/><\/a><\/p>\n<h2>Ejercicios<\/h2>\n<h3>Seleccionar m\u00faltiples genes o pacientes<\/h3>\n<p>La funci\u00f3n\u00a0<em>c()<\/em> de R permite crear vectores, que se pueden utilizar para obtener datos de m\u00e1s de una fila y\/o m\u00e1s de una columna de una matriz en una sola operaci\u00f3n. Por ejemplo,<\/p>\n<pre>data[<span class=\"s1\">c('NOP56', 'ETS2', 'AK6'), c('<\/span><span class=\"s1\">Control_376', 'NSCLC_72', 'NSCLC_9'<\/span><span class=\"s1\">)<\/span>]<\/pre>\n<p>El c\u00f3digo anterior devuelve una matriz de 3&#215;3 con los datos de los genes NOP56, ETS2 y AK6 y de los pacientes Control_376, NSCLC_72 y NSCLC_9.<\/p>\n<p>Obtenga una matriz de 5&#215;5 a partir de su matriz\u00a0<em>random_data\u00a0<\/em>y gu\u00e1rdela en el objeto <em>my_data<\/em>.<\/p>\n<h3>Transponer una matriz<\/h3>\n<p>La funci\u00f3n\u00a0<em>t()<\/em> permite transponer una matriz, es decir, intercambiar filas por columnas.<\/p>\n<p>Obtenga transponga la matriz\u00a0<em>my_data<\/em> y gu\u00e1rdela en el objeto\u00a0<em>boxplot_data<\/em>.<\/p>\n<h3>Representar una matriz como boxplots<\/h3>\n<p>Vamos a utilizar la funci\u00f3n\u00a0<em>boxplot()<\/em> de R para representar la matriz\u00a0<em>boxplot_data<\/em> como boxplots. Cada boxplot representa la distribuci\u00f3n de la cantidad de mRNA de un determinado gen en los cinco pacientes que seleccion\u00f3 en el primer ejercicio. Habr\u00e1 un total de cinco boxplot, tantos como genes seleccion\u00f3.<\/p>\n<p>Ejecute:<\/p>\n<pre>pdf(\"my_boxplot.pdf)\r\nboxplot(boxplot_data)\r\ndev.off()<\/pre>\n<p>Transfiera el fichero my_boxplot.pdf a su ordenador para poder visualizarlo.<\/p>\n<p>Ejecute la ayuda de la funci\u00f3n <em>boxplot()<\/em>:<\/p>\n<pre>?boxplot<\/pre>\n<p>Utilizando esta ayuda, represente los boxplots horizontalmente.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En esta pr\u00e1ctica aprenderemos a representar gr\u00e1ficamente datos de expresi\u00f3n utilizando el lenguaje de programaci\u00f3n R. Preparar el entorno de trabajo Abra una terminal en el servidor de docencia y ejecute R. Ver\u00e1 un mensaje como el siguiente: R version <a href=\"https:\/\/bioinfo2.ugr.es\/biocomputacion\/practica-4\/\" class=\"read-more\">Read More &#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages\/1841"}],"collection":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/comments?post=1841"}],"version-history":[{"count":5,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages\/1841\/revisions"}],"predecessor-version":[{"id":1883,"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/pages\/1841\/revisions\/1883"}],"wp:attachment":[{"href":"https:\/\/bioinfo2.ugr.es\/biocomputacion\/wp-json\/wp\/v2\/media?parent=1841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}