| TAREA 3 |
|
|||||||||
11-12-2023
|
Paso 1: Instalar Bioconductor Bioconductor es una plataforma de software utilizada para el análisis y la gestión de datos biológicos. Para instalar Bioconductor, se debe entrara en el ambiente de R y ejecuta el siguiente código:
# Instalar Bioconductor (si aún no está instalado)
if (!require("BiocManager", quietly = TRUE))
install.packages("BiocManager")
## Bioconductor version '3.16' is out-of-date; the current release version '3.18'
## is available with R version '4.3'; see https://bioconductor.org/install
# Instalar o cargar Bioconductor
BiocManager::install()
## Bioconductor version 3.16 (BiocManager 1.30.22), R 4.2.3 (2023-03-15)
## Old packages: 'igraph', 'rJava'
Este código instalará o cargará Bioconductor en el entorno R, según sea necesario.
Paso 2: Instalar GEOquery Una vez que Bioconductor esté instalado, se procede a instalar la biblioteca GEOquery desde Bioconductor. Ejecuta el siguiente código:
# Instalar GEOquery desde Bioconductor
BiocManager::install("GEOquery")
## Bioconductor version 3.16 (BiocManager 1.30.22), R 4.2.3 (2023-03-15)
## Warning: package(s) not installed when version(s) same as or greater than current; use
## `force = TRUE` to re-install: 'GEOquery'
## Old packages: 'igraph', 'rJava'
Este comando descargará e instalará la biblioteca GEOquery desde Bioconductor en el entorno de R.
Paso 3: Cargar GEOquery Después de instalar GEOquery, se puede cargar en la sesión de R cada vez que lo necesites. Para utilizar la librería se de ejecutar el siguiente el siguiente código:
# Cargar la biblioteca GEOquery
library(GEOquery)
## Loading required package: Biobase
## Loading required package: BiocGenerics
##
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:stats':
##
## IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, aperm, append, as.data.frame, basename, cbind,
## colnames, dirname, do.call, duplicated, eval, evalq, Filter, Find,
## get, grep, grepl, intersect, is.unsorted, lapply, Map, mapply,
## match, mget, order, paste, pmax, pmax.int, pmin, pmin.int,
## Position, rank, rbind, Reduce, rownames, sapply, setdiff, sort,
## table, tapply, union, unique, unsplit, which.max, which.min
## Welcome to Bioconductor
##
## Vignettes contain introductory material; view with
## 'browseVignettes()'. To cite Bioconductor, see
## 'citation("Biobase")', and for packages 'citation("pkgname")'.
## Setting options('download.file.method.GEOquery'='auto')
## Setting options('GEOquery.inmemory.gpl'=FALSE)
Con esto se podrá usar la biblioteca GEOquery para análisis de datos de expresión génica y acceso a bases de datos de GEO (Gene Expression Omnibus).
Se utiliza la biblioteca GEOquery en R para descargar datos de expresión génica y metadatos asociados desde el repositorio GEO (Gene Expression Omnibus) de NCBI (National Center for Biotechnology Information).
Paso 1: Se carga la biblioteca GEOquery, que es una biblioteca de R que permite acceder a datos de expresión génica desde GEO.
library(GEOquery)
Paso 2: Se utiliza la función getGEO para descargar el conjunto de datos con el código de acceso “GSE75819” desde GEO. Este conjunto de datos corresponde a un experimento de expresión génica específico.
gse <- getGEO("GSE75819")
## Found 1 file(s)
## GSE75819_series_matrix.txt.gz
Paso 3: Se accede a los datos de expresión génica del conjunto de datos descargado y se almacenan en la variable expr_data. gse[[1]] se utiliza para acceder al primer conjunto de datos dentro de la lista de conjuntos de datos descargados.
expr_data <- exprs(gse[[1]])
Paso 4: Se acceden a los metadatos asociados al conjunto de datos y se almacenan en la variable metadata. De nuevo, gse[[1]] se utiliza para acceder a los metadatos del primer conjunto de datos.
metadata <- pData(gse[[1]])
Paso 5: Se muestra las primeras 5 filas de las columnas específicas (“GSM1968434”, “GSM1968435”, etc.) en los datos de expresión génica. Esto es útil para inspeccionar los datos.
head(expr_data[, c("GSM1968434", "GSM1968435", "GSM1968436", "GSM1968437", "GSM1968438", "GSM1968439")])
## GSM1968434 GSM1968435 GSM1968436 GSM1968437
## ILMN_1343291 24061.1300000 2.721604e+04 34407.450000 27615.240000
## ILMN_1343295 8286.7650000 4.762797e+03 9855.074000 5483.595000
## ILMN_1651199 -3.9300070 -1.441241e+00 1.926446 -1.336510
## ILMN_1651209 10.0743200 4.587432e+00 18.413650 20.867340
## ILMN_1651210 -0.6527377 -8.313171e-02 1.078110 -5.831952
## ILMN_1651221 1.8175920 6.876435e+00 7.039004 2.771002
## GSM1968438 GSM1968439
## ILMN_1343291 3.195022e+04 2.738239e+04
## ILMN_1343295 1.067385e+04 4.391301e+03
## ILMN_1651199 -4.697017e+00 2.702771e+00
## ILMN_1651209 2.519860e+01 7.600074e+00
## ILMN_1651210 -6.164585e+00 2.111455e+00
## ILMN_1651221 7.098158e-02 8.274244e-02
head(metadata[, c("title", "geo_accession", "status", "submission_date", "last_update_date", "type")])
## title geo_accession status submission_date
## GSM1968434 VD13N GSM1968434 Public on Nov 01 2016 Dec 08 2015
## GSM1968435 VD13V GSM1968435 Public on Nov 01 2016 Dec 08 2015
## GSM1968436 VD18N GSM1968436 Public on Nov 01 2016 Dec 08 2015
## GSM1968437 VD18V GSM1968437 Public on Nov 01 2016 Dec 08 2015
## GSM1968438 VD19N GSM1968438 Public on Nov 01 2016 Dec 08 2015
## GSM1968439 VD19V GSM1968439 Public on Nov 01 2016 Dec 08 2015
## last_update_date type
## GSM1968434 Nov 01 2016 RNA
## GSM1968435 Nov 01 2016 RNA
## GSM1968436 Nov 01 2016 RNA
## GSM1968437 Nov 01 2016 RNA
## GSM1968438 Nov 01 2016 RNA
## GSM1968439 Nov 01 2016 RNA
Paso 6: Se calcula el número de registros (filas) y el número de columnas en los datos de expresión génica. Esto proporciona información sobre el tamaño del conjunto de datos.
num_registros <- nrow(expr_data)
num_columnas <- ncol(expr_data)
# Imprimir el número de registros
cat("El número de registros en expr_data es:", num_registros, "\n")
## El número de registros en expr_data es: 48803
# Imprimir el número de columnas
cat("El número de columnas en expr_data es:", num_columnas, "\n")
## El número de columnas en expr_data es: 30
Paso 7: Se genera un Sub_Conjunto de Datos, se realiza un proceso similar para crear un subconjunto de datos expr_data_subset y metadata_subset tomando las primeras 5000 filas de los datos originales. Se calcula el número de filas en estos subconjuntos y se imprime en la consola. Esto se realiza para tener un set de datos que ayude a configuraciones del código antes de trabajar con todos los datos
# Obtener 5000 registros
expr_data_subset <- expr_data[1:5000, ]
num_expr_data_subset <- nrow(expr_data_subset)
# Imprimir el número de columnas
cat("El número de columnas en expr_data_subset es:", num_expr_data_subset, "\n")
## El número de columnas en expr_data_subset es: 5000
# Obtener 5000 registros
metadata_subset <- metadata[1:5000, ]
num_metadata_subset <- nrow(metadata_subset)
# Imprimir el número de columnas
cat("El número de columnas en num_metadata_subset es:", num_metadata_subset, "\n")
## El número de columnas en num_metadata_subset es: 5000
3.1.- Hclust (Jerarquía de Clustering):
hclust
es una función que se utiliza para realizar agrupaciones jerárquicas en
base a una matriz de distancias. Para ejemplificar el uso, primero de
calcular la matriz de distancias con una función como dist y luego usar
hclust para realizar el clustering jerárquico de datos de expresión
génica.[2]
# Cargar la biblioteca necesaria para el clustering jerárquico
library(stats)
# Calcular la matriz de distancias euclidianas en los datos de expresión
dist_matrix <- dist(expr_data_subset)
# Realizar el clustering jerárquico utilizando el método "ward.D2"
hclust_result <- hclust(dist_matrix, method = "complete")
# Dibujar el dendrograma
plot(hclust_result)
3.2.- K-means Clustering:
Es una función que se utiliza para realizar el clustering de
K-means en un conjunto de datos de expresión. Se debe especificar el
número de clústeres (K) que deseas crear.[2]
# Cargar la biblioteca necesaria
library(stats)
# Calcular la matriz de distancias euclidianas en los datos de expresión
dist_matrix <- dist(expr_data_subset)
# Realizar K-means Clustering con k=3 (o el número de grupos deseado)
k <- 3
kmeans_result <- kmeans(expr_data_subset, centers = k, nstart = 25) # Puedes ajustar nstart según tus necesidades
# Dibujar un gráfico de dispersión (scatter plot) de los datos de expresión
plot(expr_data_subset, col = kmeans_result$cluster)
# Se pueden agregar etiquetas a los puntos utilizando los metadatos, por ejemplo, bajo el supuesto que los metadatos incluyen información sobre grupos o condiciones, si los metadatos tienen una columna "type" que indica a qué grupo pertenece cada muestra:
# metadata_group <- metadata$ title
# text(expr_data, labels = metadata_group, cex = 0.8, col = "blue")
3.3.- DBSCAN Clustering:
El algoritmo DBSCAN (Density-Based Spatial Clustering of
Applications with Noise) es un método de agrupamiento (clustering)
utilizado en aprendizaje automático y minería de datos. A diferencia de
otros algoritmos de agrupamiento, como k-means, DBSCAN no requiere que
especifiques el número de clústeres de antemano. En su lugar, DBSCAN se
basa en la densidad de los puntos de datos en el espacio para agruparlos
en clústeres.
# Instala y carga la biblioteca necesaria (si no está instalada)
if (!requireNamespace("dbscan", quietly = TRUE)) {
install.packages("dbscan")
}
# Se carga la Liberia a utilizar
library(dbscan)
##
## Attaching package: 'dbscan'
## The following object is masked from 'package:stats':
##
## as.dendrogram
# Define los parámetros para DBSCAN
eps <- 0.5 # Radio epsilon (ajusta según tus datos)
minPts <- 5 # Número mínimo de puntos en un grupo (ajusta según tus datos)
# Realiza el clustering DBSCAN en los datos de expresión
dbscan_result <- dbscan(expr_data_subset, eps = eps, minPts = minPts)
# Obtén las etiquetas de grupos del resultado
cluster_labels <- dbscan_result$cluster
# Dibuja un gráfico para visualizar el resultado del clustering (puede variar según tus datos)
plot(expr_data_subset, col = cluster_labels, pch = 20)
legend("topright", legend = unique(cluster_labels), col = unique(cluster_labels), pch = 20)
4.1.- DESeq2:
Es una herramienta
bioinformática utilizada para el análisis de datos de expresión génica
de alto rendimiento, especialmente en estudios de secuenciación de ARN
(RNA-Seq). El nombre DESeq2 significa “Differential Expression analysis
for Sequence data, version 2” (Análisis de Expresión Diferencial para
Datos de Secuenciación, versión 2). Fue desarrollado para identificar
diferencias en la expresión génica entre diferentes condiciones o grupos
de muestras en estudios biológicos.[2]
# Verificar si la librería DESeq2 está instalada
if (!requireNamespace("DESeq2", quietly = TRUE)) {
# Si no está instalada, instalarla usando BiocManager
if (!requireNamespace("BiocManager", quietly = TRUE)) {
install.packages("BiocManager")
}
BiocManager::install("DESeq2")
}
# Cargar la librería DESeq2
library(DESeq2)
## Loading required package: S4Vectors
## Loading required package: stats4
##
## Attaching package: 'S4Vectors'
## The following objects are masked from 'package:base':
##
## expand.grid, I, unname
## Loading required package: IRanges
## Loading required package: GenomicRanges
## Loading required package: GenomeInfoDb
## Loading required package: SummarizedExperiment
## Loading required package: MatrixGenerics
## Loading required package: matrixStats
##
## Attaching package: 'matrixStats'
## The following objects are masked from 'package:Biobase':
##
## anyMissing, rowMedians
##
## Attaching package: 'MatrixGenerics'
## The following objects are masked from 'package:matrixStats':
##
## colAlls, colAnyNAs, colAnys, colAvgsPerRowSet, colCollapse,
## colCounts, colCummaxs, colCummins, colCumprods, colCumsums,
## colDiffs, colIQRDiffs, colIQRs, colLogSumExps, colMadDiffs,
## colMads, colMaxs, colMeans2, colMedians, colMins, colOrderStats,
## colProds, colQuantiles, colRanges, colRanks, colSdDiffs, colSds,
## colSums2, colTabulates, colVarDiffs, colVars, colWeightedMads,
## colWeightedMeans, colWeightedMedians, colWeightedSds,
## colWeightedVars, rowAlls, rowAnyNAs, rowAnys, rowAvgsPerColSet,
## rowCollapse, rowCounts, rowCummaxs, rowCummins, rowCumprods,
## rowCumsums, rowDiffs, rowIQRDiffs, rowIQRs, rowLogSumExps,
## rowMadDiffs, rowMads, rowMaxs, rowMeans2, rowMedians, rowMins,
## rowOrderStats, rowProds, rowQuantiles, rowRanges, rowRanks,
## rowSdDiffs, rowSds, rowSums2, rowTabulates, rowVarDiffs, rowVars,
## rowWeightedMads, rowWeightedMeans, rowWeightedMedians,
## rowWeightedSds, rowWeightedVars
## The following object is masked from 'package:Biobase':
##
## rowMedians
# Redondear los valores en la matriz de conteo a enteros
expr_data <- round(expr_data)
# Verificar si hay valores negativos en la matriz de conteo
if (any(expr_data < 0)) {
# Realizar acciones para corregir los valores negativos, por ejemplo, establecerlos en cero
expr_data[expr_data < 0] <- 0
}
# Mostrar los nombres de las columnas en el metadata_subset
colnames(metadata_subset)
## [1] "title" "geo_accession"
## [3] "status" "submission_date"
## [5] "last_update_date" "type"
## [7] "channel_count" "source_name_ch1"
## [9] "organism_ch1" "characteristics_ch1"
## [11] "treatment_protocol_ch1" "molecule_ch1"
## [13] "extract_protocol_ch1" "label_ch1"
## [15] "label_protocol_ch1" "taxid_ch1"
## [17] "hyb_protocol" "scan_protocol"
## [19] "description" "description.1"
## [21] "data_processing" "platform_id"
## [23] "contact_name" "contact_email"
## [25] "contact_laboratory" "contact_institute"
## [27] "contact_address" "contact_city"
## [29] "contact_state" "contact_zip/postal_code"
## [31] "contact_country" "supplementary_file"
## [33] "data_row_count" "tissue:ch1"
# Crear un objeto DESeqDataSet a partir de la matriz de conteo (expr_data), los metadatos (metadata), y especificando un diseño básico (~ 1)
dds <- DESeqDataSetFromMatrix(countData = expr_data,
colData = metadata,
design = ~ 1)
## converting counts to integer mode
# Realizar la normalización y el ajuste del modelo DESeq
options(warn = -1)
dds <- DESeq(dds)
## estimating size factors
## estimating dispersions
## gene-wise dispersion estimates
## mean-dispersion relationship
## final dispersion estimates
## fitting model and testing
## -- replacing outliers and refitting for 77 genes
## -- DESeq argument 'minReplicatesForReplace' = 7
## -- original counts are preserved in counts(dds)
## estimating dispersions
## fitting model and testing
options(warn = 0)
# Realizar el análisis de expresión diferencial sin especificar una variable de diseño
results <- results(dds)
# Mostrar los primeros 10 resultados de expresión diferencial
head(results, n = 10)
## log2 fold change (MLE): Intercept
## Wald test p-value: Intercept
## DataFrame with 10 rows and 6 columns
## baseMean log2FoldChange lfcSE stat pvalue
## <numeric> <numeric> <numeric> <numeric> <numeric>
## ILMN_1343291 18103.2637 14.14396 0.147479 95.90503 0.00000e+00
## ILMN_1343295 5217.4749 12.34914 0.158579 77.87361 0.00000e+00
## ILMN_1651199 22.8675 4.51523 0.399152 11.31206 1.14377e-29
## ILMN_1651209 28.0975 4.81237 0.243826 19.73688 1.04008e-86
## ILMN_1651210 19.5927 4.29224 0.441011 9.73274 2.18633e-22
## ILMN_1651221 24.9828 4.64286 0.304349 15.25505 1.52370e-52
## ILMN_1651228 3963.6577 11.95262 0.241498 49.49364 0.00000e+00
## ILMN_1651229 157.6840 7.30089 0.136850 53.34962 0.00000e+00
## ILMN_1651230 21.5003 4.42628 0.442100 10.01195 1.35065e-23
## ILMN_1651232 33.8499 5.08108 0.144869 35.07366 1.69978e-269
## padj
## <numeric>
## ILMN_1343291 0.00000e+00
## ILMN_1343295 0.00000e+00
## ILMN_1651199 1.53228e-29
## ILMN_1651209 2.31228e-86
## ILMN_1651210 2.49013e-22
## ILMN_1651221 2.71937e-52
## ILMN_1651228 0.00000e+00
## ILMN_1651229 0.00000e+00
## ILMN_1651230 1.57860e-23
## ILMN_1651232 5.58390e-269
4.2.- edgeR:
El paquete edgeR (Exact Tests for
Differences between Two Groups of Negative Binomial Counts) es una
herramienta en R diseñada para realizar análisis de expresión génica
diferencial en datos de secuenciación de ARN (RNA-seq). edgeR se utiliza
principalmente para identificar genes cuya expresión varía
significativamente entre dos o más grupos de muestras [1][4].
Paso 1: Preparación de datos
# Definir la ruta completa de la carpeta que contiene los archivos
ruta_completa <- "/Users/adolfogonzalez/desa_r/bioinformatica/"
# Definir los nombres de los archivos y las condiciones
sampleNames <- c("trapnell_counts_C1_R1", "trapnell_counts_C1_R2", "trapnell_counts_C1_R3", "trapnell_counts_C2_R1", "trapnell_counts_C2_R2", "trapnell_counts_C2_R3")
sampleFiles <- c("trapnell_counts_C1_R1.tab", "trapnell_counts_C1_R2.tab", "trapnell_counts_C1_R3.tab", "trapnell_counts_C2_R1.tab", "trapnell_counts_C2_R2.tab", "trapnell_counts_C2_R3.tab")
sampleConditions <- c("C1", "C1", "C1", "C2", "C2", "C2")
# Construir las rutas completas de los archivos
sampleFiles_ruta_completa <- file.path(ruta_completa, sampleFiles)
# Crear el data frame de muestra
sampleTable <- data.frame(sampleName = sampleNames,
fileName = sampleFiles_ruta_completa, # Usar las rutas completas
condition = sampleConditions)
# Verificar el data frame de muestra
sampleTable
## sampleName
## 1 trapnell_counts_C1_R1
## 2 trapnell_counts_C1_R2
## 3 trapnell_counts_C1_R3
## 4 trapnell_counts_C2_R1
## 5 trapnell_counts_C2_R2
## 6 trapnell_counts_C2_R3
## fileName
## 1 /Users/adolfogonzalez/desa_r/bioinformatica//trapnell_counts_C1_R1.tab
## 2 /Users/adolfogonzalez/desa_r/bioinformatica//trapnell_counts_C1_R2.tab
## 3 /Users/adolfogonzalez/desa_r/bioinformatica//trapnell_counts_C1_R3.tab
## 4 /Users/adolfogonzalez/desa_r/bioinformatica//trapnell_counts_C2_R1.tab
## 5 /Users/adolfogonzalez/desa_r/bioinformatica//trapnell_counts_C2_R2.tab
## 6 /Users/adolfogonzalez/desa_r/bioinformatica//trapnell_counts_C2_R3.tab
## condition
## 1 C1
## 2 C1
## 3 C1
## 4 C2
## 5 C2
## 6 C2
# Leer los archivos y combinar los datos
tabs <- lapply(sampleFiles_ruta_completa, function(x) read.table(x, col.names = c("Gene", basename(x))))
countdata <- Reduce(f = function(x, y) merge(x, y, by="Gene"), x = tabs)
# Verificar los datos combinados
head(countdata)
## Gene trapnell_counts_C1_R1.tab trapnell_counts_C1_R2.tab
## 1 FBgn0000003 0 0
## 2 FBgn0000008 619 620
## 3 FBgn0000014 91 81
## 4 FBgn0000015 73 67
## 5 FBgn0000017 2668 2404
## 6 FBgn0000018 328 343
## trapnell_counts_C1_R3.tab trapnell_counts_C2_R1.tab trapnell_counts_C2_R2.tab
## 1 0 0 0
## 2 557 531 608
## 3 104 87 125
## 4 52 55 71
## 5 2467 2550 2610
## 6 363 304 288
## trapnell_counts_C2_R3.tab
## 1 0
## 2 548
## 3 102
## 4 73
## 5 2572
## 6 345
Paso 2: Utilizar Función edgeR
# renombran las filas de countdata con los valores de la columna "Gene" y luego eliminan dicha columna para limpiar y preparar los datos para análisis posteriores.
rownames(countdata) <- as.character(countdata$Gene)
countdata$Gene<-NULL
# Cargar Liberia edgeR en R.
library(edgeR)
## Loading required package: limma
##
## Attaching package: 'limma'
## The following object is masked from 'package:DESeq2':
##
## plotMA
## The following object is masked from 'package:BiocGenerics':
##
## plotMA
# Se crea un vector "mygroups" que representa las condiciones experimentales de las muestras
mygroups <- c("C1","C1","C1","C2","C2","C2")
# Se crea un objeto DGEList con los datos de expresión, nombres de genes y grupos de interés
y <- DGEList(counts=countdata, genes=rownames(countdata), group = mygroups)
# Calcular factores de normalización para los datos de expresión
y <- calcNormFactors(y)
# Estimar dispersiones para el análisis de expresión diferencial
y <- estimateDisp(y)
## Using classic mode.
# Realizar un test exacto de expresión diferencial
et <- exactTest(y)
# Convertir los resultados del test en un data frame y obtener los genes con FDR < 0.05
result_edgeR <- as.data.frame(topTags(et, n=nrow(countdata)))
# Crear una tabla que muestra cuántos genes tienen un FDR < 0.05
table(result_edgeR$FDR < 0.05)
##
## FALSE TRUE
## 17224 266
# Crear un gráfico de tipo "volcano plot" para visualizar los resultados del análisis
plot(result_edgeR$logFC, -log10(result_edgeR$FDR),
col=ifelse(result_edgeR$FDR<0.05,"red","black"),
main="FDR volcano plot",
xlab="log2FC",
ylab="-log10(FDR)")
# Crear un histograma que representa la distribución de valores de p-valor
hist(result_edgeR$PValue, breaks=20, xlab="P-Value", col="royalblue", ylab="Frequency", main="P-value distribution")
4.3.- LIMMA:
El paquete edgeR (Linear Models
for Microarray Data), es una biblioteca de R utilizada para analizar
datos de microarrays y secuenciación de próxima generación (NGS) en el
contexto de expresión génica diferencial. LIMMA es especialmente útil
cuando se trabaja con datos de alta dimensión y se busca identificar
genes o características que están diferencialmente expresados entre
diferentes grupos o condiciones experimentales.[3]
# Cargar Liberia limma en R.
library(limma)
# Calcular factores de normalización para los datos de expresión
dge <- calcNormFactors(y)
# Crear un diseño que excluya la categoría no estimable
mod <- model.matrix(~0 + mygroups) # Excluye la intercept
# Aplicar voom
vGene <- voom(dge, mod, plot = TRUE)
En cuanto al modelo probabilístico, tanto DESeq2 como EdgeR siguen estrategias similares, pero presentan diferencias significativas en algunos aspectos. El aspecto más relevante en el que difieren es su enfoque en el proceso de normalización de datos. EdgeR emplea el método TMM (Trimmed Mean of M-values), mientras que DESeq2 divide los conteos de cada gen en una muestra por el número total de lecturas en esa misma muestra. En la práctica, los factores de normalización suelen mostrar similitudes, pero la diferencia más significativa reside en la manera en que estiman la dispersión. EdgeR modera las estimaciones de dispersión a nivel de gen, ajustándolas hacia una tendencia media basada en la relación media-dispersión. Por otro lado, DESeq2 toma el valor máximo entre las estimaciones de dispersión individuales y la tendencia media de dispersión.[3]
La siguinete tabla, expone las características y diferencias más relevantes entre los principales paquetes empleados por Bioconductor para el análisis de expresión génica diferencial.[3]
5.1.- Hatmap:
La función heatmap en R se
utiliza para crear mapas de calor (heatmaps) que representan visualmente
datos numéricos en una matriz como colores. Los heatmaps son útiles para
identificar patrones y tendencias en datos, especialmente en matrices de
datos grandes, como en análisis de expresión génica o análisis de datos
biológicos.
# Instalar y cargar la librería "gplots" para usar "heatmap"
if (!requireNamespace("gplots", quietly = TRUE)) {
install.packages("gplots")
}
# Cargar la biblioteca necesaria
library(gplots)
##
## Attaching package: 'gplots'
## The following object is masked from 'package:IRanges':
##
## space
## The following object is masked from 'package:S4Vectors':
##
## space
## The following object is masked from 'package:stats':
##
## lowess
# Crear una matriz de datos de ejemplo
matriz_ejemplo <- matrix(rnorm(100), nrow = 10, ncol = 10)
# Generar un heatmap básico
heatmap(matriz_ejemplo,
col = colorRampPalette(c("blue", "white", "red"))(100), # Colores del heatmap
scale = "none", # Escalado de datos ("none" para ningún escalado)
main = "Heatmap de Ejemplo", # Título del gráfico
xlab = "Columnas", # Etiqueta del eje x
ylab = "Filas" # Etiqueta del eje y
)
5.2.- Heatmap2:
La función heatmap2 es una
versión mejorada y más flexible que permite un mayor control sobre la
apariencia del mapa de calor.
library("gplots")
# make matrix
mat <- matrix(rnorm(1200), ncol=6)
# Cargar la biblioteca necesaria
heatmap.2(x=mat)
# Generar un heatmap2 con la función heatmap2
heatmap.2(x=mat,
Colv=FALSE,
dendrogram="row",
scale="row",
col="bluered",
trace="none",
ColSideColors=rep(c("green","orange"), each=3),
labRow=FALSE,
main="my heatmap",
ylab="Genes",
xlab="Samples")
[1] [01] C. Gil, “Análisis de datos scRNA-Seq con bioconductor,” Rpubs, 2020.
[2] S. H. Holmes and W. Huber, “Modern Statistics for Modern Biology,” Cambridge University Press, 2018.
[3] G. K. Smyth, M. Ritchie, N. Thorne, J. Wettenhall, W. Shi, y Y. Hu, “limma: linear models for microarray and RNA-Seq data user’s guide,” Bioinformatics Division, The Walter and Eliza Hall Institute of Medical Research, Melbourne, Australia, 2002.
[4] C. Chamorro Poyo, “Análisis de datos de RNA-Seq empleando diferentes paquetes desarrollados dentro del proyecto Bioconductor para estudios de expresión génica diferencial,” Universitat Oberta de Catalunya (UOC), 2019.