Instalación de paquetes

if(!require(pacman))
  install.packages("pacman") # para que no se esté instalando todo el tiempo
## Loading required package: pacman

Llamar a pacman

library("pacman")

Llamar paquetería necesaria

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

Llamar a base de datos

Curvas_amplif <- read.csv("https://raw.githubusercontent.com/ManuelLaraMVZ/resultados_PCR_practica/refs/heads/main/Ejemplo_amplificacion_RT-PCR.csv")

Curvas_amplif
##    Cycle        A1        B1         C1        D1         E1
## 1      1  2.13e-05 -5.31e-03  0.0000279  0.000519  0.0004680
## 2      2 -3.05e-05 -2.86e-03  0.0017900  0.000301  0.0004620
## 3      3 -8.23e-05 -1.36e-03 -0.0003350  0.000842  0.0000266
## 4      4 -5.36e-05 -1.01e-03  0.0016600  0.000522 -0.0009430
## 5      5 -5.65e-05 -7.87e-04  0.0001990  0.000586  0.0000877
## 6      6  1.11e-04 -2.33e-04  0.0023100  0.000451  0.0007600
## 7      7  9.60e-05  6.74e-05 -0.0005110 -0.001120 -0.0006180
## 8      8  6.98e-05  6.02e-04 -0.0005950 -0.000944  0.0010800
## 9      9  2.02e-04  1.43e-03  0.0001660  0.000342 -0.0001050
## 10    10 -1.00e-05  1.01e-03 -0.0013600 -0.000254  0.0010200
## 11    11 -4.83e-05  1.26e-03  0.0000840 -0.000135  0.0001370
## 12    12  4.73e-05  8.42e-04 -0.0013000 -0.001040  0.0006220
## 13    13  1.69e-04  9.74e-04 -0.0003200 -0.000318 -0.0011100
## 14    14 -1.59e-05  4.56e-04 -0.0002670  0.001220 -0.0008180
## 15    15 -1.11e-04  4.53e-04 -0.0026100 -0.001090 -0.0004680
## 16    16 -1.07e-05  8.28e-04 -0.0019100  0.000642 -0.0001290
## 17    17  1.32e-05  1.26e-03 -0.0012100  0.000599  0.0007860
## 18    18  3.94e-05  4.31e-04 -0.0009690 -0.001550 -0.0011900
## 19    19 -1.06e-04  2.27e-04 -0.0014500 -0.000874 -0.0011300
## 20    20 -1.04e-04  1.33e-04 -0.0019700 -0.000632 -0.0013400
## 21    21 -1.19e-04  1.04e-03  0.0004640  0.000245 -0.0004170
## 22    22 -1.53e-05  2.80e-04  0.0032000 -0.000810  0.0015800
## 23    23  7.04e-05 -8.60e-05  0.0049400  0.001620  0.0004970
## 24    24  1.20e-04 -2.38e-04  0.0144000  0.001390  0.0012100
## 25    25 -8.99e-05 -4.84e-04  0.0263000  0.006340  0.0042500
## 26    26  1.14e-05 -1.33e-03  0.0491000  0.010100  0.0089400
## 27    27 -1.04e-04 -8.24e-04  0.0763000  0.020200  0.0202000
## 28    28 -1.01e-04 -9.22e-04  0.1053000  0.036500  0.0353000
## 29    29 -2.22e-04 -9.38e-04  0.1336000  0.062400  0.0594000
## 30    30 -6.75e-05 -1.87e-04  0.1621000  0.089500  0.0823000
## 31    31 -8.90e-05 -3.71e-05  0.1908000  0.114400  0.1068000
## 32    32 -1.88e-04  1.80e-03  0.2197000  0.141400  0.1281000
## 33    33 -2.73e-05  3.45e-03  0.2434000  0.170300  0.1515000
## 34    34  3.58e-04  6.15e-03  0.2678000  0.196600  0.1726000
## 35    35  3.45e-04  9.13e-03  0.2927000  0.223100  0.1923000

Modificar nombres de columnas

Curvas_amplif2 <- Curvas_amplif %>%  # crtl + shift + M
  mutate(Ciclo = Cycle,
         H2O = A1,
         JRWF = B1,
         PPOF = C1,
         MLL = D1,
         DDR = E1) %>% 
  select(-Cycle:-E1) # para que solamente se seleccionen las columnas nuevas (todo menos las anteriores a ellas)

Curvas_amplif2
##    Ciclo       H2O      JRWF       PPOF       MLL        DDR
## 1      1  2.13e-05 -5.31e-03  0.0000279  0.000519  0.0004680
## 2      2 -3.05e-05 -2.86e-03  0.0017900  0.000301  0.0004620
## 3      3 -8.23e-05 -1.36e-03 -0.0003350  0.000842  0.0000266
## 4      4 -5.36e-05 -1.01e-03  0.0016600  0.000522 -0.0009430
## 5      5 -5.65e-05 -7.87e-04  0.0001990  0.000586  0.0000877
## 6      6  1.11e-04 -2.33e-04  0.0023100  0.000451  0.0007600
## 7      7  9.60e-05  6.74e-05 -0.0005110 -0.001120 -0.0006180
## 8      8  6.98e-05  6.02e-04 -0.0005950 -0.000944  0.0010800
## 9      9  2.02e-04  1.43e-03  0.0001660  0.000342 -0.0001050
## 10    10 -1.00e-05  1.01e-03 -0.0013600 -0.000254  0.0010200
## 11    11 -4.83e-05  1.26e-03  0.0000840 -0.000135  0.0001370
## 12    12  4.73e-05  8.42e-04 -0.0013000 -0.001040  0.0006220
## 13    13  1.69e-04  9.74e-04 -0.0003200 -0.000318 -0.0011100
## 14    14 -1.59e-05  4.56e-04 -0.0002670  0.001220 -0.0008180
## 15    15 -1.11e-04  4.53e-04 -0.0026100 -0.001090 -0.0004680
## 16    16 -1.07e-05  8.28e-04 -0.0019100  0.000642 -0.0001290
## 17    17  1.32e-05  1.26e-03 -0.0012100  0.000599  0.0007860
## 18    18  3.94e-05  4.31e-04 -0.0009690 -0.001550 -0.0011900
## 19    19 -1.06e-04  2.27e-04 -0.0014500 -0.000874 -0.0011300
## 20    20 -1.04e-04  1.33e-04 -0.0019700 -0.000632 -0.0013400
## 21    21 -1.19e-04  1.04e-03  0.0004640  0.000245 -0.0004170
## 22    22 -1.53e-05  2.80e-04  0.0032000 -0.000810  0.0015800
## 23    23  7.04e-05 -8.60e-05  0.0049400  0.001620  0.0004970
## 24    24  1.20e-04 -2.38e-04  0.0144000  0.001390  0.0012100
## 25    25 -8.99e-05 -4.84e-04  0.0263000  0.006340  0.0042500
## 26    26  1.14e-05 -1.33e-03  0.0491000  0.010100  0.0089400
## 27    27 -1.04e-04 -8.24e-04  0.0763000  0.020200  0.0202000
## 28    28 -1.01e-04 -9.22e-04  0.1053000  0.036500  0.0353000
## 29    29 -2.22e-04 -9.38e-04  0.1336000  0.062400  0.0594000
## 30    30 -6.75e-05 -1.87e-04  0.1621000  0.089500  0.0823000
## 31    31 -8.90e-05 -3.71e-05  0.1908000  0.114400  0.1068000
## 32    32 -1.88e-04  1.80e-03  0.2197000  0.141400  0.1281000
## 33    33 -2.73e-05  3.45e-03  0.2434000  0.170300  0.1515000
## 34    34  3.58e-04  6.15e-03  0.2678000  0.196600  0.1726000
## 35    35  3.45e-04  9.13e-03  0.2927000  0.223100  0.1923000

Reordenamiento de datos: 1. Seleccionar datos a reordenar (variables dependientes) 2. Agrupar variables por nombre 3. Agrupar variables por ciclo

# Para poner en una columna el nombre de dónde viene la muestra en la otra su fluorescencia correspondiente:
Curvas_amplif3 <- Curvas_amplif2 %>% 
  pivot_longer(cols = -Ciclo,             # para manejo de muchos datos (seleccionar todas menos la de ciclo)
               names_to = "Muestras",
               values_to = "Fluorescencia") 

Curvas_amplif3
## # A tibble: 175 × 3
##    Ciclo Muestras Fluorescencia
##    <int> <chr>            <dbl>
##  1     1 H2O          0.0000213
##  2     1 JRWF        -0.00531  
##  3     1 PPOF         0.0000279
##  4     1 MLL          0.000519 
##  5     1 DDR          0.000468 
##  6     2 H2O         -0.0000305
##  7     2 JRWF        -0.00286  
##  8     2 PPOF         0.00179  
##  9     2 MLL          0.000301 
## 10     2 DDR          0.000462 
## # ℹ 165 more rows

Graficar:

Grafica_amplif <- ggplot(data = Curvas_amplif3,
                         mapping = aes(x = Ciclo,
                                       y = Fluorescencia,
                                       color = Muestras)) +
  geom_line(linewidth = 1)

Grafica_amplif 

Mejorar la gráfica

Umbral_ciclos <- 0.008 # determinado por el equipo o manual

Grafica_amplif2 <- Grafica_amplif +
  geom_hline(yintercept = Umbral_ciclos,
             linetype = "dashed",
             color = "gray") +
  theme_classic() +
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Todas las muestras",
       caption = "Diseñó: Natalia Oropeza",
       x = "Ciclos",
       y = "FLuorescencia (u.a.)") +
  theme(axis.line = element_line(size = 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")) +
  # para cambiar cada cuanto hay un número en cada eje:
  scale_x_continuous(breaks = seq(min(Curvas_amplif3$Ciclo),
                                  max(Curvas_amplif3$Ciclo),
                                  by = 2)) + 
  scale_y_continuous(breaks = seq(min(Curvas_amplif3$Fluorescencia),
                           max(Curvas_amplif3$Fluorescencia),
                           by = 0.02),
                     labels = scales :: number_format(accuracy = 0.02))
## 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_amplif2

Grafica de los datos del equipo

Grafica_amplif_equipo <- ggplot() +
  # línea azul (MLL)
  geom_line(data = Curvas_amplif2,
            aes(x = Ciclo, y = MLL, color = "MLL"),
            linewidth = 1.2) +
  
  # línea guinda (H2O)
  geom_line(data = Curvas_amplif2,
            aes(x = Ciclo, y = H2O, color = "H2O"),
            linewidth = 1.2) +
  
  geom_hline(yintercept = Umbral_ciclos,
             linetype = "dashed",
             color = "gray") +
  theme_classic() +
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Todas las muestras",
       caption = "Diseñó: Nataia Oropeza",
       x = "Ciclos",
       y = "Fluorescencia (u.a.)",
       color = "Muestra") +   # título de la leyenda
  theme(axis.line = element_line(size = 1.2, color = "black"),
        axis.title = element_text(face = "bold", family = "Times New Roman"),
        axis.text = element_text(face = "bold", family = "Times New Roman"),
        legend.title = element_text(face = "bold", family = "Times New Roman"),
        legend.text = element_text(face = "bold", family = "Times New Roman"),
        plot.title = element_text(family = "Times New Roman"),
        plot.subtitle = element_text(family = "Times New Roman"),
        plot.caption = element_text(family = "Times New Roman")) +
  scale_x_continuous(breaks = seq(min(Curvas_amplif3$Ciclo),
                                  max(Curvas_amplif3$Ciclo),
                                  by = 2)) + 
  scale_y_continuous(breaks = seq(min(Curvas_amplif3$Fluorescencia),
                                  max(Curvas_amplif3$Fluorescencia),
                                  by = 0.02),
                     labels = scales::number_format(accuracy = 0.02)) +
  # colores manuales para la leyenda
  scale_color_manual(values = c("MLL" = "#8E8FAD",
                                "H2O" = "#89AD91"))

Grafica_amplif_equipo