1. Instalación de paquetes

Pacman llama a otros paquetes y si no estƔn los instala

*Chunck: Ctlr+alt+I

if (!require(pacman)) install.packages("pacman")
## Loading required package: pacman

Llamar pacman

library("pacman")

2. Cargar los demƔs paquetes necesarios de golpe

Llamar las demƔs bases de datos

p_load("vroom", 
       "dplyr", 
       "tidyr", 
       "ggplot2")

3.Llamar a base de datos para la curva de amplificación

* flecha con Alt + -

Curvas_amplificación <- vroom(file = "https://raw.githubusercontent.com/ManuelLaraMVZ/resultados_PCR_practica/refs/heads/main/Ejemplo_amplificacion_RT-PCR.csv") 
## `curl` package not installed, falling back to using `url()`
## 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.
Curvas_amplificación
## # A tibble: 35 Ɨ 6
##    Cycle         A1         B1         C1        D1         E1
##    <dbl>      <dbl>      <dbl>      <dbl>     <dbl>      <dbl>
##  1     1  0.0000213 -0.00531    0.0000279  0.000519  0.000468 
##  2     2 -0.0000305 -0.00286    0.00179    0.000301  0.000462 
##  3     3 -0.0000823 -0.00136   -0.000335   0.000842  0.0000266
##  4     4 -0.0000536 -0.00101    0.00166    0.000522 -0.000943 
##  5     5 -0.0000565 -0.000787   0.000199   0.000586  0.0000877
##  6     6  0.000111  -0.000233   0.00231    0.000451  0.00076  
##  7     7  0.000096   0.0000674 -0.000511  -0.00112  -0.000618 
##  8     8  0.0000698  0.000602  -0.000595  -0.000944  0.00108  
##  9     9  0.000202   0.00143    0.000166   0.000342 -0.000105 
## 10    10 -0.00001    0.00101   -0.00136   -0.000254  0.00102  
## # ℹ 25 more rows

4. Limpieza y filtrado de datos

Modificar base de datos

*Signo porcentajes con Cltr+Shift+m

Curvas_amplif2 <- Curvas_amplificación %>% mutate(Ciclos = Cycle, H2O = A1, JRWF = B1, PPOF = C1, MLL = D1, DDR = E1 ) %>%  select(-Cycle: -E1) %>% 
  filter(Ciclos >= 17)

#Para quitar columnas de la grƔfica es desde %>% y select con el menos y lo de filter para quitar ciclos donde ya no se amplifica 

#H2O porque es control de agua y los demƔs son los "nombres" de los equipos

Curvas_amplif2
## # A tibble: 19 Ɨ 6
##    Ciclos        H2O       JRWF      PPOF       MLL       DDR
##     <dbl>      <dbl>      <dbl>     <dbl>     <dbl>     <dbl>
##  1     17  0.0000132  0.00126   -0.00121   0.000599  0.000786
##  2     18  0.0000394  0.000431  -0.000969 -0.00155  -0.00119 
##  3     19 -0.000106   0.000227  -0.00145  -0.000874 -0.00113 
##  4     20 -0.000104   0.000133  -0.00197  -0.000632 -0.00134 
##  5     21 -0.000119   0.00104    0.000464  0.000245 -0.000417
##  6     22 -0.0000153  0.00028    0.0032   -0.00081   0.00158 
##  7     23  0.0000704 -0.000086   0.00494   0.00162   0.000497
##  8     24  0.00012   -0.000238   0.0144    0.00139   0.00121 
##  9     25 -0.0000899 -0.000484   0.0263    0.00634   0.00425 
## 10     26  0.0000114 -0.00133    0.0491    0.0101    0.00894 
## 11     27 -0.000104  -0.000824   0.0763    0.0202    0.0202  
## 12     28 -0.000101  -0.000922   0.105     0.0365    0.0353  
## 13     29 -0.000222  -0.000938   0.134     0.0624    0.0594  
## 14     30 -0.0000675 -0.000187   0.162     0.0895    0.0823  
## 15     31 -0.000089  -0.0000371  0.191     0.114     0.107   
## 16     32 -0.000188   0.0018     0.220     0.141     0.128   
## 17     33 -0.0000273  0.00345    0.243     0.170     0.152   
## 18     34  0.000358   0.00615    0.268     0.197     0.173   
## 19     35  0.000345   0.00913    0.293     0.223     0.192

5.Reordenamiento de datos

5.1 Seleccionar los datos a reordenar (variables dependientes)

5.2 Agrupar las variables por nombre

5.3 Agrupar las variables por ciclo

Curvas_amplif3 <- Curvas_amplif2 %>% 
  pivot_longer(cols = -Ciclos, names_to = "Muestras", 
               values_to =  "Fluorescencias")

Curvas_amplif3
## # A tibble: 95 Ɨ 3
##    Ciclos Muestras Fluorescencias
##     <dbl> <chr>             <dbl>
##  1     17 H2O           0.0000132
##  2     17 JRWF          0.00126  
##  3     17 PPOF         -0.00121  
##  4     17 MLL           0.000599 
##  5     17 DDR           0.000786 
##  6     18 H2O           0.0000394
##  7     18 JRWF          0.000431 
##  8     18 PPOF         -0.000969 
##  9     18 MLL          -0.00155  
## 10     18 DDR          -0.00119  
## # ℹ 85 more rows
#Se toman todas columnas menos ciclos, y la nueva columna agregada es muestras, que se guardan todos los valores

6. Graficar las muestras seleccionadas y filtradas

GrƔfica

GrƔfica_amplif <- ggplot(data = Curvas_amplif3, mapping = aes(x = Ciclos,
                                                              y = Fluorescencias, 
                                                              color = Muestras)) +
  
  geom_line(linewidth = 1.5) 

GrƔfica_amplif 

7. Modificar la estƩtica de la grƔfica

Mejorar la grƔfica

Umbral_ciclos <- 0.008


GrƔfica_amplif2 <- GrƔfica_amplif +
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#63B5F8") + 
  
  theme_classic() + # Para que se quite el fondo gris 
  labs(
    title = "Curvas de amplificación RT-qPCR",
    subtitle = "Todas las muestras de los tejidos",
    caption = "DiseƱado:Zyanya GarduƱo",
    x = "Ciclos",
    y = "Fluorescencia (u.a.)") +
 
  
  # Para mejorar los bordes, poner en negritas textos y leyendas es lo siguiente 
  theme(axis.line = element_line(linewidth = 1.2, color = "black"),
    axis.title = element_text(face = "bold"),
    axis.text = element_text(face = "bold"),
    legend.title = element_text(face = "bold"),
    legend.text = element_text(face = "bold")
  ) +
  
scale_x_continuous(breaks = seq(min(Curvas_amplif3$Ciclos),
                                max(Curvas_amplif3$Ciclos), by = 2)) + # 2 ciclos
  scale_y_continuous(breaks = seq(min(Curvas_amplif3$Fluorescencias), 
                                  max(Curvas_amplif3$Fluorescencias), by = 0.02),
                     labels = scales::number_format(accuracy = 0.02))
  
# sĆ­mbolo $ para indicar el mĆ­nimo 
  GrƔfica_amplif2

GrƔfica de los datos del equipo

GrƔfica_amplif_equipo <- ggplot(Curvas_amplif2, 
                                aes(x = Ciclos)) +
  
  # Primera lĆ­nea (MLL)
  geom_line(aes(y = MLL, color = "Muestras"), linewidth = 1.5) +
  
  # Segunda lĆ­nea (H2O)
  geom_line(aes(y = H2O, color = "Control H2O"), linewidth = 1.5) +
  
  # LĆ­nea horizontal (Umbral)
  geom_hline(yintercept = Umbral_ciclos, 
             linetype = "dashed", 
             color = "#63B5F8") +
  
  # Tema y etiquetas
  theme_classic() +
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Todas las muestras de los tejidos",
       caption = "DiseƱado: Zyanya GarduƱo",
       x = "Ciclos",
       y = "Fluorescencia (u.a.)",
       color = "Tipo de curva") +   # tĆ­tulo de la leyenda
  
  # Personalización de ejes
  scale_x_continuous(breaks = seq(min(Curvas_amplif2$Ciclos),
                                  max(Curvas_amplif2$Ciclos), by = 2)) +
  scale_y_continuous(breaks = seq(min(Curvas_amplif2$MLL), 
                                  max(Curvas_amplif2$MLL), 
                                  by = 0.02),
                     labels = scales::number_format(accuracy = 0.02)) +
  
  # Definir colores manualmente
  scale_color_manual(values = c("Muestras" = "#09C88F", 
                                "Control H2O" = "#63B5F8")) +
  
  # Ajustes de estilo
  theme(axis.line = element_line(linewidth = 1.2, color = "black"),
        axis.title = element_text(face = "bold"),
        axis.text = element_text(face = "bold"),
        legend.title = element_text(face = "bold"),
        legend.text = element_text(face = "bold"))

GrƔfica_amplif_equipo

#MLL fue el ejemplo para la muestra del profe