Clustering-Leo - Licenciatura en Ciencias Genómicas

Anuncio
R/
Bioconductor:
Curso
Intensivo
heatmap
R / Bioconductor: Curso Intensivo
Clustering
Fin del Curso
Leonardo Collado Torres
Licenciatura en Ciencias Genómicas, UNAM
www.lcg.unam.mx/~lcollado/index.php
Cuernavaca, México
Oct-Nov, 2008
1 / 40
Bioconductor
R/
Bioconductor:
Curso
Intensivo
heatmap
1 heatmap
Clustering
Fin del Curso
2 Clustering
3 Fin del Curso
2 / 40
Nuestro problema a reproducir
R/
Bioconductor:
Curso
Intensivo
Para empezar la clase de hoy vamos a continuar un poco
sobre la lı́nea de microarreglos.
heatmap
Clustering
Vamos a usar el paquete ALL que contiene la información
para nuestro ejercicio.
Fin del Curso
Para entender un poco más, lean el abstract del artı́culo
del cual vienen los datos y nuestro objetivo es reproducir la
figura 2 de este otro artı́culo1 .
1
Si quieren aprender más sobre los orı́genes de Bioconductor pueden leer u hojear este artı́culo :)
3 / 40
Explorando la info
R/
Bioconductor:
Curso
Intensivo
heatmap
Cargemos nuestra información y explorenla :)
> library("ALL")
> data(ALL)
Clustering
Fin del Curso
> ALL
Por ejemplo, podemos ver los resultados de las 128
muestras para una prueba molecular.
> ALL$mol.biol[1:10]
[1] BCR/ABL NEG
BCR/ABL
[5] NEG
NEG
NEG
[9] NEG
BCR/ABL
6 Levels: ALL1/AF4 ... p15/p16
ALL1/AF4
NEG
4 / 40
Datos para la figura
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
En nuestra práctica solo nos interesan los que tienen una
translocación entre los cromosomas 9 y 22 (BCR/ABL) o
entre los cromosomas 4 y 11 (ALL11/AF4). Ası́ que
filtramos nuestros datos:
> eset <- ALL[, ALL$mol.biol %in%
+
c("BCR/ABL", "ALL1/AF4")]
Nos quedamos con 47 muestras donde cada una tiene
información de 12 625 genes. Es demasiada información
para correr un heatmap.
5 / 40
Genes Diferencialmente Expresados
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Ahora usamos a limma para encontrar los genes
diferencialmente expresados.
> library(limma)
> f <- factor(as.character(eset$mol.biol))
> design <- model.matrix(~f)
> fit <- eBayes(lmFit(eset, design))
6 / 40
Figura 1
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Ya con esta información podemos reproducir la figura 1
del artı́culo
> topTable(fit, coef = 2)
ID
1016
1914_at
7884
37809_at
6939
36873_at
10865
40763_at
4250
34210_at
11556
41448_at
3389
33358_at
8054
37978_at
10579 40480_s_at
330
1307_at
logFC
-3.076231
-3.971906
-3.391662
-3.086992
3.618194
-2.500488
-2.269730
-1.036051
1.844998
1.583904
AveExpr
4.611284
4.864721
4.284529
3.474092
8.438482
3.733012
5.191015
6.937965
7.826900
4.638885
7 / 40
Figura 1
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
t
P.Value
1016 -27.49860 4.663431e-31
7884 -19.75478 1.033405e-24
6939 -19.61497 1.401149e-24
10865 -17.00739 5.695120e-22
4250
15.45655 2.809128e-20
11556 -14.83924 1.428253e-19
3389 -12.96398 2.638314e-17
8054 -10.48777 5.126800e-14
10579 10.38214 7.206177e-14
330
10.25731 1.079482e-13
adj.P.Val
B
1016 5.887581e-27 56.32653
7884 5.896502e-21 44.23832
6939 5.896502e-21 43.97298
8 / 40
Figura 1
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
10865
4250
11556
3389
8054
10579
330
1.797522e-18
7.093049e-17
3.005283e-16
4.758388e-14
8.090730e-11
1.010866e-10
1.362846e-10
38.64615
35.10692
33.61391
28.76471
21.60216
21.27732
20.89145
9 / 40
Seleccionamos nuestros genes
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Solo queremos los genes con un valor p menor a 0.05.
Nos quedamos con los 165 genes que cumplen esto y
hacemos el heatmap :)
> selected <- p.adjust(fit$p.value[,
+
2]) < 0.05
> esetSel <- eset[selected, ]
> heatmap(exprs(esetSel))
10 / 40
heatmap básico
R/
Bioconductor:
Curso
Intensivo
39837_s_at
1267_at
402_s_at
32562_at
37600_at
1007_s_at
36643_at
1039_s_at
40215_at
39781_at
266_s_at
307_at
38408_at
37539_at
1911_s_at
1463_at
2057_g_at
39556_at
41744_at
34789_at
34850_at
38631_at
37280_at
36536_at
37006_at
41397_at
41346_at
40692_at
35714_at
1992_at
33244_at
40167_s_at
32872_at
34699_at
33440_at
36275_at
33809_at
40953_at
1308_g_at
1928_s_at
1307_at
40504_at
41742_s_at
41743_i_at
1674_at
40784_at
40785_g_at
37978_at
37099_at
1973_s_at
38413_at
2036_s_at
1126_s_at
31472_s_at
37184_at
35256_at
40493_at
41779_at
33412_at
37193_at
37479_at
39210_at
919_at
1140_at
41478_at
35831_at
176_at
37724_at
38385_at
41401_at
41071_at
39135_at
34961_at
37251_s_at
41470_at
1947_g_at
37810_at
36777_at
38004_at
177_at
36897_at
34106_at
31615_i_at
35665_at
33358_at
39315_at
41191_at
931_at
1914_at
36873_at
37809_at
39635_at
38223_at
33936_at
37558_at
41348_at
31605_at
205_g_at
32475_at
34247_at
36149_at
1500_at
34098_f_at
33528_at
35663_at
40393_at
33193_at
39716_at
33405_at
1929_at
36092_at
32215_i_at
41448_at
40763_at
873_at
37225_at
38056_at
37413_at
39424_at
32116_at
2039_s_at
40480_s_at
35816_at
1134_at
35260_at
39327_at
35769_at
33774_at
38032_at
34362_at
36650_at
41193_at
40088_at
40570_at
41266_at
36773_f_at
36878_f_at
41723_s_at
32977_at
38968_at
34210_at
37320_at
39717_g_at
36798_g_at
36398_at
40369_f_at
37967_at
32378_at
37043_at
41215_s_at
38096_f_at
36795_at
675_at
1389_at
38095_i_at
38833_at
35016_at
676_g_at
41745_at
31508_at
1461_at
37420_i_at
37383_f_at
41237_at
37039_at
heatmap
Clustering
26008
04006
63001
28028
28032
31007
24005
19005
16004
15004
22010
24001
28019
30001
28021
15005
09008
11005
28036
62001
27003
26003
62002
65005
84004
03002
20002
12012
22013
37013
14016
27004
49006
24011
08011
62003
12026
31011
43001
24017
68003
12006
24010
24022
08001
12007
01005
Fin del Curso
11 / 40
heatmap: arreglamos los colores
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Ahora personalizamos la gráfica para que se parezca más a
la del artı́culo.
Primero, usamos los mismos colores:
> heatmap(exprs(esetSel), col = topo.colors(100))
Sin embargo, a esta gráfica le falta la barrita roja con azul.
En el artı́culo la usan para enfatizar una diferencia entre
10 pacientes y los otros 37.
Para hacer la barrita usamos el argumento ColSideColors y
creamos una función para mapear la información de la
prueba molecular.
12 / 40
heatmap: arreglamos los colores
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
> color.map <- function(mol.biol) {
+
if (mol.biol == "ALL1/AF4")
+
"#FF0000"
+
else "#0000FF"
+ }
> patientcolors <- unlist(lapply(esetSel$mol.bio,
+
color.map))
13 / 40
heatmap: con colores similares
R/
Bioconductor:
Curso
Intensivo
39837_s_at
1267_at
402_s_at
32562_at
37600_at
1007_s_at
36643_at
1039_s_at
40215_at
39781_at
266_s_at
307_at
38408_at
37539_at
1911_s_at
1463_at
2057_g_at
39556_at
41744_at
34789_at
34850_at
38631_at
37280_at
36536_at
37006_at
41397_at
41346_at
40692_at
35714_at
1992_at
33244_at
40167_s_at
32872_at
34699_at
33440_at
36275_at
33809_at
40953_at
1308_g_at
1928_s_at
1307_at
40504_at
41742_s_at
41743_i_at
1674_at
40784_at
40785_g_at
37978_at
37099_at
1973_s_at
38413_at
2036_s_at
1126_s_at
31472_s_at
37184_at
35256_at
40493_at
41779_at
33412_at
37193_at
37479_at
39210_at
919_at
1140_at
41478_at
35831_at
176_at
37724_at
38385_at
41401_at
41071_at
39135_at
34961_at
37251_s_at
41470_at
1947_g_at
37810_at
36777_at
38004_at
177_at
36897_at
34106_at
31615_i_at
35665_at
33358_at
39315_at
41191_at
931_at
1914_at
36873_at
37809_at
39635_at
38223_at
33936_at
37558_at
41348_at
31605_at
205_g_at
32475_at
34247_at
36149_at
1500_at
34098_f_at
33528_at
35663_at
40393_at
33193_at
39716_at
33405_at
1929_at
36092_at
32215_i_at
41448_at
40763_at
873_at
37225_at
38056_at
37413_at
39424_at
32116_at
2039_s_at
40480_s_at
35816_at
1134_at
35260_at
39327_at
35769_at
33774_at
38032_at
34362_at
36650_at
41193_at
40088_at
40570_at
41266_at
36773_f_at
36878_f_at
41723_s_at
32977_at
38968_at
34210_at
37320_at
39717_g_at
36798_g_at
36398_at
40369_f_at
37967_at
32378_at
37043_at
41215_s_at
38096_f_at
36795_at
675_at
1389_at
38095_i_at
38833_at
35016_at
676_g_at
41745_at
31508_at
1461_at
37420_i_at
37383_f_at
41237_at
37039_at
heatmap
Clustering
26008
04006
63001
28028
28032
31007
24005
19005
16004
15004
22010
24001
28019
30001
28021
15005
09008
11005
28036
62001
27003
26003
62002
65005
84004
03002
20002
12012
22013
37013
14016
27004
49006
24011
08011
62003
12026
31011
43001
24017
68003
12006
24010
24022
08001
12007
01005
Fin del Curso
14 / 40
Agregamos la barra
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Ya con nuestra función, hacemos una gráfica MUY similar
a la del artı́culo.
Para que los nombres no se vean tan apachurrados,
usamos el argumento cexRow.
> heatmap(exprs(esetSel), col = topo.colors(100),
+
ColSideColors = patientcolors,
+
cexRow = 0.5)
15 / 40
heatmap prácticamente idéntico
R/
Bioconductor:
Curso
Intensivo
heatmap
39837_s_at
1267_at
402_s_at
32562_at
37600_at
1007_s_at
36643_at
1039_s_at
40215_at
39781_at
266_s_at
307_at
38408_at
37539_at
1911_s_at
1463_at
2057_g_at
39556_at
41744_at
34789_at
34850_at
38631_at
37280_at
36536_at
37006_at
41397_at
41346_at
40692_at
35714_at
1992_at
33244_at
40167_s_at
32872_at
34699_at
33440_at
36275_at
33809_at
40953_at
1308_g_at
1928_s_at
1307_at
40504_at
41742_s_at
41743_i_at
1674_at
40784_at
40785_g_at
37978_at
37099_at
1973_s_at
38413_at
2036_s_at
1126_s_at
31472_s_at
37184_at
35256_at
40493_at
41779_at
33412_at
37193_at
37479_at
39210_at
919_at
1140_at
41478_at
35831_at
176_at
37724_at
38385_at
41401_at
41071_at
39135_at
34961_at
37251_s_at
41470_at
1947_g_at
37810_at
36777_at
38004_at
177_at
36897_at
34106_at
31615_i_at
35665_at
33358_at
39315_at
41191_at
931_at
1914_at
36873_at
37809_at
39635_at
38223_at
33936_at
37558_at
41348_at
31605_at
205_g_at
32475_at
34247_at
36149_at
1500_at
34098_f_at
33528_at
35663_at
40393_at
33193_at
39716_at
33405_at
1929_at
36092_at
32215_i_at
41448_at
40763_at
873_at
37225_at
38056_at
37413_at
39424_at
32116_at
2039_s_at
40480_s_at
35816_at
1134_at
35260_at
39327_at
35769_at
33774_at
38032_at
34362_at
36650_at
41193_at
40088_at
40570_at
41266_at
36773_f_at
36878_f_at
41723_s_at
32977_at
38968_at
34210_at
37320_at
39717_g_at
36798_g_at
36398_at
40369_f_at
37967_at
32378_at
37043_at
41215_s_at
38096_f_at
36795_at
675_at
1389_at
38095_i_at
38833_at
35016_at
676_g_at
41745_at
31508_at
1461_at
37420_i_at
37383_f_at
41237_at
37039_at
Clustering
26008
04006
63001
28028
28032
31007
24005
19005
16004
15004
22010
24001
28019
30001
28021
15005
09008
11005
28036
62001
27003
26003
62002
65005
84004
03002
20002
12012
22013
37013
14016
27004
49006
24011
08011
62003
12026
31011
43001
24017
68003
12006
24010
24022
08001
12007
01005
Fin del Curso
16 / 40
Créditos
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Listo!
En sı́ el ejercicio lo tomé de Peter Cock: Using R to draw
a Heatmap from Microarray Data.
Me pareció sencillo e interesante :). Allı́ les explica de la
función heatmap.2 del paquete gplots con la cual pueden
manipular más a su heatmap. Por ejemplo, le pueden
añadir una leyenda explicando la relación entre los valores
y los colores.
17 / 40
Definición
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Hacer un clustering es el proceso por el cual clasificas
objetos en diferentes grupos llamados clusters con el fin de
que cada grupo comparta un rasgo común. Generalmente
agrupas tus objetos dada una medida de distancia.
El clustering de datos es muy usado en análisis
estadı́sticos, en campos como el machine learning, data
mining, reconocimiento de patrones, análisis de imágenes y
pues en la bioinformática :D.
Hay muchos métodos y formas de agrupar tus datos.
Usamos R por su eficiencia para manejar estructuras de
datos y funciónes para el clustering, por los ambientes
eficientes que ofrece para probar algoritmos y por la
cantidad de paquetes y funciones relacionadas disponibles.
18 / 40
Info de apoyo
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
En sı́, el clustering es muy complejo ya que el método a
usar depende de tus datos y el problema que buscas
resolver.
En esta página pueden encontrar una lista de diferentes
paquetes en R relacionados al clustering con breves
explicaciones.
Si les interesa esto del machine learning, chequen esta
página homóloga.
En fin, wiki también puede serles útil.
19 / 40
Transformaciones de Datos
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Bueno, antes de usar los métodos de clustering, hay que
decidir si transformamos nuestros datos previamente o no.
Centrar y estandarizar:
I
I
I
Substraes la media a cada dato.
Divides tus datos por la desviacion estándar.
Tus datos tendrán media 0 y desviación estándar 1.
Centrar y escalar tus datos usando scale.
I
I
I
Substraes la media a cada dato.
Divides tus datos por la raı́z de la media cuadrada.
Tus datos tendrán media 0 y desviación estándar 1.
Transformar con log.
Cambiar los valores de tus datos por su rank.
Sin transformar :)
20 / 40
Calcular la distancia
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
El siguiente paso es escoger el método de distancia a usar.
Hay muchos y cada uno tiene ventajas y desventajas.
La opción básica es el método Euclidiano. Esta ya la
conocen desde la prepa aunque noten que no sirve para
correlaciones negativas y no es invariante de escala.
Algo que nos dejó muy en claro Arturo Medrano es que no
importa que uses, vas a recuperar cluster. Pero son los
buenos? Pues el problema principal es escoger bien que
usar de acuerdo a tus datos.
Hay dos distancias basadas en correlación: la Pearson y la
Spearman. Su problema principal es que es sensible a los
outliers.
21 / 40
Calcular la distancia
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
En fin, otras distancias son la binaria, Manhattan,
Máxima, Minowski, etc. En R pueden obtener más
información con ?dist.
22 / 40
Métodos de clustering
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Ya entrando al clustering, hay que diferenciar los métodos.
Básicamente se dividen en:
I
I
Clustering jerarquı́co: aglomerativo, divisorio.
Clustering no jerarquı́co: k-means, PCA: principal
component analysis, etc.
23 / 40
Clustering jerarquı́co
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
La idea básica del clustering aglomerativo es la siguiente:
I
I
I
I
Identificar los clusters con la menor distancia
Unirlos a los nuevos clusters
Calcular la distancia entre clusters
Regresar al primer paso hasta que tengas un solo cluster
con todos tus datos
24 / 40
Jerárquico y aglomerativo
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
25 / 40
Funciones en R
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
En fin, en R podemos usar las funciones hclust y agnes si
queremos ir de abajo hacia arriba.
Para ir en el sentido contrario, está la función diana.
26 / 40
No jerárquico
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
De los métodos de clustering no jerárquico, el más usado
es el k-means. Este funciona ası́:
I
I
I
I
I
I
Escoger un número k de clusters
Asigna al azar los datos a los k clusters
Calcula un nuevo centroide para cada uno de los k clusters
Calcula la distancia entre todos los datos hacia los k
centroides
Asigna cada dato al centroide más cercano
Repite el proceso hasta que las asignaciones sean estables
27 / 40
Funciones en R
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
En R podemos hacer el k-means con la función kmeans del
paquete Stats.
Otras opción algo similar es con la función pam.
El PCA se hace con la función prcomp.
En fin, hay muchos paquetes disponibles para hacer tipos
de clusters.
28 / 40
Un ejercicio simple
R/
Bioconductor:
Curso
Intensivo
Vamos a hacer un ejercicio simple con datos de GEO.
Pueden bajar el archivo GSE1110clean.txt o
simplemente usar el siguiente comando2 :
> mydata <- read.delim("http://www.lcg.unam.mx/~lc
+
header = T, sep = "\t")
heatmap
Clustering
Fin del Curso
Hay que volver nuestro objeto una matriz y añadir bien los
nombres de las lı́neas.
> rownames(mydata) <- mydata[, 1]
> mydata <- as.matrix(mydata[, -1])
2
Acuérdense de que los códigos están en la página del curso
29 / 40
Filtrando nuestros datos
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Si se fijan, mydata tiene 22 810 lı́neas y 22 columnas; no
podemos hacer un clustering de este tamaño, pues R nos
va a protestar por limitacions de memoria. Vamos a filtrar
nuestra información para quedarnos solo con las lı́neas de
intensidad alta o de alta variabilidad.
> mydata <- mydata[apply(mydata >
+
100, 1, sum)/length(mydata[1,
+
]) > 0.5 & apply(log2(mydata),
+
1, IQR) > 1.5, ]
Tgirke, quien creó este ejercicio, hizo una función especial
para escoger colores, ası́ que leemos su código con la
función source.
> source("http://faculty.ucr.edu/~tgirke/Documents
30 / 40
El clustering como tal
R/
Bioconductor:
Curso
Intensivo
Ahora tenemos que centrar y escalar nuestros datos.
> mydatascale <- t(scale(t(mydata)))
heatmap
Clustering
Fin del Curso
Vamos a hacer clusters por correlación de Pearson para
nuestras lı́neas y por Spearman para nuestras columnas.
> hr <- hclust(as.dist(1 - cor(t(mydatascale),
+
method = "pearson")), method = "complete")
> hc <- hclust(as.dist(1 - cor(mydatascale,
+
method = "spearman")), method = "complete")
Si se fijan, usamos as.dist para interpretar los resultados
de nuestras correlaciones como distancias. Pues ese el tipo
de objeto que necesita hclust como entrada.
31 / 40
Visualizando clusters!
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Hay varias formas de visualizar los resultados de un
clustering. La más común es por dendogramas usando
plot, o si tienes 2, con un heatmap.
> plot(as.dendrogram(hr))
> plot(as.dendrogram(hc))
> heatmap(mydata, Rowv = as.dendrogram(hr),
+
Colv = as.dendrogram(hc), col = my.colorFct(
+
scale = "row")
Acuérdense de que los resultados de funciones como hclust
son objetos con muchos attributos. Chequenlos con la
función attributes
> attributes(hr)
32 / 40
264404_at
244938_at
244970_at
245010_at
245008_at
245011_at
244939_at
245047_at
245025_at
245026_at
244932_at
244995_at
254907_at
265227_s_at
245002_at
244982_at
245004_at
261556_s_at
256442_at
261648_at
260431_at
249065_at
254098_at
252273_at
248790_at
259276_at
248844_s_at
255814_at
254820_s_at
253957_at
254909_at
244933_at
249205_at
249777_at
263970_at
251109_at
257823_at
245038_at
245226_at
252882_at
247655_at
265200_s_at
254265_s_at
248322_at
254042_at
252549_at
267546_at
254550_at
266070_at
−DapX−5_at
Bs−dap−5_at
251625_at
266385_at
246854_at
247431_at
257925_at
262383_at
255807_at
258930_at
259685_at
259879_at
261567_at
245757_at
249384_at
254200_at
249234_at
258487_at
264758_at
247949_at
249015_at
247024_at
253298_at
264400_at
267024_s_at
252746_at
250464_at
253416_at
264846_at
264953_at
253874_at
260668_at
253047_at
245140_at
259735_at
264527_at
258618_at
265588_at
253660_at
259680_at
262525_at
262643_at
248118_at
245196_at
258769_at
253044_at
266908_at
251565_at
255788_at
266507_at
245076_at
253908_at
248163_at
262099_s_at
266611_at
266974_at
247869_at
253179_at
251246_at
257766_at
266832_at
258399_at
248801_at
253423_at
253103_at
253791_at
259784_at
261766_at
251178_at
260152_at
250509_at
265856_at
260058_at
262045_at
1.0
1.5
Fin del Curso
0.5
Clustering
0.0
2.0
Dendograma: hr
R/
Bioconductor:
Curso
Intensivo
heatmap
33 / 40
GSM18230
GSM18231
GSM18232
GSM18233
GSM18228
GSM18229
GSM18294
GSM18295
GSM18290
GSM18291
GSM18296
GSM18297
GSM18292
GSM18293
GSM18298
GSM18299
GSM18300
GSM18301
GSM18302
GSM18303
GSM18304
GSM18305
0.5
1.0
1.5
Clustering
0.0
Dendograma: hc
R/
Bioconductor:
Curso
Intensivo
heatmap
Fin del Curso
34 / 40
heatmap
R/
Bioconductor:
Curso
Intensivo
262045_at
260058_at
265856_at
250509_at
260152_at
251178_at
261766_at
259784_at
253791_at
253103_at
253423_at
248801_at
258399_at
266832_at
257766_at
251246_at
253179_at
247869_at
266974_at
266611_at
262099_s_at
248163_at
253908_at
245076_at
266507_at
255788_at
251565_at
266908_at
253044_at
258769_at
245196_at
248118_at
262643_at
262525_at
259680_at
253660_at
265588_at
258618_at
264527_at
259735_at
245140_at
253047_at
260668_at
253874_at
264953_at
264846_at
253416_at
250464_at
252746_at
267024_s_at
264400_at
253298_at
247024_at
249015_at
247949_at
264758_at
258487_at
249234_at
254200_at
249384_at
245757_at
261567_at
259879_at
259685_at
258930_at
255807_at
262383_at
257925_at
247431_at
246854_at
266385_at
251625_at
AFFX−r2−Bs−dap−5_at
AFFX−DapX−5_at
266070_at
254550_at
267546_at
252549_at
254042_at
248322_at
254265_s_at
265200_s_at
247655_at
252882_at
245226_at
245038_at
257823_at
251109_at
263970_at
249777_at
249205_at
244933_at
254909_at
253957_at
254820_s_at
255814_at
248844_s_at
259276_at
248790_at
252273_at
254098_at
249065_at
260431_at
261648_at
256442_at
261556_s_at
245004_at
244982_at
245002_at
265227_s_at
254907_at
244995_at
244932_at
245026_at
245025_at
245047_at
244939_at
245011_at
245008_at
245010_at
244970_at
244938_at
264404_at
heatmap
Clustering
GSM18230
GSM18231
GSM18232
GSM18233
GSM18228
GSM18229
GSM18294
GSM18295
GSM18290
GSM18291
GSM18296
GSM18297
GSM18292
GSM18293
GSM18298
GSM18299
GSM18300
GSM18301
GSM18302
GSM18303
GSM18304
GSM18305
Fin del Curso
35 / 40
Creando nuestro heatmap final!
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Ahora vamos a cortar el árbol a una altura especı́fica y le
pondremos una barrita con colores del lado izquierdo para
ver los diferentes clusters.
> mycl <- cutree(hr, h = max(hr$height)/1.5)
> mycolhc <- sample(rainbow(256))
> mycolhc <- mycolhc[as.vector(mycl)]
Ya con nuestra barrita preparada, hacemos el heatmap
final:
> heatmap(mydata, Rowv = as.dendrogram(hr),
+
Colv = as.dendrogram(hc), col = my.colorFct(
+
scale = "row", RowSideColors = mycolhc)
36 / 40
Heatmap final
R/
Bioconductor:
Curso
Intensivo
262045_at
260058_at
265856_at
250509_at
260152_at
251178_at
261766_at
259784_at
253791_at
253103_at
253423_at
248801_at
258399_at
266832_at
257766_at
251246_at
253179_at
247869_at
266974_at
266611_at
262099_s_at
248163_at
253908_at
245076_at
266507_at
255788_at
251565_at
266908_at
253044_at
258769_at
245196_at
248118_at
262643_at
262525_at
259680_at
253660_at
265588_at
258618_at
264527_at
259735_at
245140_at
253047_at
260668_at
253874_at
264953_at
264846_at
253416_at
250464_at
252746_at
267024_s_at
264400_at
253298_at
247024_at
249015_at
247949_at
264758_at
258487_at
249234_at
254200_at
249384_at
245757_at
261567_at
259879_at
259685_at
258930_at
255807_at
262383_at
257925_at
247431_at
246854_at
266385_at
251625_at
AFFX−r2−Bs−dap−5_at
AFFX−DapX−5_at
266070_at
254550_at
267546_at
252549_at
254042_at
248322_at
254265_s_at
265200_s_at
247655_at
252882_at
245226_at
245038_at
257823_at
251109_at
263970_at
249777_at
249205_at
244933_at
254909_at
253957_at
254820_s_at
255814_at
248844_s_at
259276_at
248790_at
252273_at
254098_at
249065_at
260431_at
261648_at
256442_at
261556_s_at
245004_at
244982_at
245002_at
265227_s_at
254907_at
244995_at
244932_at
245026_at
245025_at
245047_at
244939_at
245011_at
245008_at
245010_at
244970_at
244938_at
264404_at
heatmap
Clustering
GSM18305
GSM18304
GSM18303
GSM18302
GSM18301
GSM18300
GSM18299
GSM18298
GSM18293
GSM18292
GSM18297
GSM18296
GSM18291
GSM18290
GSM18295
GSM18294
GSM18229
GSM18228
GSM18233
GSM18232
GSM18231
GSM18230
Fin del Curso
37 / 40
Fin Clustering
R/
Bioconductor:
Curso
Intensivo
heatmap
Clustering
Fin del Curso
Listo! Ya saben lo más básico del clustering. Claro, una
cosa es encontrar los grupos y la otra es encontrar una
explicación biológica a dichos grupos.
Sé que algunos tendrán curiosidad de aprender más al
respecto, ası́ que los invito a seguir esta página.
Por ejemplo, acabamos de hacer solo el principio de la
sección de ejercicios.
38 / 40
Ligando R con otros lenguajes
R/
Bioconductor:
Curso
Intensivo
heatmap
Ya vimos en la clase pasada como conectarnos a MySQL
desde R. También puedes juntar a R con:
Clustering
I
Fin del Curso
I
I
I
I
Excel, al hacer archivos separados por tab o comas.
Perl, usando llamadas al sistema o con un paquete como el
RSPerl.
Python, usando RPy. En sı́ Python no lo hemos visto en la
LCG, pero sé que existe un repositorio similar a BioPerl y
Bioconductor llamado BioPython.
Con páginas HTML usando Rpad.
En fin, en este link que es parte de los links del material de
apoyo pueden encontrar más información al respecto.
39 / 40
Fin del Curso!
R/
Bioconductor:
Curso
Intensivo
Tareas de R como tal ya no tendrán este semestre, aunque
nos vemos la próxima semana para checar sus avances de
proyecto en la parte de R y dentro de 2 semanas para
evaluar su proyecto completo.
heatmap
Clustering
Espero que les haya gustado el curso y que si usen R3 . El
próximo semestre verán R avanzado con Alejandra Medina
:) Me enseñan pls!
Fin del Curso
Les recuerdo que luego ustedes tendrán que participar en
la impartición de cursos similares a las siguientes
generaciones. Además, puede que en su laboratorio no
muchos o nadie sepa de R, ası́ que les deseo suerte en esta
siguiente etapa de compartir sus conocimientos.
3
Por favor! Ya no hagan gráficas de pie!!! :P
40 / 40
Descargar