install.packages("pacman")
## Installing package into '/cloud/lib/x86_64-pc-linux-gnu-library/4.4'
## (as 'lib' is unspecified)
library("pacman")
p_load("vroom", 
       "dplyr",  
       "ggplot2",
       "tidyr",
       "ggrepel",
       "plotly")
Melting_curves <- vroom(file = "https://raw.githubusercontent.com/ManuelLaraMVZ/resultados_PCR_practica/refs/heads/main/Disociaci%C3%B3n_Grupo2_24022025.csv")
## Rows: 61 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (7): Temperature, A1, A2, A3, A4, A5, A6
## 
## ℹ 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_curves
## # A tibble: 61 Ɨ 7
##    Temperature     A1     A2     A3    A4     A5    A6
##          <dbl>  <dbl>  <dbl>  <dbl> <dbl>  <dbl> <dbl>
##  1        65   14444. 21615. 20410. 4466. 20498. 2707.
##  2        65.5 14395. 21594. 20229. 4458. 20264. 2706.
##  3        66   14346. 21574. 20048. 4451. 20031. 2705.
##  4        66.5 14296. 21553. 19868. 4444. 19797. 2704.
##  5        67   14247. 21532. 19687. 4437. 19564. 2703.
##  6        67.5 14198. 21511. 19506. 4430. 19330. 2702.
##  7        68   14149. 21490. 19325. 4423. 19096. 2701.
##  8        68.5 14083. 21448. 19105. 4412. 18833. 2700.
##  9        69   14000. 21380. 18852. 4398. 18555. 2699.
## 10        69.5 13898. 21275. 18579. 4382. 18268. 2698.
## # ℹ 51 more rows

modificar la base de datos

Melting_curves2 <- Melting_curves %>%
   mutate (Temperatura = Temperature, Manuel = A1, Ricardo = A2, Regina = A3, Marian = A4, Neto = A5, Johan = A6) %>% 
  select(-Temperature:-A6)
Melting_curves2
## # A tibble: 61 Ɨ 7
##    Temperatura Manuel Ricardo Regina Marian   Neto Johan
##          <dbl>  <dbl>   <dbl>  <dbl>  <dbl>  <dbl> <dbl>
##  1        65   14444.  21615. 20410.  4466. 20498. 2707.
##  2        65.5 14395.  21594. 20229.  4458. 20264. 2706.
##  3        66   14346.  21574. 20048.  4451. 20031. 2705.
##  4        66.5 14296.  21553. 19868.  4444. 19797. 2704.
##  5        67   14247.  21532. 19687.  4437. 19564. 2703.
##  6        67.5 14198.  21511. 19506.  4430. 19330. 2702.
##  7        68   14149.  21490. 19325.  4423. 19096. 2701.
##  8        68.5 14083.  21448. 19105.  4412. 18833. 2700.
##  9        69   14000.  21380. 18852.  4398. 18555. 2699.
## 10        69.5 13898.  21275. 18579.  4382. 18268. 2698.
## # ℹ 51 more rows

Agrupacion de datos

Melting_curves3 <- Melting_curves2  %>% 
  pivot_longer(cols = - Temperatura,
               names_to = "Muestras",
               values_to = "Fluorescencias")
Melting_curves3
## # A tibble: 366 Ɨ 3
##    Temperatura Muestras Fluorescencias
##          <dbl> <chr>             <dbl>
##  1        65   Manuel           14444.
##  2        65   Ricardo          21615.
##  3        65   Regina           20410.
##  4        65   Marian            4466.
##  5        65   Neto             20498.
##  6        65   Johan             2707.
##  7        65.5 Manuel           14395.
##  8        65.5 Ricardo          21594.
##  9        65.5 Regina           20229.
## 10        65.5 Marian            4458.
## # ℹ 356 more rows

Grafica

Grafica_melting <- ggplot(Melting_curves3,
                          aes(x = Temperatura,
                              y= Fluorescencias,
                              color = Muestras)) +
  geom_line(linewidth = 1.5)+
  theme_classic()+
  labs (title = "Curvas de disociación",
        subtitle = "Todas las muestras",
        caption = "Diseñó: Monica, Marian, Sofia y Laura",
        x= "Tempertura (ĀŗC)",
        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"))
## 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

Derivadas de las curvas de disociación

Derivadas <- Melting_curves2  %>% 
  mutate(across (Manuel : Johan ,
                 ~-c(NA, diff(.x)/diff(Melting_curves2$Temperatura)),  .names = "d_{.col}")) %>%
  select(-Manuel:-Johan) %>%
  slice(-1)
Derivadas
## # A tibble: 60 Ɨ 7
##    Temperatura d_Manuel d_Ricardo d_Regina d_Marian d_Neto d_Johan
##          <dbl>    <dbl>     <dbl>    <dbl>    <dbl>  <dbl>   <dbl>
##  1        65.5     98.2      41.8     361.     14.1   467.    1.92
##  2        66       98.2      41.8     361.     14.1   467.    1.92
##  3        66.5     98.2      41.8     361.     14.1   467.    1.92
##  4        67       98.2      41.8     361.     14.1   467.    1.92
##  5        67.5     98.2      41.8     361.     14.1   467.    1.92
##  6        68       98.2      41.8     361.     14.1   467.    1.92
##  7        68.5    131.       83.3     441.     22.5   527.    2.14
##  8        69      167.      138.      506.     28.6   555.    2.57
##  9        69.5    205.      210.      546.     32.1   574.    2.25
## 10        70      245.      286.      571.     34.1   594.    2.98
## # ℹ 50 more rows

Reordenar los datos

Derivadas2 <- Derivadas %>%
  pivot_longer(cols = -Temperatura,
               names_to = "Muestras",
               values_to = "Derivadas")
Derivadas2
## # A tibble: 360 Ɨ 3
##    Temperatura Muestras  Derivadas
##          <dbl> <chr>         <dbl>
##  1        65.5 d_Manuel      98.2 
##  2        65.5 d_Ricardo     41.8 
##  3        65.5 d_Regina     361.  
##  4        65.5 d_Marian      14.1 
##  5        65.5 d_Neto       467.  
##  6        65.5 d_Johan        1.92
##  7        66   d_Manuel      98.2 
##  8        66   d_Ricardo     41.8 
##  9        66   d_Regina     361.  
## 10        66   d_Marian      14.1 
## # ℹ 350 more rows

GrƔficas Derivadas

Grafica_derivada <- ggplot(Derivadas2,
                           aes(x= Temperatura,
                               y = Derivadas,
                               color = Muestras))+
    geom_line(linewidth = 1.5)+
  theme_classic()+
  labs (title = "Curvas de la derivada de disociación",
        subtitle = "Todas las muestras",
        caption = "Diseñó: Monica, Marian, Sofia y Laura",
        x= "Tempertura (ĀŗC)",
        y = expression(-Delta~F / Delta~T))+
  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(Derivadas2$Temperatura),
                                 max(Derivadas2$Temperatura), 
                                    by = 3))
Grafica_derivada

Grafica 3D

Grafica_derivada_3D <- plot_ly(Derivadas2,
                               x = ~Temperatura,
                               y = ~Muestras,
                               z = ~Derivadas,
                               color = ~factor(Muestras),
                               type = "scatter3d",
                               mode = "lines",
                               line = list(width = 6)) %>%
  layout(title = "Curvas de derivada en 3D",  
         scene = list(
           xaxis = list(title = "Temperatura (ĀŗC)"),
           yaxis = list(title = "Muestras"),
           zaxis = list(title = "-ΔT/ΔF")
         ))

Grafica_derivada_3D

Grafica del equipo

Grafica_derivada_equipo <- ggplot(Derivadas,
                                  aes(x= Temperatura))+
 geom_line(aes(y= d_Marian, color = "d_Marian"), linewidth = 1.2) +
  geom_line(aes(y= d_Manuel, color = "d_Manuel"), linewidth = 1.2) +
  scale_color_manual(values = c("d_Marian" = "#8ea0cb", "d_Manuel" = "#f28c61"))+
  theme_classic() +
labs(title = "Derivada de disociación",
     subtitle = "Tejido: Cerebro",
     caption = "Diseñó: Monica, Marian, Sofia y Laura",
     x = "Temperatura",
     y = expression(-Delta~F / Delta~T))+
  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(Derivadas2$Temperatura),
                                 max(Derivadas2$Temperatura), 
                                    by = 3))
Grafica_derivada_equipo

Etiquetas

Pico <- max(Derivadas$d_Marian)
Pico
## [1] 38.32567

Temperatura

Tm <- Derivadas %>%
  filter(d_Marian == Pico) %>%
  select(Temperatura, d_Marian)
Tm
## # A tibble: 1 Ɨ 2
##   Temperatura d_Marian
##         <dbl>    <dbl>
## 1          73     38.3

Grafica con etiqueta

Grafica_derivada_equipo2 <- Grafica_derivada_equipo + 
  geom_vline(xintercept = Tm$Temperatura, 
             color = "#337529",
             linetype = "dashed",
             linewidth  = 1)+
  geom_label_repel(data = Tm,
                   aes(x= Temperatura,
                       y= d_Marian,
                       label = paste("Tm =", round(Temperatura),"ĀŗC")),
                   nudge_x = 3,
                   nudge_y = 3,
                   max.overlaps = 100,
                   color = "black",
                   fill = "#42b0bd")
Grafica_derivada_equipo2