test_that("Label border can be computed", {
testthat::skip_on_cran(); # CRAN maintainers asked me to reduce test time on CRAN by disabling unit tests.
testthat::skip_if(tests_running_on_cran_under_macos(), message = "Skipping on CRAN under MacOS, required test data cannot be downloaded.");
fsbrain::download_optional_data();
subjects_dir = fsbrain::get_optional_data_filepath("subjects_dir");
testthat::skip_if_not(dir.exists(subjects_dir), message="Test data missing.");
subject_id = 'subject1';
surface = 'white';
hemi = 'lh';
atlas = 'aparc';
region = 'bankssts';
# Create a label
lh_annot = subject.annot(subjects_dir, subject_id, hemi, atlas);
lh_label = label.from.annotdata(lh_annot, region);
# Load a surface
lh_surf = subject.surface(subjects_dir, subject_id, surface, hemi);
lh_label_border = label.border(lh_surf, lh_label);
#vis.labeldata.on.subject(subjects_dir, subject_id, lh_label_border$vertices, NULL);
testthat::expect_equal(length(lh_label_border$vertices), 188L);
})
test_that("Label border can be computed, thickened and visualized", {
testthat::skip_on_cran(); # CRAN maintainers asked me to reduce test time on CRAN by disabling unit tests.
testthat::skip_if(tests_running_on_cran_under_macos(), message = "Skipping on CRAN under MacOS, required test data cannot be downloaded.");
testthat::skip_if_not(box.can.run.all.tests(), "This test requires X11 and all test data.");
fsbrain::download_optional_data();
subjects_dir = testdatapath.subjectsdir.full.subject1();
testthat::skip_if_not(dir.exists(subjects_dir), message="Test data missing.");
subject_id = 'subject1';
surface = 'white';
hemi = 'lh';
# Load surface mesh
mesh = subject.surface(subjects_dir, subject_id, surface, hemi);
# Create 3 labels. We just use random points and grow a neighborhood around them.
l1 = mesh.vertex.neighbors(mesh, c(121543), k=5);
l2 = mesh.vertex.neighbors(mesh, c(83862), k=5);
l3 = mesh.vertex.neighbors(mesh, c(46324), k=5);
l2_border = label.border(mesh, l2$vertices);
l3_border_thick = label.border(mesh, l3$vertices, expand_inwards=2L);
vis.labeldata.on.subject(subjects_dir, subject_id, c(l1$vertices, l2_border$vertices, l3_border_thick$vertices), NULL, surface = "inflated");
# Another way to visualize this would be by constructing a mask from several labels. Or by merging them into an annotation:
label_vertices_by_region = list("region1"=l1$vertices, "region2"=l2_border$vertices, "region3"=l3_border_thick$vertices);
annot = label.to.annot(label_vertices_by_region, nrow(mesh$vertices));
vis.subject.annot(subjects_dir, subject_id, annot, hemi, surface = "inflated");
testthat::expect_equal(1L, 1L); # empty tests will be skipped
})
test_that("The borders of all annotation regions can be computed", {
testthat::skip_on_cran(); # CRAN maintainers asked me to reduce test time on CRAN by disabling unit tests.
testthat::skip_if(tests_running_on_cran_under_macos(), message = "Skipping on CRAN under MacOS, required test data cannot be downloaded.");
testthat::skip_if_not(box.can.run.all.tests(), "This test requires X11 and takes a while.");
fsbrain::download_optional_data();
subjects_dir = testdatapath.subjectsdir.full.subject1();
testthat::skip_if_not(dir.exists(subjects_dir), message="Test data missing.");
subject_id = 'subject1';
surface = 'inflated';
hemi = 'lh';
# Load surface mesh
annot = subject.annot(subjects_dir, subject_id, hemi, "aparc");
mesh = subject.surface(subjects_dir, subject_id, surface, hemi);
vertex_colors = annot.outline(annot, mesh); # What we came for: compute outlines of all annot regions
# We could show morphometry data (or whatever) in the white inner parts, but that is a bit overkill imo.
# It is still demonstrated here:
show_background_morph = TRUE;
if(show_background_morph) {
ct = subject.morph.native(subjects_dir, subject_id, "thickness", hemi);
vertex_colors_thickness = adjustcolor(squash::cmap(ct, map = squash::makecmap(ct, colFn = squash::jet)), alpha.f = 0.5);
wi = which(vertex_colors=="white");
vertex_colors[vertex_colors=="white"] = vertex_colors_thickness[wi];
}
vis.color.on.subject(subjects_dir, subject_id, vertex_colors_thickness, NULL);
testthat::expect_equal(1L, 1L); # empty tests will be skipped
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.