Primer paso, instalar a pacman

if (!require(pacman)) install.packages("pacman", dependencies = T)
## Loading required package: pacman

Llamar a pacman

library("pacman")

llamar paqueteria auxiliar

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

Llamar a la base de datos

Curvas_amplif <- 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.
Curvas_amplif
## # 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 
## # ℹ 25 more rows

Modificación de la base de datos

Curvas_amplif2 <- Curvas_amplif %>% 
  mutate(Ciclos = Cycle, JFRW = A1, JRL = B1, PPOF = C1, MLL = D1, AALE = E1) %>% 
  select(-1:-6) %>% 
  filter(Ciclos >= 21)
  

Curvas_amplif2
## # A tibble: 15 × 6
##    Ciclos      JFRW       JRL      PPOF       MLL      AALE
##     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>     <dbl>
##  1     21  0.00102  -0.000965 -0.000929 -0.00337  -0.000355
##  2     22 -0.00256   0.000608 -0.00444  -0.000276  0.000405
##  3     23 -0.00125  -0.000188 -0.00749   0.00130  -0.00139 
##  4     24  0.000363  0.00245   0.00357   0.00448   0.000601
##  5     25  0.00542   0.00822  -0.00250   0.00812  -0.00105 
##  6     26  0.00499   0.0236    0.0107    0.0223    0.00217 
##  7     27  0.0263    0.0397    0.0264    0.0364    0.00958 
##  8     28  0.0461    0.0795    0.0549    0.0665    0.0137  
##  9     29  0.0939    0.134     0.0944    0.118     0.0398  
## 10     30  0.154     0.192     0.150     0.170     0.0749  
## 11     31  0.223     0.253     0.193     0.226     0.124   
## 12     32  0.290     0.309     0.235     0.272     0.187   
## 13     33  0.352     0.367     0.279     0.328     0.246   
## 14     34  0.421     0.426     0.335     0.383     0.287   
## 15     35  0.485     0.486     0.386     0.443     0.343

Para la gráfica tenemos que reacomodar los datos de multiples columnas en solo 3 columnas

  1. Seleccionaré que columnas serán para el manejo de los datos.
  2. Agruparé todos los nombres de las columnas en una sola.
  3. Agrupare todos los valores de todas las columnas excepto la primera en una columna.
Curvas_amplif3 <- Curvas_amplif2 %>% 
  pivot_longer(cols = -Ciclos,
               names_to = "Muestras",
               values_to = "Fluorescencias")

Curvas_amplif3
## # A tibble: 75 × 3
##    Ciclos Muestras Fluorescencias
##     <dbl> <chr>             <dbl>
##  1     21 JFRW           0.00102 
##  2     21 JRL           -0.000965
##  3     21 PPOF          -0.000929
##  4     21 MLL           -0.00337 
##  5     21 AALE          -0.000355
##  6     22 JFRW          -0.00256 
##  7     22 JRL            0.000608
##  8     22 PPOF          -0.00444 
##  9     22 MLL           -0.000276
## 10     22 AALE           0.000405
## # ℹ 65 more rows

Gráfica y umbral de ciclos

Umbral_ciclos <- 0.08

Curvas_amplif_grafica <- ggplot(Curvas_amplif3,
                                aes(x = Ciclos,
                                    y = Fluorescencias,
                                    color = Muestras)) +
  geom_line(size = 1.5) +
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#581845") +
  theme_classic() +
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Práctica 1, \nEquipo: MLL",
       caption = "Todas las muestras",
       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(labels = scales::number_format(accuracy = 0.05),
                     breaks = seq(min(Curvas_amplif3$Fluorescencias), max(Curvas_amplif3$Fluorescencias), by = 0.05))
## 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.
Curvas_amplif_grafica

###################################################

Gráfica del equipo

Grafica_equipos <- ggplot(Curvas_amplif2,
                          mapping = aes(x= Ciclos,
                                        y = MLL))+
  geom_line(color ="#6287f1", size = 1.5)+
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#581845") +
  theme_classic() +
  labs(title = "Curvas de amplificación RT-qPCR",
       subtitle = "Muestra MLL",
       caption = "Diseñó: Manuel Lara Lozano",
       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(labels = scales::number_format(accuracy = 0.05),
                     breaks = seq(min(Curvas_amplif3$Fluorescencias), max(Curvas_amplif3$Fluorescencias), by = 0.05))

Grafica_equipos