Instalación de paquetes #Pacman: llama a otros paquetes y si no estan los instala

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

Llamar a pacman

library("pacman")

Llamar paqueteria necesaria

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

Llamar a base de datos

Curvas_amplif <- read.csv(file="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 base de datos #select: para seleccionar columnas #filter (una vez que ya conoces donde empieza la amplificación): para seleccionar filas

Curvas_amplif2 <- Curvas_amplif %>% #Cmd+Shift+M
  mutate(Ciclos = Cycle, H2O = A1, JRWF = B1, PPOF = C1, MLL = D1, DDR = E1) %>% 
  select(-Cycle:-E1) %>% 
  filter(Ciclos >=17)
Curvas_amplif2
##    Ciclos       H2O      JRWF      PPOF       MLL       DDR
## 1      17  1.32e-05  1.26e-03 -0.001210  0.000599  0.000786
## 2      18  3.94e-05  4.31e-04 -0.000969 -0.001550 -0.001190
## 3      19 -1.06e-04  2.27e-04 -0.001450 -0.000874 -0.001130
## 4      20 -1.04e-04  1.33e-04 -0.001970 -0.000632 -0.001340
## 5      21 -1.19e-04  1.04e-03  0.000464  0.000245 -0.000417
## 6      22 -1.53e-05  2.80e-04  0.003200 -0.000810  0.001580
## 7      23  7.04e-05 -8.60e-05  0.004940  0.001620  0.000497
## 8      24  1.20e-04 -2.38e-04  0.014400  0.001390  0.001210
## 9      25 -8.99e-05 -4.84e-04  0.026300  0.006340  0.004250
## 10     26  1.14e-05 -1.33e-03  0.049100  0.010100  0.008940
## 11     27 -1.04e-04 -8.24e-04  0.076300  0.020200  0.020200
## 12     28 -1.01e-04 -9.22e-04  0.105300  0.036500  0.035300
## 13     29 -2.22e-04 -9.38e-04  0.133600  0.062400  0.059400
## 14     30 -6.75e-05 -1.87e-04  0.162100  0.089500  0.082300
## 15     31 -8.90e-05 -3.71e-05  0.190800  0.114400  0.106800
## 16     32 -1.88e-04  1.80e-03  0.219700  0.141400  0.128100
## 17     33 -2.73e-05  3.45e-03  0.243400  0.170300  0.151500
## 18     34  3.58e-04  6.15e-03  0.267800  0.196600  0.172600
## 19     35  3.45e-04  9.13e-03  0.292700  0.223100  0.192300

Reordenamiento de datos

  1. Seleccionar los datos a reordenar (variables dependientes).
  2. Agruparé todas las variables por nombre.
  3. Agruparé todas 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
##     <int> <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

Gráfica

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

Grafica_amplif

Mejorar la gráfica

Quitar fondo, poner fondo blanco, poner los ejes, mejorar los ejes y poner umbral de ciclos

Umbral_ciclos <- 0.008

Grafica_amplif2 <- Grafica_amplif +
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#581845")+
  theme_classic()+
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Todas las muestras",
       caption = "Diseñó: Aitana Barrientos",
       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")) +
  scale_x_continuous(breaks = seq(min(Curvas_amplif3$Ciclos),
                                  max(Curvas_amplif3$Ciclos),
                                  by = 2))+
  scale_y_continuous(breaks = seq(min(Curvas_amplif3$Fluorescencias),
                                  max(Curvas_amplif3$Fluorescencias),
                                  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 per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Grafica_amplif2

Gráfica de los datos del equipo

Grafica_amplif_equipo <- ggplot(Curvas_amplif2,
                                aes(x = Ciclos)) +
  geom_line(aes(y = MLL, color ="MLL"), linewidth = 1.5) +
  geom_line(aes(y = H2O, color ="H2O"), linewidth = 1.5) +
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#581845")+
  scale_color_manual(values = c("MLL" = "#1e2f7c", "H2O" = "#900C3F"))+
  theme_classic()+
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Todas las muestras",
       caption = "Diseñó: Aitana Barrientos",
       x = "Ciclos",
       y = "Fluorescencia (u.a.)",
       color = "Muestras") + #Título de la leyenda
  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")) +
  scale_x_continuous(breaks = seq(min(Curvas_amplif3$Ciclos),
                                  max(Curvas_amplif3$Ciclos),
                                  by = 2))+
  scale_y_continuous(breaks = seq(min(Curvas_amplif3$Fluorescencias),
                                  max(Curvas_amplif3$Fluorescencias),
                                  by = 0.02),
                     labels = scales::number_format(accuracy = 0.02)) +
  geom_line(aes(x = Ciclos,
                y = H2O),
            color = "#900C3F",
            linewidth = 1.5)

Grafica_amplif_equipo