Al 31 de diciembre de 2024, el Coronavirus Resource Center de la Johns Hopkins University & Medicine reportaba 676.6 millones de casos confirmados y 6.88 millones de defunciones acumuladas (Johns Hopkins University & Medicine, 2024).
Para la misma fecha, México registraba 7.70 millones de contagios y 334,958 muertes (Worldometers, 2025). Las olas más severas se dieron en invierno 2020-21 y verano 2021 (Delta); las subvariantes de Ómicron ocasionaron picos cortos y menos letales gracias a una cobertura de vacunación > 75% en 2023.
El Reporte Diario de COVID-19 NL (Secretaría de Salud de Nuevo León, 2023) indicaba 660,244 casos y 16,778 defunciones; la ocupación hospitalaria se redujo a 1.3%, manteniendo semáforo verde durante 2023-24.
El Plan Municipal de Desarrollo 2021-2024 destaca que la crisis sanitaria profundizó la brecha social: cerca del 35% de los hogares dependen de la economía informal, haciéndolos más vulnerables a confinamientos y pérdida de empleo (Gobierno de Monterrey, 2022).
El linaje con la mutación Spike D614G desplazó a la cepa de Wuhan y se volvió dominante a mediados de 2020, aumentando la transmisibilidad a 20% aproximadamente (Korber et al., 2020).
| Variante (VOC) | Linaje | Período de dominio | Rasgo clave |
|---|---|---|---|
| Alpha | B.1.1.7 | dic 2020 – jun 2021 | +50% transmisión, ligera ↑ gravedad |
| Beta | B.1.351 | feb – jun 2021 | Evasión inmune moderada |
| Gamma | P.1 | mar – jul 2021 | Reinfecciones en Manaos |
| Delta | B.1.617.2 | jul 2021 – dic 2021 | +60% transmisión, ↑ hospitalizaciones |
| Omicron | B.1.1.529+ | dic 2021 – presente | Alta evasión inmune, menor gravedad |
# Cargar las librerías necesarias
bioc_pq_analisis <- sort(c("ape","ggtree", "DECIPHER", "S4Vectors", "seqmagick","ggmsa", "ggplot2", "Biostrings"))
cran_pq <- sort(c("remotes","adegenet","ape","phangorn","phytools","geiger","viridis", "rentrez", "stringr", "viridis"))
instalar_faltantes <- function(bioc_pq, cran_pq) {
# Paquetes instalados actualmente
paquetes_instalados <- rownames(installed.packages())
# Detectar paqueterias que no están instaladas
faltantes_bioc <- bioc_pq[!bioc_pq %in% paquetes_instalados]
faltantes_cran <- cran_pq[!cran_pq %in% paquetes_instalados]
# Instalar BiocManager en caso de no tenerlo, este es necesario para paqueterias de Bioconductor
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("Biostrings")
# Instalar paquetes faltantes de Bioconductor
if (length(faltantes_bioc) > 0) {
message("Instalando paquetes de Bioconductor: ", paste(faltantes_bioc, collapse = ", "))
BiocManager::install(faltantes_bioc, ask = FALSE, update = FALSE)
}
# Instalar paquetes faltantes de CRAN
if (length(faltantes_cran) > 0) {
message("Instalando paquetes de CRAN: ", paste(faltantes_cran, collapse = ", "))
install.packages(faltantes_cran)
}
if (length(faltantes_bioc) == 0 && length(faltantes_cran) == 0) {
message("Todos los paquetes ya están instalados.")
}
}
instalar_faltantes(bioc_pq_analisis,cran_pq) #correr funcion
## Bioconductor version 3.21 (BiocManager 1.30.25), R 4.5.0 (2025-04-11 ucrt)
## Warning: package(s) not installed when version(s) same as or greater than current; use
## `force = TRUE` to re-install: 'Biostrings'
## Installation paths not writeable, unable to update packages
## path: C:/Program Files/R/R-4.5.0/library
## packages:
## lattice, mgcv
## Old packages: 'cli'
## Todos los paquetes ya están instalados.
#cargar librerias
library(ape)
library(phangorn)
library(phytools)
## Loading required package: maps
library(geiger)
library(seqinr)
##
## Attaching package: 'seqinr'
## The following objects are masked from 'package:ape':
##
## as.alignment, consensus
library(adegenet)
## Loading required package: ade4
##
## /// adegenet 2.1.11 is loaded ////////////
##
## > overview: '?adegenet'
## > tutorials/doc/questions: 'adegenetWeb()'
## > bug reports/feature requests: adegenetIssues()
##
## Attaching package: 'adegenet'
## The following object is masked from 'package:phangorn':
##
## AICc
library(ggtree)
## ggtree v3.16.0 Learn more at https://yulab-smu.top/contribution-tree-data/
##
## Please cite:
##
## Guangchuang Yu. Using ggtree to visualize data on tree-like structures.
## Current Protocols in Bioinformatics. 2020, 69:e96. doi:10.1002/cpbi.96
##
## Attaching package: 'ggtree'
## The following object is masked from 'package:ape':
##
## rotate
library(DECIPHER)
## Loading required package: Biostrings
## Loading required package: BiocGenerics
## Loading required package: generics
##
## Attaching package: 'generics'
## The following objects are masked from 'package:base':
##
## as.difftime, as.factor, as.ordered, intersect, is.element, setdiff,
## setequal, union
##
## Attaching package: 'BiocGenerics'
## The following object is masked from 'package:ade4':
##
## score
## The following objects are masked from 'package:stats':
##
## IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
##
## anyDuplicated, aperm, append, as.data.frame, basename, cbind,
## colnames, dirname, do.call, duplicated, eval, evalq, Filter, Find,
## get, grep, grepl, is.unsorted, lapply, Map, mapply, match, mget,
## order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank,
## rbind, Reduce, rownames, sapply, saveRDS, table, tapply, unique,
## unsplit, which.max, which.min
## Loading required package: S4Vectors
## Loading required package: stats4
##
## Attaching package: 'S4Vectors'
## The following object is masked from 'package:ggtree':
##
## expand
## The following object is masked from 'package:utils':
##
## findMatches
## The following objects are masked from 'package:base':
##
## expand.grid, I, unname
## Loading required package: IRanges
##
## Attaching package: 'IRanges'
## The following object is masked from 'package:ggtree':
##
## collapse
## The following object is masked from 'package:grDevices':
##
## windows
## Loading required package: XVector
## Loading required package: GenomeInfoDb
##
## Attaching package: 'Biostrings'
## The following object is masked from 'package:seqinr':
##
## translate
## The following object is masked from 'package:ape':
##
## complement
## The following object is masked from 'package:base':
##
## strsplit
library(viridis)
## Loading required package: viridisLite
##
## Attaching package: 'viridis'
## The following object is masked from 'package:maps':
##
## unemp
library(ggmsa)
## Registered S3 methods overwritten by 'ggalt':
## method from
## grid.draw.absoluteGrob ggplot2
## grobHeight.absoluteGrob ggplot2
## grobWidth.absoluteGrob ggplot2
## grobX.absoluteGrob ggplot2
## grobY.absoluteGrob ggplot2
## ggmsa v1.14.0 Document: http://yulab-smu.top/ggmsa/
##
## If you use ggmsa in published research, please cite:
## L Zhou, T Feng, S Xu, F Gao, TT Lam, Q Wang, T Wu, H Huang, L Zhan, L Li, Y Guan, Z Dai*, G Yu* ggmsa: a visual exploration tool for multiple sequence alignment and associated data. Briefings in Bioinformatics. DOI:10.1093/bib/bbac222
library(ggplot2)
library(Biostrings)
library(rentrez)
library(stringr)
Alfa=“OL461238.1”. Encontramos la variante en México y el gen esta spike esta en las coordenadas: 21549..25361/gene=“S”
Beta= “PP518931.1”. En esta variante no la encontramos en México pero si en el primer país donde se dio a conocer segun la pagina Admin-Umai. (2021, 27 diciembre), Sudáfrica y el gen esta spike esta en las coordenadas: 21516..25328/gene=“S”
Gamma= “OK550226.1”. Encontramos la variante en México y el gen esta spike esta en las coordenadas: 21468..25289/gene=“S”
Delta= “OQ083190.1”. Encontramos la variante en México y el gen esta spike esta en las coordenadas: 21554..25369/gene=“S”
Epsilon= “PQ999416.1”. Esra variante no estaba en la página proporcionada de las variantes del pangolin pero investigamos y puede ser B.1.429 o B.1.427, usamos la B.1.429 porque habia mas resultados, encontramos la variante en México y el gen esta spike esta en las coordenadas: 21519..25340/gene=“S”
Omicron=“PQ577963.1”. Sorpresibamente no encontramos la variante en México a pesar de lo mucho que sono la variante y tampoco la encontramos en su país de origen Sudáfrica, segun Admin-Umai. (2021, 27 diciembre), así que hagarramos el mas reciente que era de Estados Unidos y el gen esta spike esta en las coordenadas: 21563..25384/gene=“S”
Variantes <- c(Alfa="OL461238.1", Beta= "PP518931.1", Gamma= "OK550226.1", Delta= "OQ083190.1", Epsilon= "PQ999416.1", Omicron="PQ577963.1")
# Función para obtener y cortar las secuencias FASTA según la coordenada
get_fasta <- function(id, start, end) {
fasta <- entrez_fetch(db = "nuccore", id = id, rettype = "fasta", retmode = "text")
lines <- strsplit(fasta, "\n")[[1]]
seq <- paste(lines[-1], collapse = "")
seq <- gsub("[^ATCGatcg]", "", seq) # Eliminar caracteres NO validos
seq <- toupper(seq)
names(seq) <- id
# Cortar la secuencia según el rango solicitado
seq_cut <- substr(seq, start, end)
return(seq_cut)
}
# Obtener las secuencias y cortarlas al rango deseado de nuestro gen Spike
Alfa <- get_fasta(Variantes[1], 21549, 25361) # Variante Alfa
Beta <- get_fasta(Variantes[2], 21516, 25328) # Variante Beta
Gamma <- get_fasta(Variantes[3], 21468, 25289) # Variante Gamma
Delta <- get_fasta(Variantes[4], 21554, 25369) # Variante Delta
Epsilon<- get_fasta(Variantes[5], 21519, 25340)# Variante Epsilon
Omicron<- get_fasta(Variantes[6], 21563, 25384)# Variante Omicron
# Crear un objeto de tipo DNAStringSet con las secuencias cortadas
seqs <- DNAStringSet(c(Alfa, Beta, Gamma, Delta, Epsilon, Omicron))
names(seqs) <- names(Variantes)
seqs
## DNAStringSet object of length 6:
## width seq names
## [1] 3813 ATGTTTGTTTTTCTTGTTTTATT...GAGTCAAATTACATTACACATAA Alfa
## [2] 3813 ATGTTTGTTTTTCTTGTTTTATT...GAGTCAAATTACATTACACATAA Beta
## [3] 3822 ATGTTTGTTTTTCTTGTTTTATT...GAGTCAAATTACATTACACATAA Gamma
## [4] 3816 ATGTTTGTTTTTCTTGTTTTATT...GAGTCAAATTACATTACACATAA Delta
## [5] 3822 ATGTTTGTTTTTCTTGTTTTATT...GAGTCAAATTACATTACACATAA Epsilon
## [6] 3822 ATGTTTGTTTTTCTTGTTTTATT...GAGTCAAATTACATTACACATAA Omicron
Javier: El gen que codifica para la proteína Spike (S) es de particular interés porque: - Es responsable de la unión del virus al receptor ACE2 humano (Hoffmann et al., 2020, Cell) - Contiene el dominio de unión al receptor (RBD) que determina la infectividad - Es el principal blanco de los anticuerpos neutralizantes (Piccoli et al., 2020, Cell) - Las mutaciones en este gen están asociadas con escape inmunológico y mayor transmisibilidad (Harvey et al., 2021, Nat Rev Microbiol) - Las variantes de preocupación tienen múltiples mutaciones en este gen que afectan la biología del virus (Tao et al., 2021, Nature)
Alberto López Barragán: En mi caso elegí esta proteina porque despues de una investigación encontré que la principal razon de que el coronavirus haya evolucionado y se pueda transmitir entre humanos fue principalmente debido a una mutación en la proteina “spike”, a su vez como es la encargada de adherisise a celulas humanas e infectar al humano es la que mas batalla con el sistema inmune del humano, por lo tanto es la proteina que más puede llegar a mutar debido a esta constante lucha con el sistema inmune del humanol, por lo tanto espero que en nuestros gráficos sea notoria sus mutaciones a través de las diferentes variables del SARS-CoV-2. A su vez, esta proteina es exactamente la razon por la que usamos la variable Alfa (B.1.1.7) como nuestra variante de referencia o como si hubiera sido la original, esto es porque fue la primera variante del SARS-CoV-2 clasificada como ‘variante preocupante’ debido a su mayor transmisibilidad en humanos, identificada en el Reino Unido, alrededor de un 50% más contagiosa que el virus original, de hecho esta mutación que la volvío mucho mas contagiable fue justamente en el gen spike.
De igual forma me parece imporesionante como una mutación en una proteina pudo desencadenar una crisis global que duro 2 años, algo bílogico que re realizo de manera natural, unicamente buscando la supervivencia, es un proceso natural que todos los seres vivos realizamos, la adaptación por la supervivencia y en esta busqueda de sobrevivir miles de humanos fueron los que murieron, a su vez elegí esta proteina porque a de ser más facil encontrar la información acerca de como cada mutación fue afectando a la proteina ya que tengo mucha confinza de que habra cambios notorios en la secuencia genetica de esta proteina porque como mencione anteiormente es la que esta en constante lucha con los anticuerpos del humano, esto tambien implica que conforme fue mutando la proteina spike es muy probable que haya desarollado la mortalidad del virus. Otro aspecto a destacar es que si logramos entender como estas mutaciones en la proteina spike fueron ayudando al virus a penetrar las defensas humanas y hacernos daño nos puede ayudar a desarrollar tratamientos y vacunas mas eficientes, no solo para el coronavirus, sino que nos podria ayudar a tener un mejor entendimiento de nuestro sistema inmune.
José Fernando Munguía: La proteína Spike (S) del SARS-CoV-2 es de gran relevancia científica debido a su papel central en la entrada del virus a las células humanas. Esta proteína interactúa específicamente con el receptor ACE2 en las células humanas, lo que permite la fusión del virus con la célula huésped y la posterior infección (Hoffmann et al., 2020, Cell). Además, el dominio de unión al receptor (RBD) de la proteína Spike es crucial para determinar la afinidad del virus por ACE2, lo que influye directamente en su capacidad de infectar (Piccoli et al., 2020, Cell).
Las mutaciones en el gen que codifica para la proteína Spike están estrechamente asociadas con fenómenos de escape inmunológico, lo que permite que el virus evite la respuesta del sistema inmune y continúe propagándose. Estas mutaciones también han sido vinculadas con un aumento en la transmisibilidad del virus (Harvey et al., 2021, Nat Rev Microbiol). De hecho, las variantes más recientes del SARS-CoV-2, como la Delta y Ómicron, presentan alteraciones en el gen Spike que les otorgan ventajas evolutivas, como una mayor capacidad de evasión del sistema inmune y una mayor infectividad (Tao et al., 2021, Nature).
# --- Calcular longitud de las secuencias ---
longitudes <- sapply(seqs, length)
cat("Longitud de las secuencias:\n")
## Longitud de las secuencias:
print(longitudes)
## Alfa Beta Gamma Delta Epsilon Omicron
## 3813 3813 3822 3816 3822 3822
# Calcular composición de bases para cada variante
# Función para calcular composición
calcular_composicion <- function(secuencia) {
frecuencias <- alphabetFrequency(secuencia[[1]])
data.frame(
Variante = rep(names(secuencia), 4),
Base = c("A", "T", "C", "G"),
Frecuencia = c(frecuencias["A"], frecuencias["T"], frecuencias["C"], frecuencias["G"])
)
}
# Aplicar la función a todas las variantes
composicion <- do.call(rbind, lapply(names(seqs), function(x) {
calcular_composicion(seqs[x])
}))
# --- Gráfico de barras bonito con ggplot2 ---
library(ggplot2)
ggplot(composicion, aes(x = Variante, y = Frecuencia, fill = Base)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Composición de bases del gen Spike por variante",
x = "Variante", y = "Número de bases") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
En la gráfica de composición de bases del gen Spike para las 6 variantes analizadas Alfa, Beta, Delta, Epsilon, Gamma y Omicron del SARS-CoV-2 se observa que la proporción de nucleótidos es muy similar entre todas ellas. La base más abundante en todas las variantes es la timina (T), seguida de la adenina (A), mientras que las bases citosina (C) y guanina (G) presentan frecuencias más bajas y comparables entre sí. Esta similitud en la composición sugiere que, a pesar de las mutaciones acumuladas, el gen Spike conserva en gran medida su contenido de nucleótidos, lo que podemos interpretaer como una presión evolutiva por mantener la estructura funcional de la proteína Spike.
Además, el número total de bases en las secuencias analizadas es prácticamente igual, indicando que las longitudes de los genes no han sufrido cambios significativos entre variantes. Esto es coherente con la importancia crítica de esta región genética para la entrada del virus en las células humanas y su papel en la infectividad viral.
# Crear un vector vacío para guardar el %GC
gc_content <- numeric(length(seqs))
# Loop para calcular el %GC de cada variante
for (i in seq_along(seqs)) {
secuencia <- as.character(seqs[[i]])
g_count <- sum(strsplit(secuencia, "")[[1]] == "G")
c_count <- sum(strsplit(secuencia, "")[[1]] == "C")
total_bases <- nchar(secuencia)
gc_content[i] <- round(100 * (g_count + c_count) / total_bases, 2)
}
# Asignar nombres a las variantes
names(gc_content) <- names(seqs)
# --- Gráfico de barras del %GC por variante ---
barplot(gc_content,
names.arg = names(gc_content),
col = "steelblue",
main = "Contenido GC (%) del gen Spike por variante",
xlab = "Variante",
ylab = "Contenido GC (%)",
ylim = c(0, 100))
# Agregar etiquetas sobre las barras
text(x = 1:length(gc_content), y = gc_content + 2,
labels = paste0(gc_content, "%"), cex = 0.8)
La gráfica muestra que este se mantiene altamente conservado, variando ligeramente entre 37.15% y 37.34%. Esta estabilidad otra vez nos sugiere una fuerte presión evolutiva para mantener la composición genética del Spike, asi como observamos en la composición de bases de cada variante,este estabilidad es crucial para su función en la infección viral. Cambios significativos en el contenido GC podrían alterar la estabilidad del ARN mensajero, afectar la eficiencia de traducción de la proteína y modificar la tasa de mutación, lo que a su vez impactaría la expresión y funcionalidad de la proteína Spike, y posiblemente la capacidad del virus para evadir la respuesta inmune.
# --- Obtener las secuencias complementarias ---
complementarias <- reverseComplement(seqs)
# --- Calcular composición de bases en las complementarias ---
# Función para calcular la composición de bases
calcular_composicion <- function(secuencia) {
frecuencias <- alphabetFrequency(secuencia[[1]])
data.frame(
Variante = rep(names(secuencia), 4),
Base = c("A", "T", "C", "G"),
Frecuencia = c(frecuencias["A"], frecuencias["T"], frecuencias["C"], frecuencias["G"])
)
}
# Aplicar la función a todas las secuencias complementarias
composicion_comp <- do.call(rbind, lapply(names(complementarias), function(x) {
calcular_composicion(complementarias[x])
}))
# --- Gráfico de la composición de bases de las secuencias complementarias ---
ggplot(composicion_comp, aes(x = Variante, y = Frecuencia, fill = Base)) +
geom_bar(stat = "identity", position = "dodge") +
labs(title = "Composición de bases en las secuencias complementarias del gen Spike",
x = "Variante", y = "Número de bases") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
complementarias
## DNAStringSet object of length 6:
## width seq names
## [1] 3813 TTATGTGTAATGTAATTTGACTC...AATAAAACAAGAAAAACAAACAT Alfa
## [2] 3813 TTATGTGTAATGTAATTTGACTC...AATAAAACAAGAAAAACAAACAT Beta
## [3] 3822 TTATGTGTAATGTAATTTGACTC...AATAAAACAAGAAAAACAAACAT Gamma
## [4] 3816 TTATGTGTAATGTAATTTGACTC...AATAAAACAAGAAAAACAAACAT Delta
## [5] 3822 TTATGTGTAATGTAATTTGACTC...AATAAAACAAGAAAAACAAACAT Epsilon
## [6] 3822 TTATGTGTAATGTAATTTGACTC...AATAAAACAAGAAAAACAAACAT Omicron
Como podemos obsrvar la composición de las secuencias complementarias es identica a las originales, unicamente cambianda cada base por su complementaria, podemos observar nuevamente la estabilidad de la proteina spike a traves de las diferentes variantes.
Variantes <- c(Wuhan="NC_045512.2", Alfa="OL461238.1", Beta= "PP518931.1", Gamma= "OK550226.1", Delta= "OQ083190.1", Epsilon= "PQ999416.1", Omicron="PQ577963.1")
# Función para obtener y cortar las secuencias FASTA según la coordenada
get_fasta <- function(id, start, end) {
fasta <- entrez_fetch(db = "nuccore", id = id, rettype = "fasta", retmode = "text")
lines <- strsplit(fasta, "\n")[[1]]
seq <- paste(lines[-1], collapse = "")
seq <- gsub("[^ATCGatcg]", "", seq) # Eliminar caracteres NO validos
seq <- toupper(seq)
names(seq) <- id
# Cortar la secuencia según el rango solicitado
seq_cut <- substr(seq, start, end)
return(seq_cut)
}
# Obtener las secuencias y cortarlas al rango deseado de nuestro gen Spike
Wuhan_Referencia <- get_fasta(Variantes[1], 21563, 25384) # Secuencia de referencia
Alfa <- get_fasta(Variantes[2], 21549, 25361) # Variante Alfa
Beta <- get_fasta(Variantes[3], 21516, 25328) # Variante Beta
Gamma <- get_fasta(Variantes[4], 21468, 25289) # Variante Gamma
Delta <- get_fasta(Variantes[5], 21554, 25369) # Variante Delta
Epsilon<- get_fasta(Variantes[6], 21519, 25340)# Variante Epsilon
Omicron<- get_fasta(Variantes[7], 21563, 25384)# Variante Omicron
# Crear un objeto de tipo DNAStringSet con las secuencias cortadas
seqs <- DNAStringSet(c(Wuhan_Referencia,Alfa, Beta, Gamma, Delta, Epsilon, Omicron))
names(seqs) <- names(Variantes)
# Realizar el alineamiento
seqs_aligment <- DECIPHER::OrientNucleotides(seqs)
## ========================================================================================================================
##
## Time difference of 0.03 secs
alignment <- AlignSeqs(seqs_aligment)
## Determining distance matrix based on shared 10-mers:
## ================================================================================
##
## Time difference of 0 secs
##
## Clustering into groups by similarity:
## ================================================================================
##
## Time difference of 0 secs
##
## Aligning Sequences:
## ================================================================================
##
## Time difference of 0.09 secs
##
## Iteration 1 of 2:
##
## Determining distance matrix based on alignment:
## ================================================================================
##
## Time difference of 0 secs
##
## Reclustering into groups by similarity:
## ================================================================================
##
## Time difference of 0 secs
##
## Realigning Sequences:
## ================================================================================
##
## Time difference of 0.07 secs
##
## Iteration 2 of 2:
##
## Determining distance matrix based on alignment:
## ================================================================================
##
## Time difference of 0 secs
##
## Reclustering into groups by similarity:
## ================================================================================
##
## Time difference of 0 secs
##
## Realigning Sequences:
## ================================================================================
##
## Time difference of 0 secs
# Mostrar el alineamiento en consola
BrowseSeqs(alignment, highlight = 1) #Resalta la primer secuencia que es la original o la que nos ayuda a comparar
# Paso 1: Cortar a múltiplo de 3
alignment_trimmed <- subseq(alignment, start = 1, end = (width(alignment)[1] %/% 3) * 3)
# Paso 2: Convertir a carácter y limpiar secuencias
alignment_char <- as.character(alignment_trimmed)
clean_char <- gsub("[^ATCGatcg]", "A", alignment_char) # reemplazar todo lo no válido
clean_char <- toupper(clean_char)
# Paso 3: Convertir a DNAStringSet
clean_dna <- DNAStringSet(clean_char)
names(clean_dna) <- names(alignment_trimmed)
# Paso 4: Traducir
alignment_prot <- Biostrings::translate(clean_dna, if.fuzzy.codon = "solve")
a
## function (aa)
## {
## aa1 <- s2c("*ACDEFGHIKLMNPQRSTVWY")
## if (missing(aa))
## return(aa1)
## aa3 <- aaa()
## convert <- function(x) {
## if (all(x != aa3)) {
## warning("Unknown 3-letters code for aminoacid")
## return(NA)
## }
## else {
## return(aa1[which(x == aa3)])
## }
## }
## return(as.vector(unlist(sapply(aa, convert))))
## }
## <bytecode: 0x00000227f7d4a770>
## <environment: namespace:seqinr>
# Paso 5: Ver resultado
alignment_prot
## AAStringSet object of length 7:
## width seq names
## [1] 1274 MFVFLVLLPLVSSQCVNLTTRTQ...SCCKFDEDDSEPVLKGVKLHYT* Wuhan
## [2] 1274 MFVFLVLLPLVSSQCVNLTTRTQ...SCCKFDEDDSEPVLKGVKLHYT* Alfa
## [3] 1274 MFVFLVLLPLVSSQCVNLTTRTQ...SCCKFDEDDSEPVLKGVKLHYT* Beta
## [4] 1274 MFVFLVLLPLVSSQCVNFTNRTQ...SCCKFDEDDSEPVLKGVKLHYT* Gamma
## [5] 1274 MFVFLVLLPLVSSQCVNLRTRTQ...SCCKFDEDDSEPVLKGVKLHYT* Delta
## [6] 1274 MFVFLVLLPLVSIQCVNLTTRTQ...SCCKFDEDDSEPVLKGVKLHYT* Epsilon
## [7] 1274 MFVFLVLLPLVSSQCVNLTTRTQ...SCCKFDEDDSEPVLKGVKLHYT* Omicron
# Mostrar el alineamiento en consola
BrowseSeqs(alignment_prot, highlight = 1) #Resalta la primer secuencia que es la original o la que nos ayuda a comparar
Para empezar con nuestra interpretación hay que recordar el porque usamos al gen Alfa (B.1.1.7) como nuestra variante de referencia o como si hubiera sido la original, esto es porque fue la primera variante del SARS-CoV-2 clasificada como ‘variante preocupante’ debido a su mayor transmisibilidad en humanos, identificada en el Reino Unido, alrededor de un 50% más contagiosa que el virus original, de hecho esta mutación que la volvío mucho mas fue justamente en la prteina spike, una vez dicho eso vamos a comentar las principales diferencias.
#Generar archivo FASTA con secuencias alineadas
Biostrings::writeXStringSet(alignment, file="Coronavirus_spike.fasta")
virus_align <- Biostrings::readDNAStringSet("Coronavirus_spike.fasta", format = "fasta")
#Generar archivo FASTA con secuencias alineadas
Biostrings::writeXStringSet(alignment_prot, file="spike_prot.fasta")
prot_align <- Biostrings::readAAStringSet("spike_prot.fasta", format = "fasta")
#cargar archivo
virus_aligned <- seqinr::read.alignment("Coronavirus_spike.fasta", format = "fasta")
#matriz de distancias para representar las distancias entre las bases
matriz_distancia <- seqinr::dist.alignment(virus_aligned, matrix = "similarity")
temp <- as.data.frame(as.matrix(matriz_distancia))
table.paint(temp, cleg=0, clabel.row=.5, clabel.col=.5) + scale_color_viridis()
## NULL
Como era esperado, la diagonal principal es blanca, ya que cada variante es idéntica a sí misma. Comparado con Wuhan (diciembre 2019), Alfa (identificada en septiembre 2020 en Reino Unido) muestra poca divergencia (gris claro), lo cual refleja que las primeras mutaciones afectaron moderadamente la estructura del Spike. En contraste, Beta (Sudáfrica, mayo 2020) y Gamma (Brasil, noviembre 2020) presentan diferencias mayores, posiblemente relacionadas con presiones de selección natural en ambientes de alta transmisión o evasión inmunológica. Delta (India, octubre 2020) y Gamma muestran una distancia muy alta entre sí, reflejada en tonos casi negros, esto puede deverse a la distancia geografica, la cual afecta de gran forma, porque se ve envuelto en cuestiones climaticas, cambio de población, etc. Epsilon (California, mayo 2020) es una variante que conserva mayor similitud con Wuhan, indicando que su evolución fue menos drástica en la región de Spike, a pesar de haber surgido en una etapa intermedia de la pandemia. Omicron (Sudáfrica, noviembre 2021), aunque es la más reciente y acumula un gran número de mutaciones, no presenta la mayor distancia genética global respecto a Wuhan, pero sus cambios estratégicos en sitios clave explican su alta capacidad de escape inmune. En general, esta matriz no solo evidencia la acumulación progresiva de mutaciones en el Spike, sino también revela cómo diferentes presiones (inmunidad colectiva, transmisibilidad, intervenciones sanitarias) moldearon patrones divergentes de evolución viral en distintas regiones geográficas y momentos de la pandemia.
hm_tree <- ape::nj(matriz_distancia) #empleamos un árbol de neighbor-joining
class(hm_tree)
## [1] "phylo"
hm_tree <- ape::ladderize(hm_tree)
plot(hm_tree, cex = 0.6) #observamos el resultado en un plot
title("Ejemplo de dendograma viral")
ggtree(hm_tree ) + geom_tiplab() +
ggtitle("Dendograma del gen Spike")
#podemos observar el mismo grafico con la función ggtree
Basadas en las diferencias en el gen Spike. Las ramas del árbol reflejan la distancia genética: variantes que se separan de nodos más cercanos son más similares entre sí, mientras que separaciones más tempranas indican divergencias mayores. Se observa que Epsilon y Delta se agrupan relativamente cerca, lo que sugiere que, a pesar de sus diferencias funcionales, su divergencia genética en el Spike no fue tan extrema; ambas podrían haber evolucionado en entornos donde la presión selectiva priorizaba la transmisibilidad. Alfa se separa después, mostrando una distancia moderada respecto a estas dos. Gamma y Beta se agrupan en un clado distinto, indicando una trayectoria evolutiva compartida, posiblemente vinculada a una mayor presión inmunológica en sus regiones de origen (Brasil y Sudáfrica). Finalmente, Omicron emerge como una variante altamente divergente, separándose primero de las demás, lo que refleja la enorme cantidad de mutaciones acumuladas en el Spike, especialmente en sitios críticos para el reconocimiento inmunológico, a pesar de no ser necesariamente la más distante en términos de tiempo de aparición. Este patrón sugiere que la evolución del gen Spike en el SARS-CoV-2 no fue lineal, sino marcada por múltiples episodios de divergencia rápida impulsados por adaptaciones locales y cambios en el entorno epidemiológico.
ggmsa(virus_align , 1500, 1510, color = "Chemistry_NT", seq_name = TRUE) #delimitar zonas de interes
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
#ggmsa(alineamiento, inicio, fin, color)
ggmsa(prot_align, start =495, end = 505,
color = "Chemistry_AA", # Usa color de aminoácidos
font = "mono", # Fuente monoespaciada
char_width = 0.6,
seq_name = TRUE) +
theme_minimal()
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
Dentro del gen Spike del SARS-CoV-2, el nucleótido en la posición 1501 experimentó una mutación crítica: un cambio de adenina (A) a timina (T). Este cambio de base ocurrió en el codón correspondiente al aminoácido número 501 de la proteína Spike. Como consecuencia, se produjo un reemplazo de asparagina (N) por tirosina (Y), conocido como la mutación N501Y. Este cambio tuvo un impacto profundo en la biología del virus, ya que el residuo 501 se encuentra en el dominio de unión al receptor (RBD), la región responsable de interactuar directamente con el receptor ACE2 de las células humanas. La sustitución a tirosina, una molécula más grande y capaz de formar interacciones adicionales, aumentó la afinidad del Spike por el ACE2, facilitando una unión más estable y eficiente. Esto se tradujo en una mayor capacidad de infección del virus. La mutación N501Y fue una de las características definitorias de variantes como Alfa, Beta, Gamma y Omicron, y contribuyó significativamente a su mayor transmisibilidad y a la expansión global de estas cepas.
Información onbtenida de: Tian, F., Tong, B., Sun, L., Shi, S., Zheng, B., Wang, Z., Dong, X., & Zheng, P. (2021b). N501Y mutation of spike protein in SARS-CoV-2 strengthens its binding to receptor ACE2. eLife, 10. https://doi.org/10.7554/elife.69091
ggmsa(virus_align , 1445, 1455, color = "Chemistry_NT", seq_name = TRUE) #delimitar zonas de interes
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
#ggmsa(alineamiento, inicio, fin, color)
ggmsa(prot_align, start =480, end = 490,
color = "Chemistry_AA", # Usa color de aminoácidos
font = "mono", # Fuente monoespaciada
char_width = 0.6,
seq_name = TRUE) +
theme_minimal()
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
Dentro del gen Spike del SARS-CoV-2, la mutación en la posición 1450 corresponde a un cambio de base guanina (G) a adenina (A). Este cambio ocurre en el codón que codifica el aminoácido en la posición 484 de la proteína Spike, provocando un cambio de glutámico (E) —que es un aminoácido cargado negativamente— a lisina (K), que es cargada positivamente. Esta mutación se conoce como E484K. El residuo E484 está localizado en el dominio de unión al receptor (RBD), justo en una zona crítica donde los anticuerpos neutralizantes (producidos por infección previa o vacunación) suelen unirse para bloquear al virus. El cambio de una carga negativa a positiva altera significativamente la superficie de interacción del Spike, permitiendo que el virus escape parcialmente del reconocimiento de varios anticuerpos neutralizantes. Por eso, E484K ha sido una de las mutaciones más preocupantes en variantes como Beta (B.1.351) y Gamma (P.1), asociándose a una reducción en la efectividad de las vacunas y mayor riesgo de reinfección. Aunque esta mutación no mejora tanto la afinidad a ACE2 como N501Y, su contribución principal es permitir al virus evadir la inmunidad adquirida.
Información obtenida de: Yang, W., Huang, W., Liao, T., Hsiao, T., Chuang, H., & Liu, P. (2022). SARS-CoV-2 E484K Mutation Narrative Review: Epidemiology, Immune Escape, Clinical Implications, and Future Considerations. Infection And Drug Resistance, Volume 15, 373-385. https://doi.org/10.2147/idr.s344099
ggmsa(virus_align , 1350, 1360, color = "Chemistry_NT", seq_name = TRUE) #delimitar zonas de interes
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
#ggmsa(alineamiento, inicio, fin, color)
ggmsa(prot_align, start =450, end = 460,
color = "Chemistry_AA", # Usa color de aminoácidos
font = "mono", # Fuente monoespaciada
char_width = 0.6,
seq_name = TRUE) +
theme_minimal()
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
La mutación L452R ocurre en el gen de la proteína Spike, en la posición 1355, se encuentra una mutación puntual importante compartida por las variantes Delta y Épsilon. En la secuencia de referencia de Wuhan, esta posición corresponde a la segunda base del codón que codifica para el aminoácido 452. El codón original es CTT, que codifica para la Leucina (L). La mutación consiste en un cambio de la base Timina (T) a una Guanina (G) en la posición 1354, modificando el codón de CTT a CGT. Como resultado de este cambio, el aminoácido en la posición 452 de la proteína Spike pasa de ser una Leucina (L) a una Arginina (R), mutación conocida como L452R. Esta sustitución ocurre en el dominio de unión al receptor (RBD) y tiene un impacto funcional significativo, ya que incrementa la afinidad de Spike por el receptor ACE2 e incrementa la evasión del virus frente a varios anticuerpos neutralizantes, contribuyendo así a una mayor infectividad y evasión inmune de las variantes que la portan.
Información obtenida de:Zhang, Y., Zhang, T., Fang, Y., Liu, J., Ye, Q., & Ding, L. (2022b). SARS-CoV-2 spike L452R mutation increases Omicron variant fusogenicity and infectivity as well as host glycolysis. Signal Transduction And Targeted Therapy, 7(1). https://doi.org/10.1038/s41392-022-00941-z
ggmsa(virus_align , 1835, 1845, color = "Chemistry_NT", seq_name = TRUE) #delimitar zonas de interes
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
#ggmsa(alineamiento, inicio, fin, color)
ggmsa(prot_align, start =610, end = 620,
color = "Chemistry_AA", # Usa color de aminoácidos
font = "mono", # Fuente monoespaciada
char_width = 0.6,
seq_name = TRUE) +
theme_minimal()
## Warning: No shared levels found between `names(values)` of the manual scale and the
## data's fill values.
En la posición 1841 del gen de la proteína Spike del SARS-CoV-2 (contando desde 0), ocurre una de las mutaciones más importantes de toda la pandemia: D614G. En la secuencia de referencia de Wuhan, el codón que comienza en el nucleótido 1841 es GAT, que codifica para el aminoácido Ácido Aspártico (D) en la posición 614 de la proteína. La mutación consiste en un cambio de base en el segundo nucleótido del codón, donde una Adenina (A) es reemplazada por una Guanina (G), transformando el codón de GAT a GGT, lo que cambia el aminoácido de un Ácido Aspártico (D) a una Glicina (G). Este cambio, conocido como D614G, no afecta directamente el sitio de unión al receptor ACE2, pero sí mejora la estabilidad conformacional del trímero de Spike en su forma abierta, aumentando la eficiencia con la que el virus puede infectar células humanas. Debido a esta ventaja evolutiva, la mutación D614G se volvió dominante muy rápidamente a nivel global durante 2020 y, posteriormente, fue heredada por prácticamente todas las variantes de preocupación, incluyendo Alfa, Beta, Gamma, Delta, Épsilon y Ómicron, entre muchas otras. La presencia de D614G en estas variantes demuestra su importancia para la transmisión mejorada del virus en humanos.
Información obtenida de:Plante, J. A., Liu, Y., Liu, J., Xia, H., Johnson, B. A., Lokugamage, K. G., Zhang, X., Muruato, A. E., Zou, J., Fontes-Garfias, C. R., Mirchandani, D., Scharton, D., Bilello, J. P., Ku, Z., An, Z., Kalveram, B., Freiberg, A. N., Menachery, V. D., Xie, X., . . . Shi, P. (2020). Spike mutation D614G alters SARS-CoV-2 fitness. Nature, 592(7852), 116-121. https://doi.org/10.1038/s41586-020-2895-3
La proteína Spike del SARS-CoV-2 ha sido fundamental en la evolución y propagación del virus entre humanos, ya que mutaciones clave en esta proteína permitieron al virus mejorar su capacidad de infectar y evadir el sistema inmune. A través del análisis de la composición de bases, el porcentaje de GC y la comparación de variantes, observamos que, aunque la estructura general del gen Spike se ha mantenido bastante conservada —sugiriendo una fuerte presión evolutiva para preservar su función—, ciertas mutaciones específicas como N501Y, E484K, L452R y D614G han tenido un impacto crítico en aumentar la infectividad, la capacidad de escape inmune y la transmisibilidad del virus. Estas adaptaciones reflejan un proceso de selección natural impulsado por la supervivencia viral en un entorno de presión inmunológica humana.
A partir de los gráficos y análisis filogenéticos, también queda claro que la evolución del Spike no fue un proceso lineal, sino más bien marcado por múltiples episodios de divergencia acelerada según las condiciones epidemiológicas de cada región. Mutaciones estratégicas permitieron al virus mejorar su afinidad por el receptor humano ACE2 o esquivar la respuesta inmune, lo que explica las distintas trayectorias evolutivas de variantes como Alfa, Delta, Gamma y Omicron. Comprender a fondo cómo estas mutaciones modificaron la biología del virus no solo ayuda a explicar la magnitud de la pandemia, sino que también ofrece una base crucial para diseñar vacunas y terapias más efectivas frente a futuros retos virales.
Johns Hopkins University & Medicine. (2024). COVID-19 Map. https://coronavirus.jhu.edu/map.html Worldometers. (2025). Mexico Coronavirus Statistics. https://www.worldometers.info/coronavirus/country/mexico/ Secretaría de Salud de Nuevo León. (2023, 13 abril). Reporte diario de COVID-19 NL [PDF]. https://saludnl.gob.mx/regulacion-sanitaria/wp-content/uploads/2023/04/RP-SALUD-13-DE-ABRIL-2023.pdf Gobierno de Monterrey. (2022). Plan Municipal de Desarrollo 2021-2024. https://monterrey.gob.mx Korber, B., Fischer, W. M., Gnanakaran, S., et al. (2020). Spike mutation D614G alters SARS-CoV-2 fitness. Nature, 582, 467-470. https://doi.org/10.1038/s41586-020-2895-3 Centers for Disease Control and Prevention [CDC]. (2021). Emergence of SARS-CoV-2 B.1.1.7 Lineage — United States, December 29 2020–January 12 2021. MMWR, 70(3), 95-99. https://doi.org/10.15585/mmwr.mm7003e2 World Health Organization [WHO]. (2024). Tracking SARS-CoV-2 Variants. https://www.who.int/activities/tracking-SARS-CoV-2-variants Sabino, E. C., et al. (2021). Resurgence of COVID-19 in Manaus, Brazil, despite high seroprevalence. The Lancet, 397(10273), 452-455. https://doi.org/10.1016/S0140-6736(21)00183-5 Hoffmann, M., Kleine-Weber, H., Schroeder, S., Krüger, N., Herrler, T., Erichsen, S., … & Pöhlmann, S. (2020). SARS-CoV-2 cell entry depends on ACE2 and TMPRSS2 and is blocked by a clinically proven protease inhibitor. Cell, 181(2), 271-280.e8. https://doi.org/10.1016/j.cell.2020.02.052
Piccoli, L., Park, Y. J., Tortorici, M. A., Czudnochowski, N., Havenar-Daughton, C., Adachi, Y., … & Boons, G. J. (2020). Mapping neutralizing and immunodominant sites on the SARS-CoV-2 spike receptor-binding domain by structure-guided high-resolution serology. Cell, 183(4), 1024-1042.e21. https://doi.org/10.1016/j.cell.2020.09.037
Harvey, W. T., Carabelli, A. M., Jackson, B., Gupta, R. K., Thomson, E. C., Harrison, E. M., … & Robertson, D. L. (2021). SARS-CoV-2 variants, spike mutations and immune escape. Nature Reviews Microbiology, 19(7), 409-424. https://doi.org/10.1038/s41579-021-00573-0
Tao, K., Tzou, P. L., Nouhin, J., Gupta, R. K., de Oliveira, T., & Shapiro, B. J. (2021). The biological and clinical significance of emerging SARS-CoV-2 variants. Nature Reviews Genetics, 22(12), 757-773. https://doi.org/10.1038/s41576-021-00358-1