Nothing
## -----------------------------------------------------------------------------
library("freesurferformats")
mgh_file = system.file("extdata", "brain.mgz", package = "freesurferformats", mustWork = TRUE)
brain = read.fs.mgh(mgh_file)
cat(sprintf("Read voxel data with dimensions %s. Values: min=%d, mean=%f, max=%d.\n", paste(dim(brain), collapse = 'x'), min(brain), mean(brain), max(brain)));
## -----------------------------------------------------------------------------
brain_with_hdr = read.fs.mgh(mgh_file, with_header = TRUE);
brain = brain_with_hdr$data; # as seen before, this is what we got in the last example (the data).
header = brain_with_hdr$header; # the header
## ---- eval = FALSE------------------------------------------------------------
# header$dtype # int, one of: 0=MRI_UCHAR; 1=MRI_INT; 3=MRI_FLOAT; 4=MRI_SHORT
# header$ras_good_flag # int, 0 or 1. Whether the file contains a valid vox2ras matrix and ras_xform (see header$vox2ras_matrix below)
# header$has_mr_params # int, 0 or 1. Whether the file contains mr_params (see header$mr_params below)
# header$voldim # integer vector or length 4. The volume (=data) dimensions. E.g., c(256, 256, 256, 1) for 3D data.
#
## -----------------------------------------------------------------------------
if(header$has_mr_params) {
mr_params = header$mr_params;
cat(sprintf("MR acquisition parameters: TR [ms]=%f, filp angle [radians]=%f, TE [ms]=%f, TI [ms]=%f\n", mr_params[1], mr_params[2], mr_params[3], mr_params[4]));
}
## -----------------------------------------------------------------------------
if(header$ras_good_flag) {
print(header$vox2ras_matrix);
}
## -----------------------------------------------------------------------------
if(header$ras_good_flag) {
print(header$ras_xform);
}
## ---- eval = FALSE------------------------------------------------------------
# mgh_file = system.file("mystudy", "subject1", "surf", "lh.thickness.fwhm25.fsaverage.mgh")
# cortical_thickness_standard = read.fs.mgh(mgh_file)
## ---- eval = FALSE------------------------------------------------------------
# oro.nifti::orthographic(oro.nifti::nifti(brain))
## -----------------------------------------------------------------------------
library("freesurferformats")
curvfile = system.file("extdata", "lh.thickness", package = "freesurferformats", mustWork = TRUE)
ct = read.fs.curv(curvfile)
## -----------------------------------------------------------------------------
cat(sprintf("Read data for %d vertices. Values: min=%f, mean=%f, max=%f.\n", length(ct), min(ct), mean(ct), max(ct)))
hist(ct, main="lh cortical thickness", xlab="Cortical thickness [mm]", ylab="Vertex count")
## -----------------------------------------------------------------------------
morphfile1 = system.file("extdata", "lh.thickness", package = "freesurferformats", mustWork = TRUE)
thickness_native = read.fs.morph(morphfile1)
## -----------------------------------------------------------------------------
morphfile2 = system.file("extdata", "lh.curv.fwhm10.fsaverage.mgz", package = "freesurferformats", mustWork = TRUE)
curv_standard = read.fs.morph(morphfile2)
curv_standard[curv_standard < -1] = 0; # remove extreme outliers
curv_standard[curv_standard > 1] = 0;
hist(curv_standard, main="lh std curvature", xlab="Mean Curvature [mm^-1], fwhm10", ylab="Vertex count")
## -----------------------------------------------------------------------------
annotfile = system.file("extdata", "lh.aparc.annot.gz", package = "freesurferformats", mustWork = TRUE);
annot = read.fs.annot(annotfile);
## -----------------------------------------------------------------------------
num_vertices_total = length(annot$vertices);
for (vert_idx in c(1, 5000, 123456)) {
cat(sprintf("Vertex #%d with zero-based index %d has label code '%d' which stands for atlas region '%s'\n", vert_idx, annot$vertices[vert_idx], annot$label_codes[vert_idx], annot$label_names[vert_idx]));
}
## -----------------------------------------------------------------------------
ctable = annot$colortable$table;
regions = annot$colortable$struct_names;
for (region_idx in seq_len(annot$colortable$num_entries)) {
cat(sprintf("Region #%d called '%s' has RGBA color (%d %d %d %d) and code '%d'.\n", region_idx, regions[region_idx], ctable[region_idx,1], ctable[region_idx,2], ctable[region_idx,3], ctable[region_idx,4], ctable[region_idx,5]));
}
## -----------------------------------------------------------------------------
r_index = 50; # one-based index as used by R and Matlab
fs_index = annot$vertices[r_index]; # zero-based index as used in C, Java, Python and many modern languages
cat(sprintf("Vertex at R index %d has FreeSurfer index %d and lies in region '%s'.\n", r_index, fs_index, annot$label_names[r_index]));
## -----------------------------------------------------------------------------
region = "bankssts"
thickness_in_region = thickness_native[annot$label_names == region]
cat(sprintf("Region '%s' has %d vertices and a mean cortical thickness of %f mm.\n", region, length(thickness_in_region), mean(thickness_in_region)));
## -----------------------------------------------------------------------------
surface_file = system.file("extdata", "lh.tinysurface", package = "freesurferformats", mustWork = TRUE);
surf = read.fs.surface(surface_file);
cat(sprintf("Loaded surface consisting of %d vertices and %d faces.\n", nrow(surf$vertices), nrow(surf$faces)));
## -----------------------------------------------------------------------------
vertex_index = 5;
v5 = surf$vertices[vertex_index,];
cat(sprintf("Vertex %d has coordinates (%f, %f, %f).\n", vertex_index, v5[1], v5[2], v5[3]));
## -----------------------------------------------------------------------------
face_index = 2;
f2 = surf$faces[face_index,];
cat(sprintf("Face %d consistes of the vertices %d, %d, and %d.\n", face_index, f2[1], f2[2], f2[3]));
## ---- eval = FALSE------------------------------------------------------------
# pmesh = read.fs.surface("~/path/to/mesh.ply");
# my_mesh3d = rgl::tmesh3d(c(t(pmesh$vertices)), c(t(pmesh$faces)), homogeneous=FALSE);
## ---- eval = FALSE------------------------------------------------------------
# curv = Rvcg::vcgCurve(my_mesh3d);
## -----------------------------------------------------------------------------
labelfile = system.file("extdata", "lh.entorhinal_exvivo.label", package = "freesurferformats", mustWork = TRUE);
label = read.fs.label(labelfile);
cat(sprintf("The label consists of %d vertices, the first one is vertex %d.\n", length(label), label[1]));
## -----------------------------------------------------------------------------
lutfile = system.file("extdata", "colorlut.txt", package = "freesurferformats", mustWork = TRUE);
colortable = read.fs.colortable(lutfile, compute_colorcode=TRUE);
head(colortable);
## -----------------------------------------------------------------------------
annotfile = system.file("extdata", "lh.aparc.annot.gz", package = "freesurferformats", mustWork = TRUE);
annot = read.fs.annot(annotfile);
colortable = colortable.from.annot(annot);
head(colortable);
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.