Correr la paquetería - instalación de los paquetes 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")
p_load("vroom",
       "dplyr",
       "ggplot2",
       "tidyr",
       "ggrepel",
       "plotly")
Melting_curves <- vroom(file= "https://raw.githubusercontent.com/ManuelLaraMVZ/Metabolomica_2026_1/refs/heads/main/Disociación_G2.csv")
## Rows: 61 Columns: 4
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (4): Temperature, A1, A2, A3
## 
## ℹ 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 Ɨ 4
##    Temperature    A1    A2    A3
##          <dbl> <dbl> <dbl> <dbl>
##  1        65   2606. 2789. 2602.
##  2        65.5 2602. 2779. 2598.
##  3        66   2597. 2769. 2595.
##  4        66.5 2593. 2758. 2591.
##  5        67   2589. 2748. 2587.
##  6        67.5 2584. 2738. 2583.
##  7        68   2580. 2727. 2580.
##  8        68.5 2576. 2716. 2576.
##  9        69   2572. 2705. 2572.
## 10        69.5 2568. 2692. 2568.
## # ℹ 51 more rows

Modificar base de datos

Melting_curves2 <- Melting_curves %>% 
   mutate(Temperatura = Temperature,
         JPP    = A1,
         EQUIPO2   = A2,
         EQUIPO3   = A3,) %>% 
  select(-Temperature:-A3)
Melting_curves2
## # A tibble: 61 Ɨ 4
##    Temperatura   JPP EQUIPO2 EQUIPO3
##          <dbl> <dbl>   <dbl>   <dbl>
##  1        65   2606.   2789.   2602.
##  2        65.5 2602.   2779.   2598.
##  3        66   2597.   2769.   2595.
##  4        66.5 2593.   2758.   2591.
##  5        67   2589.   2748.   2587.
##  6        67.5 2584.   2738.   2583.
##  7        68   2580.   2727.   2580.
##  8        68.5 2576.   2716.   2576.
##  9        69   2572.   2705.   2572.
## 10        69.5 2568.   2692.   2568.
## # ℹ 51 more rows

Agrupacion de datos

Melting_curves3 <- Melting_curves2 %>% 
  pivot_longer(cols = -Temperatura, 
               names_to = "Muestras",
               values_to = "Fluorescencias")
Melting_curves3
## # A tibble: 183 Ɨ 3
##    Temperatura Muestras Fluorescencias
##          <dbl> <chr>             <dbl>
##  1        65   JPP               2606.
##  2        65   EQUIPO2           2789.
##  3        65   EQUIPO3           2602.
##  4        65.5 JPP               2602.
##  5        65.5 EQUIPO2           2779.
##  6        65.5 EQUIPO3           2598.
##  7        66   JPP               2597.
##  8        66   EQUIPO2           2769.
##  9        66   EQUIPO3           2595.
## 10        66.5 JPP               2593.
## # ℹ 173 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 disoaciación",
       subtitle = "Todas las muestras",
       caption = "Diseñó: Paulina Aguilar",
       x = "Temperatura (°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 per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
  Grafica_melting

Sacar las derivadas negativas (pico hacia arriba) de todos las curvas de la grafica–> identificar picos para conocer temperatura de disociacion

Derivadas de las curvas de disociacion

Derivadas <- Melting_curves2 %>% 
  mutate(across(JPP:EQUIPO3,
                ~-c(NA,diff(.x)/diff(Melting_curves2$Temperatura)), .names = "d_{.col}")) %>% 
  select(-JPP:-EQUIPO3) %>% 
  slice(-1)
Derivadas
## # A tibble: 60 Ɨ 4
##    Temperatura d_JPP d_EQUIPO2 d_EQUIPO3
##          <dbl> <dbl>     <dbl>     <dbl>
##  1        65.5  8.63      20.6      7.46
##  2        66    8.63      20.6      7.46
##  3        66.5  8.63      20.6      7.46
##  4        67    8.63      20.6      7.46
##  5        67.5  8.63      20.6      7.46
##  6        68    8.63      20.6      7.46
##  7        68.5  7.91      22.3      7.70
##  8        69    7.99      23.5      7.91
##  9        69.5  8.45      25.4      8.22
## 10        70    9.11      27.4      8.56
## # ℹ 50 more rows

Reordenar los datos

Derivadas2 <- Derivadas %>% 
  pivot_longer(cols = -Temperatura,
               names_to = "Muestras",
               values_to = "Derivadas")
Derivadas2
## # A tibble: 180 Ɨ 3
##    Temperatura Muestras  Derivadas
##          <dbl> <chr>         <dbl>
##  1        65.5 d_JPP          8.63
##  2        65.5 d_EQUIPO2     20.6 
##  3        65.5 d_EQUIPO3      7.46
##  4        66   d_JPP          8.63
##  5        66   d_EQUIPO2     20.6 
##  6        66   d_EQUIPO3      7.46
##  7        66.5 d_JPP          8.63
##  8        66.5 d_EQUIPO2     20.6 
##  9        66.5 d_EQUIPO3      7.46
## 10        67   d_JPP          8.63
## # ℹ 170 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 disoaciación",
       subtitle = "Todas las muestras",
       caption = "Integrantes del equipo: JPP",
       x = "Temperatura (°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.5))
Grafica_derivada

Construir una 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"),
    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_JPP, color = "d_JPP"), linewidth = 1.5) +
  scale_color_manual(
    name = "Muestras",
    values = c("d_JPP" = "#93D620")
  ) +
  theme_classic()+
  labs(title = "Derivada de Disociación", 
       subtitle = "EQUIPO JPP",
       caption = "Integrantes del equipo: JPP",
       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 = 2.5))
Grafica_derivada_equipo

Etiquetas – conocer valor exacto de Tm

Pico <- max(Derivadas$d_JPP)
Pico
## [1] 68.81715

Temperatura: correlación de las columnas

Tm <- Derivadas %>% 
  filter(d_JPP == Pico) %>% 
  select(Temperatura,d_JPP)
Tm
## # A tibble: 1 Ɨ 2
##   Temperatura d_JPP
##         <dbl> <dbl>
## 1        82.5  68.8

GrƔfica con etiqueta

Grafica_derivada_equipo2 <- Grafica_derivada_equipo+
  geom_vline(xintercept = Tm$Temperatura, 
             color = "#2D4512", 
             linetype = "dashed",
             linewidth = 1)+
geom_label_repel(data = Tm, 
                 aes(x = Temperatura,
                     y = d_JPP,
                     label = paste("Tm = ", round(Temperatura),"°C")),
                 nudge_x = 4,
                 nudge_y = -0.3,
                 max.overlaps = 100,
                 color = "black",
                 fill = "#EBE8D8")
Grafica_derivada_equipo2