Nothing
context("Testing basic PDB structure operation")
test_that("read.pdb() reads a normal pdb file", {
## Simple test with PDB ID 1HEL
file <- system.file("examples/1dpx.pdb",package="bio3d")
invisible(capture.output(pdb <- read.pdb(file)))
expect_is(pdb$atom, "data.frame")
expect_true(inherits(pdb, "pdb"))
expect_true(inherits(pdb$xyz, "xyz"))
expect_equal(nrow(pdb$atom), 1177)
expect_equal(sum(pdb$calpha), 129)
expect_equal(sum(pdb$atom$resid=="HOH"), 177)
expect_equal(sum(pdb$atom$resid=="CL"), 2)
expect_that(sum(pdb$xyz), equals(44657.12, tolerance=1e-6))
expect_equal(sum(pdb$atom$type=="ATOM"), 998)
expect_equal(sum(pdb$atom$type=="HETATM"), 179)
expect_equal(pdb$remark$biomat$num, 1)
expect_equal(pdb$remark$biomat$chain[[1]], "A")
true_mat <- matrix(c(1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0), nrow=3, byrow=TRUE)
expect_equivalent(pdb$remark$biomat$mat[[1]][[1]], true_mat)
invisible(capture.output(spdb <- read.pdb(file, ATOM.only=TRUE)))
expect_equal(spdb$atom, pdb$atom)
expect_equal(spdb$xyz, pdb$xyz)
expect_equal(spdb$calpha, pdb$calpha)
expect_true(is.null(spdb$helix))
expect_true(is.null(spdb$sheet))
expect_true(is.null(spdb$seqres))
expect_true(is.null(spdb$remark))
})
test_that("read.pdb() reads and stores data properly", {
skip_on_cran()
skip_on_travis()
datdir <- tempdir()
suppressWarnings(
invisible(capture.output(get.pdb(c("3DRC", "1P3Q", "1SVK", "1L2Y"), path=datdir,
overwrite = FALSE, verbose = FALSE)))
)
# "3DRC" example PDB has a CA calcium ion and a CA containing ligand.
expect_error(read.pdb("nothing"))
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "3DRC.pdb"))))
expect_equal(nrow(pdb$atom), 2954)
expect_equal(sum(pdb$calpha), 318)
# expect_equivalent(aa321(pdb$seqres), pdbseq(pdb))
expect_equal(pdb$xyz[1:6], c(24.317, 59.447, 4.079, 25.000, 58.475, 4.908), tolerance=1e-6)
expect_equal(length(pdb$helix$start), 8)
expect_equal(length(pdb$sheet$start), 16)
# "1SVK" example PDB has alternate location indicator
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1SVK.pdb"))))
expect_equal(sum(pdb$calpha), 313)
expect_equal(sum(pdb$atom$resno==47), 6)
expect_equal(sum(pdb$atom$resid=="GDP"), 28)
# multi-model structure
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1L2Y.pdb"), multi=TRUE)))
expect_equal(dim(pdb$xyz), c(38, 912))
expect_equal(pdb$xyz[20, 1:6], c(-8.559, 6.374, -1.226, -7.539, 6.170, -0.168), tolerance=1e-6)
# one atom
cat("ATOM 1 N SER Q 398 48.435 21.981 -6.393 1.00 56.10 N\n",
file=file.path(datdir, "t1a.pdb"))
pdb <- read.pdb(file.path(datdir, "t1a.pdb"))
expect_is(pdb$atom, "data.frame")
### write.pdb()
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "3DRC.pdb"))))
write.pdb(pdb, file=file.path(datdir, "t1.pdb"))
invisible(capture.output(pdb1 <- read.pdb(file.path(datdir, "t1.pdb"))))
expect_identical(pdb$atom, pdb1$atom)
expect_identical(pdb$xyz, pdb1$xyz)
expect_identical(pdb$calpha, pdb1$calpha)
# multi-model structure
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1L2Y.pdb"), multi=TRUE)))
write.pdb(pdb, file=file.path(datdir, "t2.pdb"))
invisible(capture.output(pdb2 <- read.pdb(file.path(datdir, "t2.pdb"), multi=TRUE)))
# SSE, SEQRES, and REMARK missing in write.pdb()
pdb[c("seqres", "helix", "sheet", "remark", "call")] <- NULL
pdb2[c("seqres", "helix", "sheet", "remark", "call")] <- NULL
expect_identical(pdb, pdb2)
### trim.pdb()
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1P3Q.pdb"))))
pdb1 <- trim.pdb(pdb, inds = atom.select(pdb, "calpha", verbose=FALSE))
expect_is(pdb1, "pdb")
expect_equal(nrow(pdb1$atom), 228)
expect_equal(sum(pdb1$calpha), 228)
expect_equivalent(pdb1$helix$start, pdb$helix$start)
expect_equivalent(sort(pdb1$sheet$end), sort(pdb$sheet$end))
pdb2 <- trim.pdb(pdb, inds = atom.select(pdb, "protein", chain="U", verbose=FALSE))
expect_equal(nrow(pdb2$atom), 593)
expect_equal(sum(pdb2$calpha), 74)
expect_equivalent(pdb2$helix, list(start=c(22, 37, 56), end=c(35, 39, 60),
chain=rep("U",3), type=c("1", "5", "5")))
expect_equivalent(pdb2$sheet, list(start=c(12,2,66,41,48), end=c(16,7,71,45,49),
chain=rep("U",5), sense=c("0","-1","1","-1","-1")))
})
test_that("read.pdb() reads PDB with ' in atom names", {
skip_on_cran()
skip_on_travis()
datdir <- tempdir()
invisible(capture.output(get.pdb("1H5T", path=datdir,
overwrite = FALSE, verbose = FALSE)))
invisible(capture.output(pdb <- read.pdb(file.path(datdir, "1H5T.pdb"))))
sele <- atom.select(pdb, "notprotein")
expected <- c("TYD", "DAU", "SO4", "HOH")
expect_equal(unique(pdb$atom$resid[sele$atom]), expected)
sele <- atom.select(pdb, elety="C1'")
expected <- "C1'"
expect_equal(unique(pdb$atom$elety[sele$atom]), expected)
})
test_that("read.pdb() (cpp) gives the same results as read.pdb2() (old R version)", {
skip_on_cran()
skip_on_travis()
datdir <- tempdir()
suppressWarnings(
invisible(capture.output(get.pdb("1H5T", path=datdir,
overwrite = FALSE, verbose = FALSE)))
)
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1H5T.pdb"))))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1H5T.pdb"))))
expect_equal(pdb0$atom, pdb1$atom)
expect_equal(pdb0$xyz, pdb1$xyz)
expect_equal(pdb0$sheet, pdb1$sheet)
expect_equal(pdb0$helix, pdb1$helix)
expect_equal(pdb0$calpha, pdb1$calpha)
expect_equal(pdb0$seqres, pdb1$seqres)
expect_equal(pdb0$remark, pdb1$remark)
## 1TOH - more remarks
suppressWarnings(
invisible(capture.output(get.pdb("2TOH", path=datdir,
overwrite = FALSE, verbose = FALSE)))
)
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "2TOH.pdb"))))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "2TOH.pdb"))))
expect_equal(pdb0$atom, pdb1$atom)
expect_equal(pdb0$xyz, pdb1$xyz)
expect_equal(pdb0$sheet, pdb1$sheet)
expect_equal(pdb0$helix, pdb1$helix)
expect_equal(pdb0$calpha, pdb1$calpha)
expect_equal(pdb0$seqres, pdb1$seqres)
expect_equal(pdb0$remark, pdb1$remark)
## multi = TRUE
invisible(capture.output(get.pdb("2EYB", path=datdir,
overwrite = FALSE, verbose = FALSE)))
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "2EYB.pdb"), multi=TRUE)))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "2EYB.pdb"), multi=TRUE)))
expect_equal(pdb0$xyz, pdb1$xyz)
expect_equal(pdb0$atom, pdb1$atom)
## rm.insert = TRUE
suppressWarnings(
invisible(capture.output(get.pdb("1FUJ", path=datdir,
overwrite = FALSE, verbose = FALSE)))
)
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1FUJ.pdb"), rm.insert=TRUE)))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1FUJ.pdb"), rm.insert=TRUE)))
expect_equal(pdb0$xyz, pdb1$xyz)
expect_equal(pdb0$atom, pdb1$atom)
## rm.alt = TRUE/FALSE
invisible(capture.output(get.pdb("1RX2", path=datdir,
overwrite = FALSE, verbose = FALSE)))
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1RX2.pdb"), rm.alt=TRUE)))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1RX2.pdb"), rm.alt=TRUE)))
expect_equal(pdb0$xyz, pdb1$xyz)
expect_equal(pdb0$atom, pdb1$atom)
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1RX2.pdb"), rm.alt=FALSE)))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1RX2.pdb"), rm.alt=FALSE)))
expect_equal(pdb0$xyz, pdb1$xyz)
expect_equal(pdb0$atom, pdb1$atom)
## ATOM.only = TRUE
if(FALSE) {
suppressWarnings(
invisible(capture.output(get.pdb("1FUJ", path=datdir,
overwrite = FALSE, verbose = FALSE)))
)
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1FUJ.pdb"), ATOM.only=TRUE)))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1FUJ.pdb"), ATOM.only=TRUE)))
expect_equal(attributes(pdb0), attributes(pdb1))
}
## read PDB with 'insert'
suppressWarnings(
invisible(capture.output(get.pdb("1FUJ", path=datdir,
overwrite = FALSE, verbose = FALSE)))
)
invisible(capture.output(pdb0 <- read.pdb(file.path(datdir, "1FUJ.pdb"))))
invisible(capture.output(pdb1 <- read.pdb2(file.path(datdir, "1FUJ.pdb"))))
for(i in names(pdb1)) {
if(i != 'call') {
expect_equal(pdb0[[i]], pdb1[[i]])
}
}
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.