if(!require(pacman))
install.packages("pacman")
## Loading required package: pacman
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_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
Melting_curves2 <- Melting_curves %>% 
mutate(Temperatura=Temperature, Bazo=A1, Regina_Testiculo=B1, Marian_Cerebro=C1, Ricardo_Hígado=D1, Neto_HigCorazon=E1, Johan_Bazo=H1) %>%
select(-Temperature:-H1)
Melting_curves2
## # A tibble: 61 × 7
##    Temperatura  Bazo Regina_Testiculo Marian_Cerebro Ricardo_Hígado
##          <dbl> <dbl>            <dbl>          <dbl>          <dbl>
##  1        65   7448.            6822.          8564.          7347.
##  2        65.5 7418.            6860.          8557.          7266.
##  3        66   7388.            6897.          8550.          7185.
##  4        66.5 7358.            6934.          8543.          7104.
##  5        67   7328.            6971.          8536.          7022.
##  6        67.5 7298.            7009.          8529.          6941.
##  7        68   7268.            7046.          8522.          6860.
##  8        68.5 7222.            7072.          8499.          6769.
##  9        69   7161.            7083.          8458.          6673.
## 10        69.5 7089.            7075.          8399.          6574.
## # ℹ 51 more rows
## # ℹ 2 more variables: Neto_HigCorazon <dbl>, Johan_Bazo <dbl>

Reordenar los datos agrupacion

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   Bazo                      7448.
##  2        65   Regina_Testiculo          6822.
##  3        65   Marian_Cerebro            8564.
##  4        65   Ricardo_Hígado            7347.
##  5        65   Neto_HigCorazon           5628.
##  6        65   Johan_Bazo                6126.
##  7        65.5 Bazo                      7418.
##  8        65.5 Regina_Testiculo          6860.
##  9        65.5 Marian_Cerebro            8557.
## 10        65.5 Ricardo_Hígado            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 equipo 1",
       x="Temperatura (°C)",
       y="Fluorescencia (u.a.)")+
theme(axis.line = element_line(size = 1, 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 curvas de disociación

Derivadas <- Melting_curves2 %>% 
  mutate(across(Bazo:Johan_Bazo,
                ~-c(NA, diff(.x)/diff(Melting_curves2$Temperatura)),.names = "d_{.col}")) %>% 
  select(-Bazo:-Johan_Bazo) %>% 
  slice(-1)
Derivadas
## # A tibble: 60 × 7
##    Temperatura d_Bazo d_Regina_Testiculo d_Marian_Cerebro d_Ricardo_Hígado
##          <dbl>  <dbl>              <dbl>            <dbl>            <dbl>
##  1        65.5   59.8              -74.6             14.2             162.
##  2        66     59.8              -74.6             14.2             162.
##  3        66.5   59.8              -74.6             14.2             162.
##  4        67     59.8              -74.6             14.2             162.
##  5        67.5   59.8              -74.6             14.2             162.
##  6        68     59.8              -74.6             14.2             162.
##  7        68.5   93.3              -51.9             46.4             182.
##  8        69    121.               -21.5             81.9             192.
##  9        69.5  144.                15.6            117.              198.
## 10        70    160.                54.4            149.              199.
## # ℹ 50 more rows
## # ℹ 2 more variables: d_Neto_HigCorazon <dbl>, d_Johan_Bazo <dbl>

Reordenar 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_Bazo                  59.8
##  2        65.5 d_Regina_Testiculo     -74.6
##  3        65.5 d_Marian_Cerebro        14.2
##  4        65.5 d_Ricardo_Hígado       162. 
##  5        65.5 d_Neto_HigCorazon       57.6
##  6        65.5 d_Johan_Bazo           118. 
##  7        66   d_Bazo                  59.8
##  8        66   d_Regina_Testiculo     -74.6
##  9        66   d_Marian_Cerebro        14.2
## 10        66   d_Ricardo_Hígado       162. 
## # ℹ 350 more rows

Graficas 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ño equipo 1",
       x="Temperatura (°C)",
       y=expression(-Delta~F / Delta~T))+
theme(axis.line = element_line(size = 1, 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= 5 ))
Grafica_derivada

Construir 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 derivadas en 3D",
         scene=list(
           xaxis=list(title="Temperatura (C°)"),
           yaxis=list(title="Muestras"),
           zaxis=list(title="-ΔT/ΔF")
         ))
Grafica_derivada_3D

Grafica individual (del equipo)

Grafica_derivada_equipo1 <- ggplot(Derivadas,
                                   aes(x=Temperatura))+
  geom_line(aes(y=d_Bazo, color= "d_Bazo"), linewidth=1.5)+
  geom_line(aes(y=d_Regina_Testiculo, color= "d_Regina_Testiculo"), linewidth=1.5)+
  scale_color_manual(values= c("d_Bazo"="blue","d_Regina_Testiculo"="pink"))+
  theme_classic()+
  labs(title="Derivada de Disociación",
       subtitle = "Tejido testículo",
       caption= "Equipo 1",
       x= "Temperatura",
       y=expression(-Delta~F / Delta~T))+
theme(axis.line = element_line(size = 1, 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= 5 ))

Grafica_derivada_equipo1

Etiquetas

Pico <- max(Derivadas$d_Regina_Testiculo)
Pico
## [1] 551.8266

Sacar Temperatura

Tm <- Derivadas %>% 
  filter(d_Regina_Testiculo==Pico) %>% 
  select(Temperatura, d_Regina_Testiculo)
Tm
## # A tibble: 1 × 2
##   Temperatura d_Regina_Testiculo
##         <dbl>              <dbl>
## 1        74.5               552.

Grafica con etiqueta

Grafica_derivada_equipo1_2 <- Grafica_derivada_equipo1+
  geom_vline(xintercept = Tm$Temperatura, color="orange", linetype= "dashed", 
             linewidth= 1)+
  geom_label_repel(data = Tm,
                   aes(x= Temperatura,
                       y= d_Regina_Testiculo,
                       label = paste("Tm=", round(Temperatura), "C°")),
                   nudge_x = 3,
                   nudge_y = -0.03,
                   max.overlaps = 100,
                   color="black",
                   fill="green")
Grafica_derivada_equipo1_2