Los programas que se requieren para todo el ejercicio se muestran en el siquiente chunk:
if(!require(pacman)) install.packages("pacman", dependencies=TRUE)
## Loading required package: pacman
## Warning: package 'pacman' was built under R version 4.2.3
llamamos a la librería de pacman
library("pacman")
llamamos a los paquetes con p_load
p_load("vroom",
"ggplot2",
"ggrepel",
"dplyr",
"tidyr")
De las bases de datos que se encuentran en el repositorio general, seleccionar el que se necesita y luego llamamos al archivo Raw
Amplificacion <- vroom(file = "https://raw.githubusercontent.com/ManuelLaraMVZ/resultados_PCR_practica/refs/heads/main/Amplificacion_ejemplo.csv")
## Rows: 35 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (6): Cycle, A1, B1, C1, D1, E1
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
Amplificacion
## # A tibble: 35 × 6
## Cycle A1 B1 C1 D1 E1
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 0.000143 0.0112 -0.0174 0.00306 0.00144
## 2 2 0.00193 0.00429 -0.0116 -0.00116 0.00704
## 3 3 -0.000874 0.00798 -0.00595 0.00443 0.00264
## 4 4 -0.0000775 0.000436 -0.00210 0.00356 0.00336
## 5 5 -0.000844 -0.000278 -0.00152 -0.00433 0.00815
## 6 6 0.00140 0.00158 0.00445 0.00259 0.00399
## 7 7 0.00266 -0.00482 0.00315 0.000907 0.00887
## 8 8 0.00290 -0.00543 0.00493 0.00293 0.000434
## 9 9 0.00123 0.00057 0.00715 0.000636 -0.00599
## 10 10 0.00100 -0.00216 0.00369 0.00314 -0.00409
## # … with 25 more rows
Para facilitar la identificación de los datos, cambiaremos el nombre de las columnas y eliminaremos las originales
Amplificacion2 <- Amplificacion %>%
mutate(Ciclos = Cycle, MLL = A1, JRL = B1, PPOF = C1, FRAC = D1, AALE = E1) %>%
select(-Cycle: -E1)
Amplificacion2
## # A tibble: 35 × 6
## Ciclos MLL JRL PPOF FRAC AALE
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 0.000143 0.0112 -0.0174 0.00306 0.00144
## 2 2 0.00193 0.00429 -0.0116 -0.00116 0.00704
## 3 3 -0.000874 0.00798 -0.00595 0.00443 0.00264
## 4 4 -0.0000775 0.000436 -0.00210 0.00356 0.00336
## 5 5 -0.000844 -0.000278 -0.00152 -0.00433 0.00815
## 6 6 0.00140 0.00158 0.00445 0.00259 0.00399
## 7 7 0.00266 -0.00482 0.00315 0.000907 0.00887
## 8 8 0.00290 -0.00543 0.00493 0.00293 0.000434
## 9 9 0.00123 0.00057 0.00715 0.000636 -0.00599
## 10 10 0.00100 -0.00216 0.00369 0.00314 -0.00409
## # … with 25 more rows
Para la gráfica de multiples columnas, necesitamos cambiar el formato de presentación, el cual sigue el siguiente concepto: 1. Seleccionar los ciclos que se usarán. 2. Agrupar todos los nombres de las columnas en una sola, agrupados por el ciclo que se evalúa 3. Una columna extra, contendrán los valores de fluorescencia de los datos agrupados por nombre de columna y el ciclo
Amplificacion3 <- Amplificacion2 %>%
pivot_longer(cols = -Ciclos, #Determina los valores que se van a tomar para agrupar, excepto la primer columna
names_to = "Muestra", #Los valores de las distintas columnas los agrupa en una nueva que se llamará Muestra
values_to = "Fluorescencia")# los datos correspondientes a las columnas los asigna a una columna llamada fluorescencia
Amplificacion3
## # A tibble: 175 × 3
## Ciclos Muestra Fluorescencia
## <dbl> <chr> <dbl>
## 1 1 MLL 0.000143
## 2 1 JRL 0.0112
## 3 1 PPOF -0.0174
## 4 1 FRAC 0.00306
## 5 1 AALE 0.00144
## 6 2 MLL 0.00193
## 7 2 JRL 0.00429
## 8 2 PPOF -0.0116
## 9 2 FRAC -0.00116
## 10 2 AALE 0.00704
## # … with 165 more rows
Graficamos los datos de la nueva base de datos
Grafica_amplificacion <- ggplot(Amplificacion3,, #Se van a tomar los valores de esta base de datos)
mapping = aes(x = Ciclos,
y = Fluorescencia,
color = Muestra))+
geom_line(size = 1)+
labs(title = "Curvas de Amplificación qPCR",
x = "Ciclos",
y = "Fluorescencia",
color = "Muestra") +
theme_classic(base_size = 14) # Estilo limpio y legible
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Grafica_amplificacion
Mejoramos gráfica y colocamos umbral de ciclos, primer hay que quitar los primeros ciclos que no amplificaron de 1 a 17
Grafica_amplificacion2 <- ggplot(Amplificacion3 %>% filter(Ciclos >= 17),, #Se van a tomar los valores de esta base de datos)
mapping = aes(x = Ciclos,
y = Fluorescencia,
color = Muestra))+
geom_line(size = 1)+
labs(title = "Curvas de Amplificación qPCR",
x = "Ciclos",
y = "Fluorescencia",
color = "Muestra") +
theme_classic(base_size = 14) # Estilo limpio y legible
Grafica_amplificacion
Determinamos el Umbral de ciclos
Umbral_ciclos <- 0.08
Mejoramos la visibilidad de la gráfica
Grafica_amplificacion3 <- Grafica_amplificacion2 +
geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "black", size = 1) + # Línea de corte
labs(title = "Curvas de Amplificación qPCR",
x = "Ciclos",
y = "Fluorescencia (u.a.)") +
scale_x_continuous(breaks = seq(min(Amplificacion3$Ciclos), max(Amplificacion3$Ciclos), by = 2)) + # Eje X cada 2 ciclos
scale_y_continuous(
labels = scales::number_format(accuracy = 0.05),
breaks = seq(floor(min(Amplificacion3$Fluorescencia)), ceiling(max(Amplificacion3$Fluorescencia)), by = 0.05) # Eje Y de 0.05 en 0.05
) +
theme_classic(base_size = 14) +
theme(
axis.line = element_line(color = "black", size = 1.5), # Líneas de los ejes en negrita
axis.text = element_text(size = 12), # Tamaño de texto para los ejes
axis.title = element_text(size = 14), # Tamaño de los títulos de los ejes
axis.ticks = element_line(color = "black", size = 1.5) # Ticks de los ejes
)
## Warning: The `size` argument of `element_line()` is deprecated as of ggplot2 3.4.0.
## ℹ Please use the `linewidth` argument instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Imprimir la gráfica
print(Grafica_amplificacion3)
Graficamos el resultado del equipo
Graf_equipo_ampli <- ggplot(Amplificacion2 %>% filter(Ciclos >= 17),
mapping = aes(x = Ciclos, y = AALE)) +
geom_line(size = 1, color = "blue") +
geom_hline(yintercept = Umbral_ciclos , linetype = "dashed", color = "black", size = 1) + # Línea de corte
labs(title = "Curvas de Amplificación qPCR",
x = "Ciclos",
y = "Fluorescencia (u.a.)",
color = "Muestra") +
scale_x_continuous(breaks = seq(min(Amplificacion2$Ciclos), max(Amplificacion2$Ciclos), by = 2)) + # Eje X cada 2 ciclos desde 10 hasta el máximo
scale_y_continuous(labels = scales::number_format(accuracy = 0.05),
breaks = seq(min(Amplificacion2$AALE), max(Amplificacion2$AALE), by = 0.05)) + # Redondeo de 1 dígito en Y
theme_classic(base_size = 14) +
theme(
axis.line = element_line(color = "black", size = 1.5), # Líneas de los ejes en negrita
axis.text = element_text(size = 12), # Tamaño de texto para los ejes
axis.title = element_text(size = 14), # Tamaño de los títulos de los ejes
axis.ticks = element_line(color = "black", size = 1.5)) # Ticks de los ejes
# Imprimir la gráfica
Graf_equipo_ampli