Nothing
library(testthat)
library(neuroim2)
context("backend parity")
backend_fixture <- system.file("extdata", "global_mask_v4.nii", package = "neuroim2")
load_backend_vecs <- function() {
list(
normal = read_vec(backend_fixture, mode = "normal"),
mmap = read_vec(backend_fixture, mode = "mmap"),
filebacked = read_vec(backend_fixture, mode = "filebacked")
)
}
test_that("read_vec backends expose consistent dimensions and classes", {
vecs <- load_backend_vecs()
expect_s4_class(vecs$normal, "DenseNeuroVec")
expect_s4_class(vecs$mmap, "MappedNeuroVec")
expect_s4_class(vecs$filebacked, "FileBackedNeuroVec")
expect_equal(dim(vecs$normal), dim(vecs$mmap))
expect_equal(dim(vecs$normal), dim(vecs$filebacked))
expect_equal(spacing(vecs$normal), spacing(vecs$mmap))
expect_equal(spacing(vecs$normal), spacing(vecs$filebacked))
expect_equal(origin(vecs$normal), origin(vecs$mmap))
expect_equal(origin(vecs$normal), origin(vecs$filebacked))
expect_equal(trans(vecs$normal), trans(vecs$mmap))
expect_equal(trans(vecs$normal), trans(vecs$filebacked))
})
test_that("read_vec backends agree on direct indexing", {
vecs <- load_backend_vecs()
ref <- vecs$normal
ind <- c(1L, 25L, 100L, 250L)
cds <- index_to_grid(space(ref), ind)
expect_equal(vecs$mmap[1, 1, 1, ], ref[1, 1, 1, ])
expect_equal(vecs$filebacked[1, 1, 1, ], ref[1, 1, 1, ])
expect_equal(vecs$mmap[1:2, 2, 3, 3:4], ref[1:2, 2, 3, 3:4])
expect_equal(vecs$filebacked[1:2, 2, 3, 3:4], ref[1:2, 2, 3, 3:4])
expect_equal(vecs$mmap[ind], ref[ind])
expect_equal(vecs$filebacked[ind], ref[ind])
expect_equal(vecs$mmap[cds], ref[cds])
expect_equal(vecs$filebacked[cds], ref[cds])
})
test_that("read_vec backends agree on series extraction", {
vecs <- load_backend_vecs()
ref <- vecs$normal
voxel_coords <- rbind(
c(1, 1, 1),
c(2, 2, 2),
c(3, 3, 3)
)
linear_idx <- c(1L, 10L, 100L)
expect_equal(series(vecs$mmap, 1, 1, 1), series(ref, 1, 1, 1))
expect_equal(series(vecs$filebacked, 1, 1, 1), series(ref, 1, 1, 1))
expect_equal(series(vecs$mmap, voxel_coords), series(ref, voxel_coords))
expect_equal(series(vecs$filebacked, voxel_coords), series(ref, voxel_coords))
expect_equal(series(vecs$mmap, linear_idx), series(ref, linear_idx))
expect_equal(series(vecs$filebacked, linear_idx), series(ref, linear_idx))
})
test_that("read_vec backends agree on sub_vector and matrix conversion", {
vecs <- load_backend_vecs()
ref <- vecs$normal
expect_equal(as.matrix(sub_vector(vecs$mmap, 1:3)), as.matrix(sub_vector(ref, 1:3)))
expect_equal(as.matrix(sub_vector(vecs$filebacked, 1:3)), as.matrix(sub_vector(ref, 1:3)))
expect_equal(as(vecs$mmap, "matrix"), as(ref, "matrix"))
expect_equal(as(vecs$filebacked, "matrix"), as(ref, "matrix"))
})
test_that("read_vec backends agree on ROI extraction paths", {
vecs <- load_backend_vecs()
ref <- vecs$normal
roi_idx <- 1:10
roi_ref <- series_roi(ref, roi_idx)
roi_vol <- ROIVol(space(drop_dim(space(ref))), coords(roi_ref), data = rep(1, nrow(coords(roi_ref))))
expect_equal(values(series_roi(vecs$mmap, roi_idx)), values(roi_ref))
expect_equal(values(series_roi(vecs$filebacked, roi_idx)), values(roi_ref))
expect_equal(values(series_roi(vecs$mmap, roi_vol)), values(series_roi(ref, roi_vol)))
expect_equal(values(series_roi(vecs$filebacked, roi_vol)), values(series_roi(ref, roi_vol)))
})
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.