—————————LABORATORIO 44-A————————
———-ACADÉMICO: CARLA CAROLINA PÉREZ HERNÁNDEZ—————-
—————ALUMNA: ANA GRISEL SANJUAN MERIDA——————-
——————A tale of two heatmap functions——————
https://divingintogeneticsandgenomics.rbind.io/post/a-tale-of-two-heatmap-functions/
Se instala la paquetería
install.packages(“gplots”)
install.packages(“heatmaps”)
install.packages(“pheatmaps”)
Se cargan las librerías
library(stats)
library(gplots)
##
## Attaching package: 'gplots'
## The following object is masked from 'package:stats':
##
## lowess
Medida de la expresión génica de 4 genes (h1, h2, l1 y l2) en 8 puntos de tiempo
h1 <- c(10,20,10,20,10,20,10,20)
h2 <- c(20,10,20,10,20,10,20,10)
l1 <- c(1,3,1,3,1,3,1,3)
l2 <- c(3,1,3,1,3,1,3,1)
Generamos matriz denominada mat para enlazar los genes
mat <- rbind(h1,h2,l1,l2)
Se corren los siguientes comandos para generar el plot
par(mfrow =c(1,1), mar=c(4,4,1,1))
plot(1:8,rep(0,8), ylim=c(0,35), pch="", xlab="Time", ylab="Gene Expression")
for (i in 1:nrow(mat)) {
lines(1:8,mat[i,], lwd=3, col=i)
}
legend(1,35,rownames(mat), 1:4, cex=0.7)
Para calcular la distancia
dist(mat)
## h1 h2 l1
## h2 28.284271
## l1 38.470768 40.496913
## l2 40.496913 38.470768 5.656854
Se usa el método predeterminado para el enlace: completo
plot(hclust(dist(mat)))
Headmap predeterminado, para obtener explicitamente parámetros
Escala en los renglones con escala de color verde y roja
heatmap(mat, Colv=NA, col=greenred(10), scale = "row")
Heatmap con la escala desactivada
heatmap(mat, Colv = NA, col=greenred(10), scale = "none")
Escalando los genes antes de introducirlos al heatmap
mat.scaled<- t(scale(t(mat), center=TRUE, scale = TRUE))
mat.scaled
## [,1] [,2] [,3] [,4] [,5] [,6] [,7]
## h1 -0.9354143 0.9354143 -0.9354143 0.9354143 -0.9354143 0.9354143 -0.9354143
## h2 0.9354143 -0.9354143 0.9354143 -0.9354143 0.9354143 -0.9354143 0.9354143
## l1 -0.9354143 0.9354143 -0.9354143 0.9354143 -0.9354143 0.9354143 -0.9354143
## l2 0.9354143 -0.9354143 0.9354143 -0.9354143 0.9354143 -0.9354143 0.9354143
## [,8]
## h1 0.9354143
## h2 -0.9354143
## l1 0.9354143
## l2 -0.9354143
## attr(,"scaled:center")
## h1 h2 l1 l2
## 15 15 2 2
## attr(,"scaled:scale")
## h1 h2 l1 l2
## 5.345225 5.345225 1.069045 1.069045
Cambio e la distancia entre genes
dist(mat.scaled)
## h1 h2 l1
## h2 5.291503
## l1 0.000000 5.291503
## l2 5.291503 0.000000 5.291503
Obtener el plot
Ahora h1 y l1 están agrupados juntos; l2 y h2 están agrupados juntos
plot(hclust(dist(mat.scaled)))
Generando el heatmap
heatmap(mat.scaled, Colv = NA, col=greenred(10), scale = "none")
Si aún no se escalan los datos pero se desea que l1 y h1 se agrupen juntos, al igual que l2 y h2, se puede usar la medida de distancia diferentes
Correlación entre genes para asignar valores de 1 y -1
cor(t(mat))
## h1 h2 l1 l2
## h1 1 -1 1 -1
## h2 -1 1 -1 1
## l1 1 -1 1 -1
## l2 -1 1 -1 1
Correlación para definir la distancia
1- cor(t(mat))
## h1 h2 l1 l2
## h1 0 2 0 2
## h2 2 0 2 0
## l1 0 2 0 2
## l2 2 0 2 0
Generamos el dendrograma
hc <- hclust(as.dist(1-cor(t(mat))))
plot(hc)
Heatmap sin escala
heatmap(mat, Colv = NA, Rowv=as.dendrogram(hc), col=greenred(10), scale = "none")
Heatmap con la escala en los renglones
heatmap(mat, Colv = NA, Rowv=as.dendrogram(hc), col=greenred(10), scale = "row")
Valores predeterminados de heatmap.2 con ninguna escala
heatmap.2(mat, trace = "none", Colv= NA, dendrogram = "row", scale = "none")
Funciones de heatmap en R: primero se agrupa y luego usa el argumento de escala (si está configurado) para representar los datos
heatmap.2(mat, trace = "none", Colv= NA, dendrogram = "row", scale = "row")
Datos escalados explícitamente primero y uso de la distancia euclidiana
heatmap.2(t(scale(t(mat), center=TRUE, scale=TRUE)), trace = "none", Colv= NA, dendrogram = "row", scale = "none")
Usando 1- cor(x) como distancia y no escalar
heatmap.2(mat, trace = "none",
Colv= NA, dendrogram = "row",
scale = "none",
hclust=function(x) hclust(x, method='complete'), distfun=function(x) as.dist(1-cor(t(x))))
Usando 1- cor(x) como distancia y no escalar
Usar la escala en la función heatmap.2 para representar los colores
heatmap.2(mat, trace = "none",
Colv= NA, dendrogram = "row",
scale = "row",
hclust=function(x) hclust(x, method='complete'), distfun=function(x) as.dist(1-cor(t(x))))
Escala y uso de 1- cor(x) como distancia
heatmap.2(t(scale(t(mat), center=TRUE, scale=TRUE)), trace = "none",
Colv= NA, dendrogram = "row",
hclust=function(x) hclust(x, method='complete'), distfun=function(x) as.dist(1-cor(t(x))))
—————————–FIN DE LABORATORIO 44-A———————————-