Correr la paquetería

Intalación de paquetes

Pacman: llama a otros paquetes y si no están los instala

if(!require(pacman))
  install.packages("pacman")
## Cargando paquete requerido: pacman
## Warning: package 'pacman' was built under R version 4.4.3

Llamar a pacman

library("pacman")

Llamar paqueteria necesaria

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

Llamar a la base de datos

Melting_curves <- vroom(file= "https://raw.githubusercontent.com/ManuelLaraMVZ/resultados_PCR_practica/refs/heads/main/Disociaci%C3%B3n_Grupo2_17022025.csv")
## Rows: 61 Columns: 7
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (7): Temperature, A1, B1, C1, D1, E1, H1
## 
## ℹ 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    B1    C1    D1    E1    H1
##          <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
##  1        65   7448. 6822. 8564. 7347. 5628. 6126.
##  2        65.5 7418. 6860. 8557. 7266. 5599. 6067.
##  3        66   7388. 6897. 8550. 7185. 5570. 6008.
##  4        66.5 7358. 6934. 8543. 7104. 5541. 5949.
##  5        67   7328. 6971. 8536. 7022. 5513. 5890.
##  6        67.5 7298. 7009. 8529. 6941. 5484. 5831.
##  7        68   7268. 7046. 8522. 6860. 5455. 5772.
##  8        68.5 7222. 7072. 8499. 6769. 5418. 5707.
##  9        69   7161. 7083. 8458. 6673. 5377. 5639.
## 10        69.5 7089. 7075. 8399. 6574. 5332. 5568.
## # ℹ 51 more rows

Modificar Base de datos

Melting_curves2 <- Melting_curves %>% #Ctrl/Cmnd+Shift+M
  mutate(Temperatura = Temperature, Manuel = A1, Regina = B1, Marian = C1, Ricardo = D1, Neto = E1, Johan = H1) %>% 
  select(-Temperature:-H1)

Melting_curves2
## # A tibble: 61 × 7
##    Temperatura Manuel Regina Marian Ricardo  Neto Johan
##          <dbl>  <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl>
##  1        65    7448.  6822.  8564.   7347. 5628. 6126.
##  2        65.5  7418.  6860.  8557.   7266. 5599. 6067.
##  3        66    7388.  6897.  8550.   7185. 5570. 6008.
##  4        66.5  7358.  6934.  8543.   7104. 5541. 5949.
##  5        67    7328.  6971.  8536.   7022. 5513. 5890.
##  6        67.5  7298.  7009.  8529.   6941. 5484. 5831.
##  7        68    7268.  7046.  8522.   6860. 5455. 5772.
##  8        68.5  7222.  7072.  8499.   6769. 5418. 5707.
##  9        69    7161.  7083.  8458.   6673. 5377. 5639.
## 10        69.5  7089.  7075.  8399.   6574. 5332. 5568.
## # ℹ 51 more rows

Agrupación 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            7448.
##  2        65   Regina            6822.
##  3        65   Marian            8564.
##  4        65   Ricardo           7347.
##  5        65   Neto              5628.
##  6        65   Johan             6126.
##  7        65.5 Manuel            7418.
##  8        65.5 Regina            6860.
##  9        65.5 Marian            8557.
## 10        65.5 Ricardo           7266.
## # ℹ 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ño: Johan Medina",
       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 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_Regina d_Marian d_Ricardo d_Neto d_Johan
##          <dbl>    <dbl>    <dbl>    <dbl>     <dbl>  <dbl>   <dbl>
##  1        65.5     59.8    -74.6     14.2      162.   57.6    118.
##  2        66       59.8    -74.6     14.2      162.   57.6    118.
##  3        66.5     59.8    -74.6     14.2      162.   57.6    118.
##  4        67       59.8    -74.6     14.2      162.   57.6    118.
##  5        67.5     59.8    -74.6     14.2      162.   57.6    118.
##  6        68       59.8    -74.6     14.2      162.   57.6    118.
##  7        68.5     93.3    -51.9     46.4      182.   73.5    129.
##  8        69      121.     -21.5     81.9      192.   83.0    136.
##  9        69.5    144.      15.6    117.       198.   90.1    141.
## 10        70      160.      54.4    149.       199.   96.6    142.
## # ℹ 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       59.8
##  2        65.5 d_Regina      -74.6
##  3        65.5 d_Marian       14.2
##  4        65.5 d_Ricardo     162. 
##  5        65.5 d_Neto         57.6
##  6        65.5 d_Johan       118. 
##  7        66   d_Manuel       59.8
##  8        66   d_Regina      -74.6
##  9        66   d_Marian       14.2
## 10        66   d_Ricardo     162. 
## # ℹ 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 disociación",
       subtitle = "Todas las muestras",
       caption = "Diseño: Johan Medina",
       x = "Temperatura (°C)", 
       y= expression (-frac(dT, dF)))+
  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

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 Disociación 3D",
          scene = list(
            xaxis = list(title= "Temperatura (°C)"),
            yaxis= list(title = "Muestras"),
            zaxis= list(title= "-dT/dF")
          ))
Grafica_derivada_3D

Grafica del equipo

Grafica_derivada_equipo <- ggplot(Derivadas,
                                  aes(x = Temperatura))+
geom_line(aes(y = d_Johan, color = "d_Johan"), linewidth = 1.5) +
  geom_line(aes(y = d_Manuel, color = "d_Manuel"), linewidth = 1.5) +
  scale_color_manual(values = c("d_Johan" = "#f03d04", "d_Manuel" = "#074fff")) +
  theme_classic()+
  labs (title = "Derivada de Disociación",
        subtitle= "Tejido: Bazo",
        caption = "Diseño: Johan Medina",
        x= "Temperatura",
        y= expression (-frac(dT, dF)))+
  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

Pico <- max(Derivadas$d_Manuel)
Pico
## [1] 320.71

Temperatura

Tm <- Derivadas %>%
  filter(d_Manuel==Pico)%>%
  select(Temperatura, d_Johan)
Tm
## # A tibble: 1 × 2
##   Temperatura d_Johan
##         <dbl>   <dbl>
## 1        82.5    107.

Grafica con Etiqueta

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