knitr::opts_chunk$set(echo = TRUE) library(bio3d) library(r3dmol) library(magrittr) library(glue)
En primer lugar, cargamos los pdbs en conformación activa ya superpuestos (descargados de POSA):
file.path <- "../inst/extdata/external/POSA/" pdbs.act.list <- paste0(file.path, "act/") %>% dir(pattern = "*.pdb") %>% purrr::set_names() %>% purrr::map(~paste0(file.path, "act/", .x) %>% read.pdb()) pdbs.act <- pdbaln(pdbs.act.list, fit = FALSE) pdbs.act$id <- substr(basename(names(pdbs.act.list)), 1, 5)
Empezaremos evaluando la calidad de los mismos. Para ello, graficamos el factor B:
pdbs.act.list %>% purrr::walk2(names(.),~.x %$% plot.bio3d(atom$b[calpha], typ="l", ylab="Factor B", main= glue("Factor B por residuo para {.y}")))
Comprobamos que las secuencias de ambas estructuras son idénticas:
seqidentity(pdbs.act)
y ahora calculamos el RMSD de ambas estructuras:
rmsd(pdbs.act)
Ahora, haremos lo mismo para las estructuras con baja actividad:
pdbs.low.list <- paste0(file.path, "low_act/") %>% dir(pattern = "*.pdb") %>% purrr::set_names() %>% purrr::map(~paste0(file.path, "low_act/", .x) %>% read.pdb()) pdbs.low <- pdbaln(pdbs.low.list, fit = FALSE) pdbs.low$id <- substr(basename(names(pdbs.low.list)), 1, 5)
Empezaremos evaluando la calidad de los mismos. Para ello, graficamos el factor B:
pdbs.low.list %>% purrr::walk2(names(.),~.x %$% plot.bio3d(atom$b[calpha], typ="l", ylab="Factor B", main= glue("Factor B por residuo para {.y}")))
Ahora, visualizamos la matriz de identidad de secuencia
seqidentity(pdbs.low)
y ahora calculamos el RMSD entre pares. Para poder visualizar la matriz de RMSD haremos un dendograma:
rd <- rmsd(pdbs.low) hc.rd <- hclust(as.dist(rd)) hclustplot(hc.rd, k = 1, labels=pdbs.low$id, cex=0.5, ylab="RMSD (Å)", main="RMSD Cluster Dendrogram", fillbox=FALSE)
A continuación, realizamos un PCA con las estructuras de baja actividad y de alta actividad. Las conformaciones de alta actividad de unión a actina se muestran en azul y las de baja en rojo:
pc <- pdbaln(c(pdbs.act.list, pdbs.low.list), fit = FALSE)%>% pca(rm.gaps=TRUE) plot(pc, col= c(rep("blue",length(pdbs.act.list)), rep("red",length(pdbs.low.list))))
En este caso, nos puede interesar calcular el RMSF para las estructuras inactivadas:
rf <- rmsf(xyz = pdbs.low$xyz) plot.bio3d(rf, ylab="RMSF (Å)", xlab="Residue No.", typ="l")
Vamos a comparar los ángulos diedros de las dos estructuras de fascina wild-type, en su conformación activa e inactiva:
pdbs <- pdbaln(c(pdbs.act.list, pdbs.low.list), fit = FALSE) pdbs$id <- c(substr(basename(names(pdbs.act.list)), 1, 5), substr(basename(names(pdbs.low.list)), 1, 5)) ind.a <- grep("3llpA", pdbs$id) ind.b <- grep("3p53A", pdbs$id) # Exclude gaps in the two structures to make them comparable gaps.xyz2 <- gap.inspect(pdbs$xyz[c(ind.a, ind.b), ]) a.xyz <- pdbs$xyz[ind.a, gaps.xyz2$f.inds] b.xyz <- pdbs$xyz[ind.b, gaps.xyz2$f.inds] # Compare CA based pseudo-torsion angles between the two structures a <- torsion.xyz(a.xyz, atm.inc=1) b <- torsion.xyz(b.xyz, atm.inc=1) d.ab <- wrap.tor(a-b) d.ab[is.na(d.ab)] <- 0 # Plot results with SSE annotation plot.bio3d(abs(d.ab), typ="h", xlab="Residue No.", ylab = "Difference Angle")
Vamos a determinar el área más invariante de las estructuras en conformación activa e inactiva:
core.act <- core.find(pdbs.act) core.low <- core.find(pdbs.low) core.act
Vamos a comenzar examinando el core invariante de las conformaciones activas:
write.pdb(xyz=pdbs.act$xyz[1,core.act$xyz], file="core.act.pdb") write.pdb(xyz=pdbs.low$xyz[1,core.low$xyz], file="core.low.pdb")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.