Video de YouTube

Link: https://youtu.be/Yic0VgbLT3M

Codigo del árbol filogenetico

En esta sección tendremos la oportunidad de ver un análisis con respecto a diferentes virus que en teoría son parte de la misma familia de virus. En esta ocasión tendremos la oportunidad de ver diferentes gráficos que nos ayudaran a poder ver las relaciones entre cada virus y cómo es que se parecen uno entre otro. Y al final veremos si es que los virus seleccionados en realidad son de la misma familia o sabes si es que pertenecen a otra rama de virus.

Paso 1

Importamos las librerías necesarias para hacer el análisis, las cuales son ape, Biostrings, DECIPHER, sequinr, ggplot2, viridis, ade4 y grindExtra.

library(ape)
library(Biostrings)
## Loading required package: BiocGenerics
## 
## Attaching package: 'BiocGenerics'
## The following objects are masked from 'package:stats':
## 
##     IQR, mad, sd, var, xtabs
## The following objects are masked from 'package:base':
## 
##     anyDuplicated, append, as.data.frame, basename, cbind, colnames,
##     dirname, do.call, duplicated, eval, evalq, Filter, Find, get, grep,
##     grepl, intersect, is.unsorted, lapply, Map, mapply, match, mget,
##     order, paste, pmax, pmax.int, pmin, pmin.int, Position, rank,
##     rbind, Reduce, rownames, sapply, setdiff, sort, table, tapply,
##     union, unique, unsplit, which.max, which.min
## Loading required package: S4Vectors
## Loading required package: stats4
## 
## Attaching package: 'S4Vectors'
## 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:grDevices':
## 
##     windows
## Loading required package: XVector
## Loading required package: GenomeInfoDb
## 
## Attaching package: 'Biostrings'
## The following object is masked from 'package:ape':
## 
##     complement
## The following object is masked from 'package:base':
## 
##     strsplit
library(DECIPHER)
## Loading required package: RSQLite
## Loading required package: parallel
library(seqinr)
## 
## Attaching package: 'seqinr'
## The following object is masked from 'package:Biostrings':
## 
##     translate
## The following objects are masked from 'package:ape':
## 
##     as.alignment, consensus
library(ggplot2)
library(viridis)
## Loading required package: viridisLite
library(ade4)
## 
## Attaching package: 'ade4'
## The following object is masked from 'package:Biostrings':
## 
##     score
## The following object is masked from 'package:BiocGenerics':
## 
##     score
library(gridExtra)
## 
## Attaching package: 'gridExtra'
## The following object is masked from 'package:BiocGenerics':
## 
##     combine

Paso 2

En esta parte del código vemos que el primer paso es cargar los genomas de los virus al código, esto se hace por medio de la librería ape la cual nos facilitó esta búsqueda de archivos. Ya que tenemos los archivos tenemos que obtener las secuencias de cada uno de los virus a analizar para ahora sí, alinear dichas secuencias por medio de la librería DECIPHER. Esto se hace con el propósito de ver que tan parecidos pueden llegar a ser diferentes genomas de diferentes viruses.

#Utilizando la libreria ape accedmos directamente a la basa de datos de NCBI y obtenemos los genomas de forma más sencilla sin necesidad de descargar los archivos FASTA

famCov <-c('NC_038309','NC_039199','JQ923422','JN562727','EU326526','NC_001803','NC_019843','NC_026438','NC_006310','NC_045512')
famCov_secuencias <- read.GenBank(famCov, as.character=TRUE)

#Utilizando la libreria Biostrings y escribimos todas las secuencias en un archivo FASTA
write.dna(famCov_secuencias,  file ="famCov_secuencias.fasta", format = "fasta", append = FALSE, nbcol = 6, colsep = " ", colw = 10)

# Cargamos las secuencias del Archivo Que creamos anteriormente
cov_seq_na <- readDNAStringSet("famCov_secuencias.fasta", format = "fasta")
## Warning in .Call2("fasta_index", filexp_list, nrec, skip, seek.first.rec, :
## reading FASTA file famCov_secuencias.fasta: ignored 10672 invalid one-letter
## sequence codes
#Utilizamos la Libreria DECIPHER para alienar las secuencias
cov_seq_na <- OrientNucleotides(cov_seq_na)
## ========================================================================================================================================================================================================
## 
## Time difference of 0.24 secs
cov_seq_al <- AlignSeqs(cov_seq_na)
## Determining distance matrix based on shared 11-mers:
## ================================================================================
## 
## Time difference of 0.23 secs
## 
## Clustering into groups by similarity:
## ================================================================================
## 
## Time difference of 0.01 secs
## 
## Aligning Sequences:
## ================================================================================
## 
## Time difference of 160.3 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 111.17 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
## 
## Refining the alignment:
## ================================================================================
## 
## Time difference of 646.87 secs
#Guardamos el resultado en un archivo
writeXStringSet(cov_seq_al, file="alin_cov.fasta")

Paso 3

Ya que tenemos alineadas las secuencias pasamos a crear el árbol filogenético. Usamos ggplot para graficar dicho árbol filogenético y ver las similitudes entre cada uno de los genomas establecidos anteriormente.

#En esta seccion se busca cargar la alineacion y generar la matriz de distancia
alin_cov <- read.alignment("alin_cov.fasta", format = "fasta")
dist_mat_al <- dist.alignment(alin_cov, matrix = "similarity")

#Graficamos la matriz
temp<- as.data.frame(as.matrix(dist_mat_al))
table.paint(temp, cleg=0, clabel.row=.5, clabel.col=.5) + scale_color_viridis()

## NULL
#Graficamos el arbol
cov_tree <- nj(dist_mat_al)
cov_tree <- ladderize(cov_tree)

plot(cov_tree, cex = 0.6)
title("Arbol filogenetico familia Coronavirus")

Comentarios del árbol

En la gráfica anterior podemos ver la relación (Parentesco) que hay entre los 10 virus diferentes del análisis. Es importante recordar que entre menos distancia haya entre un virus y otro en el árbol significa que se relacionan más entre ellos. Una descripción breve del árbol es respecto a las relaciones de los virus que más se parecen entre ellos (en su genoma) y en la que menos se parecen entre sí (También en el genoma). Por ejemplo, el virus JN562727 y el virus NC038309, estos 2 virus en el árbol se encuentran hasta abajo y estos 2 están relacionados ampliamente, esto se puede ver ya que se encuentran en la misma rama del árbol (Es decir que la distancia que los separa uno del otro es la mínima que hay en el árbol). En la otra mano podemos ver á los virus NC045512 y NC028309 los cuales son los virus de los extremos, esto significa que la distancia que hay entre ellos es la máxima posible del árbol y esto hace que estos 2 virus si se relacionan pero no tan estrechamente como el ejemplo anterior.

Paso 4

Algo que es importante saber de los genomas de cada virus, esta información nos permite poder tener un poco más de contexto con respecto a las similitudes entre los genomas. Pudiera darse el caso en el que los genomas tienen una composición de nucleótidos muy similar pero son de tamaños diferentes, esto hace que en esencia se parte de la misma familia pero no se parece a su código genético.

#Imprimimos los tamaños de cada secuencia
paste('Enterovirus :', length(famCov_secuencias[1][[1]]), 'pb')
## [1] "Enterovirus : 7295 pb"
paste('Metapneumovirus :', length(famCov_secuencias[2][[1]]),'pb')
## [1] "Metapneumovirus : 13350 pb"
paste('Bocaparvovirus :', length(famCov_secuencias[3][[1]]),'pb')
## [1] "Bocaparvovirus : 5543 pb"
paste('Rhinovirus A :', length(famCov_secuencias[4][[1]]),'pb')
## [1] "Rhinovirus A : 6843 pb"
paste('Parainfluenza 3 :', length(famCov_secuencias[5][[1]]),'pb')
## [1] "Parainfluenza 3 : 15462 pb"
paste('RSV :', length(famCov_secuencias[6][[1]]),'pb')
## [1] "RSV : 15191 pb"
paste('MERS :', length(famCov_secuencias[7][[1]]),'pb')
## [1] "MERS : 30119 pb"
paste('Influenza B:', length(famCov_secuencias[8][[1]]),'pb')
## [1] "Influenza B: 2280 pb"
paste('Infuenza C:', length(famCov_secuencias[9][[1]]),'pb')
## [1] "Infuenza C: 2073 pb"
paste('Sars Cov 2:', length(famCov_secuencias[10][[1]]),'pb')
## [1] "Sars Cov 2: 29903 pb"

Paso 5

Finalmente, graficamos la composición de cada uno de los genomas de cada virus para poder analizar las similitudes entre cada genoma y así verificar si es que son parte de la misma familia o saber cual de los virus es parte de otra familia.

#Obtenemos los valores de cada nucleotido para cada genoma y graficaremos cada uno de los genomas para ver su parecido

nombres_cov <-c("Enterovirus", "Metapneumovirus", "Bocaparvovirus", "Rhinovirus A", "Parainfluenza 3", "RSV", "MERS", "Influenza B", "Infuenza C", "Sars Cov 2")

#Contamos nucleotidos
nuc_enter <- as.data.frame(count(famCov_secuencias[1][[1]],1))
nuc_meta <- as.data.frame(count(famCov_secuencias[2][[1]],1))
nuc_boca <- as.data.frame(count(famCov_secuencias[3][[1]],1))
nuc_rhino <- as.data.frame(count(famCov_secuencias[4][[1]],1))
nuc_parainf <- as.data.frame(count(famCov_secuencias[5][[1]],1))
nuc_RSV <- as.data.frame(count(famCov_secuencias[6][[1]],1))
nuc_mers <- as.data.frame(count(famCov_secuencias[7][[1]],1))
nuc_IB <- as.data.frame(count(famCov_secuencias[8][[1]],1))
nuc_IC <- as.data.frame(count(famCov_secuencias[9][[1]],1))
nuc_SC2 <- as.data.frame(count(famCov_secuencias[10][[1]],1))

#Creamos las graficas
enter_gr <- ggplot(data = nuc_enter, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[1]) 
meta_gr <- ggplot(data = nuc_meta, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[2])
boca_gr <- ggplot(data = nuc_boca, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[3])
rhino_gr <- ggplot(data = nuc_rhino, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[4]) 
parainf_gr <- ggplot(data = nuc_parainf, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[5]) 
RSV_gr <- ggplot(data = nuc_RSV, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[6]) 
mers_gr <- ggplot(data = nuc_mers, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[7]) 
IB_gr <- ggplot(data = nuc_IB, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[8]) 
IC_gr <- ggplot(data = nuc_IC, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[9]) 
SC2_gr <- ggplot(data = nuc_SC2, mapping = aes(x=Var1,y=Freq, fill=Var1)) + geom_bar(stat = 'identity') + theme_grey() + xlab(nombres_cov[10])


#Comando para graficar
grafica<-c(grid.arrange(enter_gr, meta_gr, boca_gr, rhino_gr, parainf_gr, RSV_gr, mers_gr, IB_gr, IC_gr, SC2_gr, ncol=4))

Comentarios de las graficas

Lo que se puede ver en las gráficas son las composiciones de nucleótidos de cada virus. Algo importante a resaltar de las gráficas es que la composición de los nucleótidos es bastante parecida entre sí, estas relaciones también se pueden llegar a ver en el árbol filogenético que se puede ver anteriormente. Es evidente que hay cambios entre cada gráfica y esto es necesario ya que si el genoma fuera el mismo el virus sería exactamente el mismo paro gracias a estas diferencias el virus tiene otros efectos y otras propiedades. El hecho de que las gráficas sean similares nos confirma que forman parte de la misma familia de virus (En este caso Coronavirus)

Pensamientos Finales

Durante el análisis estuvo presente la participación de 10 genomas. Como se puede ver en el documento el árbol filogenético incluye los diferentes virus. En este árbol filogenético se puede llegar a apreciar que entre cada uno de los virus hay una diferencia muy similar. Entre ellos hay relaciones que nos sugieren a nosotros que tienen una relación. Por ejemplo, el virus NC 001803 (RSV) y el NC 039199 (Metapneumovirus) estos dos virus se pueden ver que tienen una relación ya que están dentro de la misma rama, entre estos virus se puede ver una ligera diferencia y esto se puede comprobar con la segunda tabla de gráficas, en esta misma podemos ver que la composición de nucleótidos es algo similar, por esto mismo podemos ver que tienen una relación muy estrecha. Esta clase de relaciones se puede ver claramente en el árbol filogenético, pero también podemos ver las relaciones de cómo es que NO se parece un virus al otro, por ejemplo, en el árbol filogenético podemos ver que el virus NC 045512 (Sars Cov 2) y NC 038309 (Enterovirus) son los viruses de los extremos, esto quiere decir que la distancia que hay entre estos 2 virus son la máxima diferencia entre los 10 virus que se ven en el árbol. Esto mismo lo podemos ver en la tabla de gráficas en la que vemos que la composición de nucleótidos, a pesar de tener una similitud en la composición, difieren en algunas cosas y por ende tienen relación pero no son tan parecidos. Gracias a esta serie de análisis nos podemos dar cuenta de cómo es que un virus se relaciona con el otro y además de esto gracias a este tipo de gráficos podemos descartar incluso un virus que pensábamos que era de una misma familia y encontrar discrepancias en nuestras hipótesis.

En este caso nuestra hipótesis es que los 10 virus que están en el análisis son parte de la familia de virus coronavirus. Por medio de la gráfica de el árbol filogenético podemos ver que entre los virus se relacionan por una distancia relativamente similar, casi todos tienen una distancia horizontal similar y esto significa que se relacionan entre sí por casi la misma diferencia. También, otro indicador de que los virus forman parte de la misma familia se puede observar en la composición general de los nucleótidos en el genoma individual de cada virus. Esto lo podemos observar en las gráficas de barras, estas gráficas como se puede ver a simple vista se parecen entre sí la cantidad de cada nucleótido, esto quiere decir que pertenecen a la misma familia de virus.

Referencias