Nothing
# Tests for mghheader functions
testthat::test_that("The native vox2ras matrix can be computed from a conformed volume", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
testthat::expect_true(is.fs.volume(mgh));
# Run `mri_info --vox2ras <volume>` on the OS command line to find the reference value.
known_vox2ras = matrix(c(-1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 127.5005, -98.62726, 79.09527, 1), nrow=4, byrow = FALSE);
vox2ras = mghheader.vox2ras(mgh$header);
testthat::expect_equal(vox2ras, known_vox2ras, tolerance=1e-4);
})
testthat::test_that("The native ras2vox matrix can be computed from a conformed volume", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
testthat::expect_true(is.fs.volume(mgh));
# Run `mri_info --ras2vox <volume>` on the OS command line to find the reference value.
known_ras2vox = matrix(c(-1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 127.5005, 79.09527, 98.62726, 1), nrow=4, byrow = FALSE);
ras2vox = mghheader.ras2vox(mgh$header);
testthat::expect_equal(ras2vox, known_ras2vox, tolerance=1e-4);
})
testthat::test_that("The tkregister vox2ras matrix can be computed from a conformed volume", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
testthat::expect_true(is.fs.volume(mgh));
# Run `mri_info --vox2ras-tkr <volume>` on the OS command line to find the reference value.
known_vox2ras_tkr = matrix(c(-1, 0, 0, 0, 0, 0, -1, 0, 0, 1, 0, 0, 128., -128., 128., 1), nrow=4, byrow = FALSE);
vox2ras_tkr = mghheader.vox2ras.tkreg(mgh$header);
testthat::expect_equal(vox2ras_tkr, known_vox2ras_tkr, tolerance=1e-4);
})
testthat::test_that("The tkregister ras2vox matrix can be computed from a conformed volume", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
testthat::expect_true(is.fs.volume(mgh));
# Run `mri_info --ras2vox-tkr <volume>` on the OS command line to find the reference value.
known_ras2vox_tkr = matrix(c(-1, 0, 0, 0, 0, 0, 1, 0, 0, -1, 0, 0, 128., 128., 128., 1), nrow=4, byrow = FALSE);
ras2vox_tkr = mghheader.ras2vox.tkreg(mgh$header);
testthat::expect_equal(ras2vox_tkr, known_ras2vox_tkr, tolerance=1e-4);
})
testthat::test_that("The slice direction and orientation can be computed from full fs.volume", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
testthat::expect_true(mghheader.is.conformed(mgh));
testthat::expect_equal(mghheader.primary.slice.direction(mgh), 'coronal');
testthat::expect_equal(mghheader.crs.orientation(mgh), 'LIA');
header_noras = mgh$header;
header_noras$ras_good_flag = 0L;
testthat::expect_false(mghheader.is.conformed(header_noras));
})
testthat::test_that("The slice direction and orientation can be computed from the volume header", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
testthat::expect_true(mghheader.is.conformed(header));
testthat::expect_equal(mghheader.primary.slice.direction(header), 'coronal');
testthat::expect_equal(mghheader.crs.orientation(header), 'LIA');
})
testthat::test_that("The mgh header fields can be initialized from a vox2ras matrix", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
vox2ras = mghheader.vox2ras(header);
new_header = mghheader.update.from.vox2ras(header, vox2ras); # Update with the matrix it already has, i.e., set basic fields from matrix.
new_vox2ras = mghheader.vox2ras(new_header); # Recompute matrix from set basic fields.
testthat::expect_equal(vox2ras, new_vox2ras); # This should lead to the same matrix.
})
testthat::test_that("The RAS coordinate of the center voxel (CRAS) can be computed from the RAS coordinate for the first voxel (P0 RAS).", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
vox2ras = mghheader.vox2ras(header);
first_voxel_CRS = c(1L, 1L, 1L);
first_voxel_RAS = vox2ras[,4][0:3]; # the P0 RAS
known_first_voxel_RAS = c(127.5, -98.6273, 79.0953); # known from: `mri_info --p0 path/to/brain.mgz` (in system shell)
testthat::expect_equal(first_voxel_RAS, known_first_voxel_RAS, tolerance=1e-2);
center_RAS = mghheader.centervoxelRAS.from.firstvoxelRAS(header, first_voxel_RAS); # center RAS is also known as 'CRAS'.
known_center_RAS = c(-0.499954, 29.3727, -48.9047); # known from: `mri_info --cras path/to/brain.mgz` (in system shell)
testthat::expect_equal(center_RAS, known_center_RAS, tolerance=1e-2);
})
testthat::test_that("MGH header can be checked for valid RAS", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
testthat::expect_true(mghheader.is.ras.valid(header));
testthat::expect_true(mghheader.is.ras.valid(mgh));
testthat::expect_false(mghheader.is.ras.valid(NULL));
testthat::expect_false(mghheader.is.ras.valid("what"));
header_noras = header;
header_noras$ras_good_flag = 0L;
testthat::expect_false(mghheader.is.ras.valid(header_noras));
header_noras$ras_good_flag = NULL;
testthat::expect_false(mghheader.is.ras.valid(header_noras));
})
testthat::test_that("MGH header can be used to compute tkreg2scanner", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
tkm = mghheader.tkreg2scanner(header);
tkm2 = mghheader.tkreg2scanner(mgh);
header_noras = header;
header_noras$ras_good_flag = 0L;
testthat::expect_error(mghheader.tkreg2scanner(header_noras));
})
testthat::test_that("MGH header can be used to compute scanner2tkreg", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
tkm = mghheader.scanner2tkreg(header);
tkm2 = mghheader.scanner2tkreg(mgh);
header_noras = header;
header_noras$ras_good_flag = 0L;
testthat::expect_error(mghheader.scanner2tkreg(header_noras));
})
testthat::test_that("Two MGH headers can be used to compute vox2vox", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
header = mgh$header;
header2 = header;
v2v = mghheader.vox2vox(header, header2);
v2v = mghheader.vox2vox(mgh, mgh);
header_noras = header;
header_noras$ras_good_flag = 0L;
testthat::expect_error(mghheader.vox2vox(header_noras, header));
testthat::expect_error(mghheader.vox2vox(header, header_noras));
testthat::expect_error(mghheader.vox2vox(header_noras, header_noras));
})
testthat::test_that("Transformation matrices can be adapted to 0-based and 1-based indices", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
vox2ras = mghheader.vox2ras(mgh$header);
vox2ras_for_1based = sm0to1(vox2ras);
vox2ras_for_0based = sm1to0(vox2ras_for_1based);
testthat::expect_equal(vox2ras, vox2ras_for_0based, tolerance=1e-2);
})
testthat::test_that("Transformation from surface RAS to RAS and back works", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
mghheader = mgh$header;
# get surface RAS data: we use mesh coords of a surface.
surface_file = system.file("extdata", "lh.tinysurface", package = "freesurferformats", mustWork = TRUE);
surface = read.fs.surface(surface_file);
ras = surfaceras.to.ras(mghheader, surface$vertices);
# transform back
sras = ras.to.surfaceras(mghheader, ras);
testthat::expect_equal(surface$vertices, sras);
})
testthat::test_that("Transformation from Talairach RAS to RAS and back works", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
mghheader = mgh$header;
# get RAS data: we use mesh coords of a surface (in sras) and transform to RAS.
surface_file = system.file("extdata", "lh.tinysurface", package = "freesurferformats", mustWork = TRUE);
surface = read.fs.surface(surface_file);
ras = surfaceras.to.ras(mghheader, surface$vertices);
# transform to Talairach
talairach = system.file("extdata", "talairach.xfm", package = "freesurferformats", mustWork = TRUE);
talras = ras.to.talairachras(ras, talairach = talairach);
# transform back
orig_ras = talairachras.to.ras(talras, talairach = talairach);
testthat::expect_equal(ras, orig_ras);
})
testthat::test_that("Transformation from surface vertex coord to Talairach space works", {
brain_image = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE);
mgh = read.fs.mgh(brain_image, with_header=TRUE);
mghheader = mgh$header;
# get RAS data: we use mesh coords of a surface (in sras) and transform to RAS.
surface_file = system.file("extdata", "lh.tinysurface", package = "freesurferformats", mustWork = TRUE);
surface = read.fs.surface(surface_file);
ras = surfaceras.to.ras(mghheader, surface$vertices);
# transform to Talairach
talairach = system.file("extdata", "talairach.xfm", package = "freesurferformats", mustWork = TRUE);
talras = surfaceras.to.talairach(surface$vertices, header_cras = mghheader, talairach = talairach);
testthat::expect_equal(nrow(ras), nrow(talras));
})
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.