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")

LLamar paquetería necesaria

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

Llamar a base de datos

Curvas_abs <- vroom("https://raw.githubusercontent.com/ManuelLaraMVZ/Metabolomica_2026_1/refs/heads/main/Amplificacion_ambos%20grupos.csv")
## Rows: 51 Columns: 9
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl (9): Cycle, 50 ng, 10 ng, 5 ng, 1 ng, 0.5 ng, 0.1 ng, G1-M, G2-M
## 
## ℹ 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_abs
## # A tibble: 51 × 9
##    Cycle `50 ng` `10 ng` `5 ng` `1 ng` `0.5 ng` `0.1 ng` `G1-M`  `G2-M`
##    <dbl>   <dbl>   <dbl>  <dbl>  <dbl>    <dbl>    <dbl>  <dbl>   <dbl>
##  1     1    21.3   0.124 -2.25    2.06   -1.78    -2.32    22.1 -0.184 
##  2     2    27.9   1.39   2.61    8.66    5.96     2.18    92.0  8.29  
##  3     3    34.5  -0.660 11.4    12.2     5.94     2.34   132.   3.73  
##  4     4    56.6   1.000  1.87    6.49    5.20     1.05   164.   3.20  
##  5     5    65.2  -0.484 -1.18    1.77   -5.23     0.606  184.   0.557 
##  6     6    72.3   1.44  -0.477   2.35   -0.958    4.81   214.   0.0300
##  7     7    89.1  -5.10  -3.87   -4.93   -3.60    -4.87   249.  -7.37  
##  8     8   101.   -1.67  -3.52   -3.31   -2.34     0.403  277.  -6.98  
##  9     9   114.    2.66   5.35   -2.11   -1.40    -0.659  302.  -3.63  
## 10    10   123.   13.6   10.4    -5.98    2.27     1.13   332.  -1.16  
## # ℹ 41 more rows

Modificar columnas

Curvas_abs2 <- Curvas_abs %>% 
  rename(Ciclo   = Cycle,
         `50ng`  = `50 ng`,
         `10ng`  = `10 ng`,
         `5ng`   = `5 ng`,
         `1ng`   = `1 ng`,
         `0.5ng` = `0.5 ng`,
         `0.1ng` = `0.1 ng`,
         G1M     = `G1-M`) %>% 
  select(-`G2-M`)

Curvas_abs2
## # A tibble: 51 × 8
##    Ciclo `50ng` `10ng`  `5ng` `1ng` `0.5ng` `0.1ng`   G1M
##    <dbl>  <dbl>  <dbl>  <dbl> <dbl>   <dbl>   <dbl> <dbl>
##  1     1   21.3  0.124 -2.25   2.06  -1.78   -2.32   22.1
##  2     2   27.9  1.39   2.61   8.66   5.96    2.18   92.0
##  3     3   34.5 -0.660 11.4   12.2    5.94    2.34  132. 
##  4     4   56.6  1.000  1.87   6.49   5.20    1.05  164. 
##  5     5   65.2 -0.484 -1.18   1.77  -5.23    0.606 184. 
##  6     6   72.3  1.44  -0.477  2.35  -0.958   4.81  214. 
##  7     7   89.1 -5.10  -3.87  -4.93  -3.60   -4.87  249. 
##  8     8  101.  -1.67  -3.52  -3.31  -2.34    0.403 277. 
##  9     9  114.   2.66   5.35  -2.11  -1.40   -0.659 302. 
## 10    10  123.  13.6   10.4   -5.98   2.27    1.13  332. 
## # ℹ 41 more rows

Reorganizar datos

Curvas_abs3 <- Curvas_abs2 %>% 
  pivot_longer(cols = -Ciclo,
               names_to = "Muestras",
               values_to = "Fluorescencia")

Curvas_abs3
## # A tibble: 357 × 3
##    Ciclo Muestras Fluorescencia
##    <dbl> <chr>            <dbl>
##  1     1 50ng            21.3  
##  2     1 10ng             0.124
##  3     1 5ng             -2.25 
##  4     1 1ng              2.06 
##  5     1 0.5ng           -1.78 
##  6     1 0.1ng           -2.32 
##  7     1 G1M             22.1  
##  8     2 50ng            27.9  
##  9     2 10ng             1.39 
## 10     2 5ng              2.61 
## # ℹ 347 more rows

Gráfica de amplificación

# Definir umbral (ajusta según tus datos)
Umbral_ciclos <- 0.008

# Gráfica general (todas las muestras excepto G2-M)
Grafica_abs <- ggplot(Curvas_abs3,
                      aes(x = Ciclo,
                          y = Fluorescencia,
                          color = Muestras)) +
  geom_line(linewidth = 1.5) +
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#581845") +
  theme_classic() +
  labs(title = "Curvas de amplificación valores absolutos",
       subtitle = "Estándares y Muestra problema (G1M)",
       caption = "Equipo: KAM",
       x = "Ciclos",
       y = "Fluorescencia (u.a.)") +
  theme(axis.line = element_line(linewidth = 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_abs3$Ciclo),
                                  max(Curvas_abs3$Ciclo),
                                  by = 2)) +
  coord_cartesian(ylim = c(0, 1300))   # ajusta el rango Y

Grafica_abs

Gráfica equipo KAM

# Definir umbral (ajusta según tus datos)
Umbral_ciclos <- 0.008

# Gráfica individual (solo 5 ng, todos los ciclos)
Grafica_abs_5ng <- ggplot(Curvas_abs2,
                          aes(x = Ciclo,
                              y = `5ng`)) +
  geom_point(color = "#1e2f7c", size = 2) +   # puntos para ver la curva
  geom_line(color = "#1e2f7c", linewidth = 1.2) +  # línea suave
  geom_hline(yintercept = Umbral_ciclos, linetype = "dashed", color = "#581845") +
  theme_classic() +
  labs(title = "Curvas de amplificación valores absolutos",
       subtitle = "Curva de Amplificación 5 ng",
       caption = "Equipo: KAM",
       x = "Ciclos",
       y = "Fluorescencia (u.a.)") +
  theme(axis.line = element_line(linewidth = 1.2, color = "black"),
        axis.title = element_text(face = "bold"),
        axis.text = element_text(face = "bold")) +
  scale_x_continuous(breaks = seq(min(Curvas_abs2$Ciclo),
                                  max(Curvas_abs2$Ciclo),
                                  by = 5)) +
  coord_cartesian(ylim = c(0, 800))   # rango Y ajustado para ver la curva completa

Grafica_abs_5ng