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

RMSF

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

Ángulos diedros

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

Core

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


currocam/FascinRSCA documentation built on March 21, 2022, 6:29 a.m.