-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.Rhistory
More file actions
168 lines (168 loc) · 8.31 KB
/
Copy path.Rhistory
File metadata and controls
168 lines (168 loc) · 8.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
# Función para verificar e instalar paquetes
Sys.getenv("R_LIBS_USER")
Sys.getenv("R_LIBS")
if (!require("BiocManager", quietly = TRUE)) {
install.packages("BiocManager")
}
BiocManager::install()
verificar_e_instalar <- function(paquete) {
if (!require(paquete, quietly = TRUE)) {
BiocManager::install(paquete, force = TRUE)
}
}
# Instalar el paquete matrixStats si no lo tienes
if (!require("matrixStats")) install.packages("matrixStats")
if(!require(ggrepel)){install.packages("ggrepel")}
# Verificar e instalar limma
verificar_e_instalar("limma")
# Verificar e instalar edgeR (solo para graficas de volcan)
verificar_e_instalar("edgeR")
# Cargar las bibliotecas (ya deberían estar instaladas con el paso anterior)
library(limma)
library(edgeR)
library(dplyr)
library(matrixStats)
library(ggplot2)
library(ggrepel)
#### Cargo y proceso metadatos clinicos ####
cat("Cargando dataset de metadatos...", "\n")
# Asegur que el dataset tenga los IDs de muestra en la primera columna y los grupos en la segunda.
clinical_data <- read.table("datasets/luad_tcga/data_clinical_patient.txt", header = TRUE, row.names = 1, sep = "\t", check.names = FALSE)
sample_data <- read.table("datasets/luad_tcga/data_clinical_sample.txt", header = TRUE, sep = "\t", check.names = FALSE)
##### Proceso clinical data #####
clinical_data <- clinical_data[, c("PATIENT_ID", "SEX")]
clinical_data$SEX <- toupper(as.character(clinical_data$SEX))
# unique(clinical_data$SEX) # chequeo que solo haya dos formas de expresar el sexo biologico
# Elimino duplicados
clinical_data <- clinical_data[!duplicated(clinical_data), ]
##### Proceso sample data #####
sample_data <- sample_data[, c("SAMPLE_ID", "PATIENT_ID")]
##### Mergeo clinical & sample data #####
# Realizar el merge entre sample_data y clinical_data usando 'PATIENT_ID'
metadatos <- merge(sample_data, clinical_data, by = "PATIENT_ID")
# Seleccionar solo las columnas 'SAMPLE_ID' y 'SEX'
metadatos <- metadatos[, c("SAMPLE_ID", "SEX")]
# Reemplazar los guiones medios por puntos en la columna 'SAMPLE_ID' (Porque asi se llamaran en el dataset de RNASeq por defecto segun R)
metadatos$SAMPLE_ID <- gsub("-", ".", metadatos$SAMPLE_ID)
# Número de muestras (filas) antes de eliminar duplicados
n_before <- nrow(metadatos)
metadatos <- metadatos[!duplicated(metadatos), ]
# Número de muestras después de eliminar duplicados
n_after <- nrow(metadatos)
cat("Dataset de metadatos: Resumen", "\n")
cat("Dataset de metadatos: Filas (muestras) eliminadas por duplicacion:", n_before - n_after, "\n")
cat("Dataset de metadatos: Numero de muestras:", n_after, "\n")
metadatos %>%
dplyr::count(SEX) %>%
dplyr::mutate(Proporcion = 100 * n / sum(n))
# SAMPLE_ID tiene los muestras
# SEX tiene los grupos (FEMALE Y MALE)
#### Cargo y proceso datos de RNASeq (TPM data) ####
cat("Cargando dataset de RNASeq normalizados a TPM...", "\n")
rnaseq_tpm_data <- read.table("datasets/luad_tcga/data_mrna_seq_v2_rsem.txt", header = TRUE, sep = "\t")
# Identificar y eliminar los Hugo_Symbols duplicados
duplicados <- rnaseq_tpm_data %>%
filter(duplicated(Hugo_Symbol)) %>%
pull(Hugo_Symbol)
num_duplicados <- length(duplicados)
rnaseq_tpm_data <- rnaseq_tpm_data %>%
distinct(Hugo_Symbol, .keep_all = TRUE) %>% # Elimina duplicados por 'Hugo_Symbol'
select(-Entrez_Gene_Id) # Elimina la columna 'Entrez_Gene_Id'
cat("Dataset de RNASeq: Número de genes (filas) eliminados:", num_duplicados, "\n")
cat("Dataset de RNASeq: Hugo_Symbols duplicados:", unique(duplicados), "\n")
# Obtener los valores de SAMPLE_ID del dataframe metadatos
# Obtengo muestras en comun entre los dataset de datos y metadatos
valid_columns <- intersect(colnames(rnaseq_tpm_data), metadatos$SAMPLE_ID)
# Filtrar las columnas de rnaseq_tpm_data que coincidan con los SAMPLE_ID
total_muestras_antes <- ncol(rnaseq_tpm_data) - 1 # Restamos 1 porque "Hugo_Symbol" no es una muestra
rnaseq_tpm_data <- rnaseq_tpm_data[, c("Hugo_Symbol", valid_columns)]
total_muestras_despues <- ncol(rnaseq_tpm_data) - 1
cat("Dataset de RNASeq: Número de muestras antes de la filtrar:", total_muestras_antes, "\n")
cat("Dataset de RNASeq:Número de muestras después de la filtrar:", total_muestras_despues, "\n")
cat("Dataset de RNASeq:Número de muestras eliminadas:", total_muestras_antes - total_muestras_despues, "\n")
cat("Dataset de RNASeq: Resumen Final", "\n")
cat("Dataset de RNASeq: Numero de genes:", nrow(rnaseq_tpm_data), "\n")
cat("Dataset de RNASeq: Numero de muestras:", ncol(rnaseq_tpm_data) - 1, "\n")
filas_con_na <- is.na(rnaseq_tpm_data[, 1])
# Eliminar las filas con NA
rnaseq_tpm_data <- rnaseq_tpm_data[!filas_con_na, ]
rownames(rnaseq_tpm_data) <- rnaseq_tpm_data[, 1]
rnaseq_tpm_data <- rnaseq_tpm_data[, -1] # Elimina la primera columna de genes (ahora es el índice)
# Elimino las muestras en metadatos que finalmente no estuvieron en el dataset de RNASeq
metadatos <- metadatos %>% dplyr::filter(SAMPLE_ID %in% valid_columns)
#### Análisis de expresión diferencial con limma ####
# Transformar los datos a escala logarítmica (Asi lo exige lima cuando usamos datos en TPM)
#
# Separar los símbolos de genes Hugo y los datos de expresión
log_data <- log2(rnaseq_tpm_data + 1)
sum(is.na(log_data))
#### Graficas para comparar distribucion antes y despues de aplicar log ####
# Cargar paquetes necesarios
library(ggplot2)
library(reshape2)
library(gridExtra)
# Cargar tus datos, asegurándote de que la primera columna sea Hugo_Symbol y las demás sean muestras
# Reestructurar los datos para ggplot2
tpm_melted <- melt(rnaseq_tpm_data, variable.name = "Sample", value.name = "Expression")
log_melted <- melt(log_data, variable.name = "Sample", value.name = "Expression") # Excluir Hugo_Symbol al derretir
# Histogramas
p1 <- ggplot(tpm_melted, aes(x = Expression)) +
geom_histogram(bins = 50, fill = "skyblue", color = "black") +
ggtitle("Distribución TPM") +
theme_minimal()
p2 <- ggplot(log_melted, aes(x = Expression)) +
geom_histogram(bins = 50, fill = "salmon", color = "black") +
ggtitle("Distribución log2(TPM + 1)") +
theme_minimal()
# Mostrar los histogramas lado a lado
grid.arrange(p1, p2, ncol = 2)
# Boxplots para comparar la dispersión entre muestras
p3 <- ggplot(tpm_melted, aes(x = Sample, y = Expression)) +
geom_boxplot(fill = "skyblue") +
ggtitle("Boxplot TPM") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
p4 <- ggplot(log_melted, aes(x = Sample, y = Expression)) +
geom_boxplot(fill = "salmon") +
ggtitle("Boxplot log2(TPM + 1)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
# Mostrar los boxplots lado a lado
grid.arrange(p3, p4, ncol = 2)
# Boxplots para comparar la dispersión entre muestras
p3 <- ggplot(tpm_melted, aes(x = Sample, y = Expression)) +
geom_boxplot(fill = "skyblue") +
ggtitle("Boxplot TPM") +
theme_minimal())
# Boxplots para comparar la dispersión entre muestras
p3 <- ggplot(tpm_melted, aes(x = Sample, y = Expression)) +
geom_boxplot(fill = "skyblue") +
ggtitle("Boxplot TPM") +
theme_minimal()
p4 <- ggplot(log_melted, aes(x = Sample, y = Expression)) +
geom_boxplot(fill = "salmon") +
ggtitle("Boxplot log2(TPM + 1)") +
theme_minimal()
# Mostrar los boxplots lado a lado
grid.arrange(p3, p4, ncol = 2)
source("TMP_case_control.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("data_simulator/TMP_case_control.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
View(eval_tbl)
View(all_results)
View(info_deg)
View(tpm)
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
View(eval_tbl)
View(all_results)
View(info_deg)
View(info_deg)
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")
source("~/Documentos/differential_expression_analysis/data_simulator/dea_con_dataset_simulado.r")