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
Melting_curve <- vroom(file = "https://raw.githubusercontent.com/ManuelLaraMVZ/resultados_PCR_practica/refs/heads/main/Disoci_ejemplo1.csv")
## Rows: 55 Columns: 6
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (6): Temperature, 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.
Melting_curve
## # A tibble: 55 × 6
## Temperature A1 B1 C1 D1 E1
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65 1.96 1.98 2.11 2.11 0.0869
## 2 65.5 1.94 1.99 2.06 2.08 0.0834
## 3 66 1.89 1.93 2.03 2.07 0.0932
## 4 66.5 1.86 1.89 1.98 2.02 0.0676
## 5 67 1.82 1.89 1.94 1.98 0.0738
## 6 67.5 1.77 1.83 1.90 1.93 0.0766
## 7 68 1.74 1.78 1.86 1.87 0.0686
## 8 68.5 1.70 1.76 1.79 1.84 0.0689
## 9 69 1.65 1.71 1.79 1.80 0.0665
## 10 69.5 1.60 1.64 1.75 1.76 0.0744
## # … with 45 more rows
Melting_curve2 <- Melting_curve %>%
mutate(Temperatura = Temperature, MLL = A1, JRL = B1, PPOF = C1, FRAC = D1, AALE = E1) %>%
select(-Temperature: -E1)
Melting_curve2
## # A tibble: 55 × 6
## Temperatura MLL JRL PPOF FRAC AALE
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65 1.96 1.98 2.11 2.11 0.0869
## 2 65.5 1.94 1.99 2.06 2.08 0.0834
## 3 66 1.89 1.93 2.03 2.07 0.0932
## 4 66.5 1.86 1.89 1.98 2.02 0.0676
## 5 67 1.82 1.89 1.94 1.98 0.0738
## 6 67.5 1.77 1.83 1.90 1.93 0.0766
## 7 68 1.74 1.78 1.86 1.87 0.0686
## 8 68.5 1.70 1.76 1.79 1.84 0.0689
## 9 69 1.65 1.71 1.79 1.80 0.0665
## 10 69.5 1.60 1.64 1.75 1.76 0.0744
## # … with 45 more rows
head(Melting_curve2)
## # A tibble: 6 × 6
## Temperatura MLL JRL PPOF FRAC AALE
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65 1.96 1.98 2.11 2.11 0.0869
## 2 65.5 1.94 1.99 2.06 2.08 0.0834
## 3 66 1.89 1.93 2.03 2.07 0.0932
## 4 66.5 1.86 1.89 1.98 2.02 0.0676
## 5 67 1.82 1.89 1.94 1.98 0.0738
## 6 67.5 1.77 1.83 1.90 1.93 0.0766
Melting_curve3 <- Melting_curve2 %>%
#mutate(Cambiar nombres) %>%
pivot_longer(cols = -Temperatura,
names_to = "Muestra",
values_to = "FLuorescencia")
head(Melting_curve3)
## # A tibble: 6 × 3
## Temperatura Muestra FLuorescencia
## <dbl> <chr> <dbl>
## 1 65 MLL 1.96
## 2 65 JRL 1.98
## 3 65 PPOF 2.11
## 4 65 FRAC 2.11
## 5 65 AALE 0.0869
## 6 65.5 MLL 1.94
Grafica_melting <- ggplot(mapping = aes(x = Melting_curve3$Temperatura,
y = Melting_curve3$FLuorescencia,
color = Melting_curve3$Muestra))+
geom_line(size = 1)+
labs(title = "Curvas de Amplificación qPCR",
x = "Ciclos",
y = "Fluorescencia",
color = "Muestra") +
theme_classic(base_size = 14) +
scale_x_continuous(breaks = seq(min(Melting_curve3$Temperatura), max(Melting_curve3$Temperatura), by = 1.5)) + # Eje X cada 1°C
scale_y_continuous(labels = scales::number_format(accuracy = 0.01),) + # Redondeo de 3 dígitos 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 en negrita
panel.border = element_blank(), # Eliminar la caja de la gráfica
axis.text.x = element_text(angle = 45, hjust = 1) ) # Rotar los valores del eje X si es necesario
## 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.
## 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.
Grafica_melting
Derivación
Melting_curve
## # A tibble: 55 × 6
## Temperature A1 B1 C1 D1 E1
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65 1.96 1.98 2.11 2.11 0.0869
## 2 65.5 1.94 1.99 2.06 2.08 0.0834
## 3 66 1.89 1.93 2.03 2.07 0.0932
## 4 66.5 1.86 1.89 1.98 2.02 0.0676
## 5 67 1.82 1.89 1.94 1.98 0.0738
## 6 67.5 1.77 1.83 1.90 1.93 0.0766
## 7 68 1.74 1.78 1.86 1.87 0.0686
## 8 68.5 1.70 1.76 1.79 1.84 0.0689
## 9 69 1.65 1.71 1.79 1.80 0.0665
## 10 69.5 1.60 1.64 1.75 1.76 0.0744
## # … with 45 more rows
Derivadas <- Melting_curve %>%
mutate(across(A1:E1, ~ -c(NA, diff(.x) / diff(Melting_curve$Temperature)), .names = "d_{.col}")) %>%
select(-A1:-E1)%>%
slice(-1) # Elimina la primera fila
# Mostrar resultados
print(Derivadas)
## # A tibble: 54 × 6
## Temperature d_A1 d_B1 d_C1 d_D1 d_E1
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 65.5 0.0365 -0.0147 0.0940 0.0711 0.00703
## 2 66 0.102 0.108 0.0614 0.0146 -0.0197
## 3 66.5 0.0695 0.0883 0.112 0.108 0.0512
## 4 67 0.0652 0.00898 0.0646 0.0772 -0.0123
## 5 67.5 0.109 0.114 0.0903 0.0923 -0.00567
## 6 68 0.0666 0.0994 0.0707 0.122 0.0162
## 7 68.5 0.0774 0.0335 0.139 0.0558 -0.000754
## 8 69 0.0860 0.0979 -0.00165 0.0850 0.00488
## 9 69.5 0.111 0.146 0.0908 0.0844 -0.0159
## 10 70 0.0582 0.0279 0.130 0.0864 0.00967
## # … with 44 more rows
Derivadas2 <- Derivadas %>%
pivot_longer(cols = -Temperature,
names_to = "Muestras",
values_to = "dF/dT")
head(Derivadas2)
## # A tibble: 6 × 3
## Temperature Muestras `dF/dT`
## <dbl> <chr> <dbl>
## 1 65.5 d_A1 0.0365
## 2 65.5 d_B1 -0.0147
## 3 65.5 d_C1 0.0940
## 4 65.5 d_D1 0.0711
## 5 65.5 d_E1 0.00703
## 6 66 d_A1 0.102
Grafica_derivada<- ggplot(mapping = aes(x = Derivadas2$Temperature,
y = Derivadas2$`dF/dT`,
color = Derivadas2$Muestras))+
geom_line(size = 1)+
labs(title = "Curvas de Amplificación qPCR",
x = "Temperatura (°C)",
y = expression(Delta * "F" / Delta * "T"), # Usamos expression para "Delta F / Delta T"
color = "Muestra") +
theme_classic(base_size = 14)+ # Estilo limpio y legible
scale_color_viridis_d() + # Mejor paleta para varias muestras
scale_x_continuous(breaks = seq(min(Derivadas2$Temperature), max(Derivadas2$Temperature), by = 1.5)) + # Eje X cada 1°C
scale_y_continuous(labels = scales::number_format(accuracy = 0.1),
breaks = seq(min(Derivadas2$`dF/dT`), max(Derivadas2$`dF/dT`+1), by = 0.1))+ # 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 en negrita
panel.border = element_blank(), # Eliminar la caja de la gráfica
axis.text.x = element_text(angle = 45, hjust = 1) ) # Rotar los valores del eje X si es necesario
Grafica_derivada
Gráfica equipo
Peak <- max(Derivadas$d_A1)
Peak
## [1] 0.4913234
Tm <- Derivadas %>%
filter(d_A1 == Peak) %>%
select(1, d_A1)
Tm
## # A tibble: 1 × 2
## Temperature d_A1
## <dbl> <dbl>
## 1 82 0.491
Grafica_int_equipo <- ggplot(Derivadas, aes(x = Temperature, y = d_A1)) +
geom_line(size = 1, color = "#0b2778") + # Línea original
#geom_smooth(method = "loess", span = 0.1, color = "red", se = FALSE) + # Línea suavizada
geom_vline(xintercept = Tm$Temperature, color = "#747986", linetype = "dashed", size = 1) + # Línea punteada
labs(title = "Curvas de Amplificación qPCR",
x = "Temperatura (°C)",
y = expression(-Delta * "F" / Delta * "T")) +
scale_x_continuous(breaks = seq(min(Derivadas$Temperature), max(Derivadas$Temperature), by = 2)) + # Eje X cada 1°C
scale_y_continuous(labels = scales::number_format(accuracy = 0.01),) + # Redondeo de 3 dígitos 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 en negrita
panel.border = element_blank(), # Eliminar la caja de la gráfica
axis.text.x = element_text(angle = 45, hjust = 1) )+ # Rotar los valores del eje X si es necesario
geom_label_repel(data = Tm,
aes(x = Temperature, y = d_A1, label = paste("Tm = ", round(Temperature, 2), "°C")),
nudge_x = 3, # Mueve el texto a la izquierda
max.overlaps = 100,
fill = "lightblue", # Color del cuadro de texto
color = "black") # Color del texto
# Imprimir la gráfica
print(Grafica_int_equipo)