inst/doc/fsbrain_faq.R

## ---- eval = FALSE------------------------------------------------------------
#  lh_surf = freesurferformats::read_nisurface('~/data/subject1_spm12/surf/lh.central.subject1.gii');
#  lh_gyrification = freesurferformats::read.fs.curv('~/data/subject1_spm12/surf/lh.gyrification.subject1');
#  vis.data.on.subject('~/data/', 'subject1_spm12', lh_gyrification, NULL, surface=lh_surf);

## ---- eval = FALSE------------------------------------------------------------
#  library("fsbrain");
#  library("freesurferformats");
#  
#  # Manually load some data from wherever you want. You can also compute this data in R of course, without loading anything.
#  my_data_dir="~/data/study1/subject1"; # just an example.
#  surf_lh <- read.fs.surface(file.path(my_data_dir, "lh_sphere.surf.gii"));
#  surf_rh <- read.fs.surface(file.path(my_data_dir, "whatever/rh_sphere.obj"));
#  pvd_lh = read.fs.morph(file.path(my_data_dir, "lh.curv")); # pvd is for 'per-vertex data'.
#  pvd_rh = read.fs.morph(file.path(my_data_dir, "surf/converted/rh.mean_curvature.mgh"));
#  
#  
#  # Call high-level API for live plot.
#  surfaces = hemilist(surf_lh, surf_rh);
#  pvd  = hemilist(pvd_lh, pvd_rh);
#  cm = vis.subject.pre(surfaces, pvd , draw_colorbar = T, rglactions = list('trans_fun'=limit_fun(-0.2, 0.2)));
#  
#  # Export if you feel like it
#  export(cm, output_img = "~/out.png", grid_like = FALSE, colorbar_legend="Mean curvature [1/mm]");

## ---- eval = FALSE------------------------------------------------------------
#  # read file with bssr package
#  bd = bssr::readdfs('~/data/brainsuite_subject1/subject1_v1_sMRI.brain.dfs');
#  
#  # turn into fs.surface
#  sfb = list('vertices'=t(bd$vertices), faces=t(bd$faces)+1L);
#  class(sfb) = c(class(sfb), 'fs.surface');
#  
#  # show it with fsbrain
#  fsbrain::vis.fs.surface(sfb);

## ---- eval = FALSE------------------------------------------------------------
#  # load and turn into fs.surface
#  bd_thickness = bssr::readdfs('~/data/brainsuite_subject1/subject1_v1_sMRI.pvc-thickness_0-6mm.right.mid.cortex.dfs');
#  sfb_thickness = list('vertices'=t(bd_thickness$vertices), faces=t(bd_thickness$faces)+1L);
#  class(sfb_thickness) = c(class(sfb_thickness), 'fs.surface');
#  
#  # Display the vertex colors:
#  fsbrain::vis.fs.surface(sfb_thickness, col=rgb(t(bd_thickness$vColor)));
#  
#  # Display labels (feel free to change the colormap).
#  fsbrain::vis.fs.surface(sfb_thickness, per_vertex_data = bd_thickness$labels);
#  
#  # Display raw morphometry data (feel free to change the colormap).
#  fsbrain::vis.fs.surface(sfb_thickness, per_vertex_data = bd_thickness$attributes);

## ---- eval = FALSE------------------------------------------------------------
#  fsbrain.set.default.figsize(1200, 1200);

## ---- eval = FALSE------------------------------------------------------------
#  rgloptions = list('windowRect'=c(20, 20, 1800, 1200));
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', rgloptions=rgloptions);

## ---- eval = FALSE------------------------------------------------------------
#  rgla = list('snapshot_png'='~/subject1_thickness.png');
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', rglactions=rgla);

## ---- eval = FALSE------------------------------------------------------------
#  rgla = list('trans_fun'=clip.data);
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'curv', rglactions=rgla);

## ---- eval = FALSE------------------------------------------------------------
#  rgla = list('trans_fun'=limit_fun(2,3));
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', rglactions = rgla);

## ---- eval = FALSE------------------------------------------------------------
#  makecmap_options = list('range'=c(0,6));
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', makecmap_options = makecmap_options);

## ---- eval = FALSE------------------------------------------------------------
#  makecmap_options = list('colFn'=viridis::viridis);
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', makecmap_options=makecmap_options);

## ---- eval = FALSE------------------------------------------------------------
#  install.packages('viridis');

## ---- eval = FALSE------------------------------------------------------------
#  colFn_many_blues = colorRampPalette(RColorBrewer::brewer.pal(9, name="Blues"));
#  makecmap_options = list('colFn'=colFn_many_blues);
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', makecmap_options=makecmap_options);

## ---- eval = FALSE------------------------------------------------------------
#  colFn_sequential = viridis::viridis;
#  colFn_qualitative = function(n) { RColorBrewer::brewer.pal(n, name="Set2"); } # n <= 11
#  colFn_diverging = grDevices::colorRampPalette(RColorBrewer::brewer.pal(11, name="RdBu"));

## ---- eval = FALSE------------------------------------------------------------
#  colFn_sequential = function(n) { grDevices::hcl.colors(n, palette = "viridis"); }
#  colFn_qualitative = function(n) { grDevices::hcl.colors(n, palette = "Dark 3"); }
#  colFn_diverging = function(n) { grDevices::hcl.colors(n, palette = "Blue-Red 3"); }

## ---- eval = FALSE------------------------------------------------------------
#  colFn_sequential_heat = function(n) { grDevices::hcl.colors(n, "YlOrRd"); }

## ---- eval = FALSE------------------------------------------------------------
#  makecmap_options = list('colFn'=colFn_diverging, 'symm'=TRUE);

## ---- eval = FALSE------------------------------------------------------------
#  mkc = list('n'=200L, 'colFn'=viridis::viridis);
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', makecmap_options=mkc);

## ---- eval = FALSE------------------------------------------------------------
#  mkc = list('n'=200L, 'col.na'='orange', 'colFn'=viridis::viridis);
#  vis.subject.morph.native('~/mysubjects_dir', 'subject1', 'thickness', cortex_only = TRUE, makecmap_options=mkc);

## ---- eval = FALSE------------------------------------------------------------
#  # To get coloredmeshes return value only, ignore the visualization:
#  cm = vis.subject.morph.native(sjd, sj, 'thickness', makecmap_options = list('n'=200), cortex_only = T);
#  # Produce high quality tight layout:
#  vislayout.from.coloredmeshes(cm);

## ---- eval = FALSE------------------------------------------------------------
#  output_brain_img = "fsbrain_arranged.png";
#  vislayout.from.coloredmeshes(cm, view_angles = get.view.angle.names(angle_set='t9'), output_img = output_brain_img);

## ---- eval = FALSE------------------------------------------------------------
#  output_cbar_img = "fsbrain_cbar.png";
#  output_final_img = "fsbrain_merged.png";
#  coloredmesh.plot.colorbar.separate(cm, image.plot_extra_options = list('horizontal' = TRUE), png_options = list('filename'=output_cbar_img, 'width'=1800));
#  combine.colorbar.with.brainview.image(output_brain_img, output_cbar_img, output_final_img);

## ---- eval = FALSE------------------------------------------------------------
#  coloredmeshes = vis.subject.morph.standard(subjects_dir, "subject1", "sulc", cortex_only=TRUE, views=NULL);
#  export(coloredmeshes, colorbar_legend = "sulcal depth [mm]", transparency_color = "#FFFFFF");

## ---- eval = FALSE------------------------------------------------------------
#  vis.subject.morph.native(sjd, sj, 'thickness', rglactions = list('shift_hemis_apart'=TRUE), surface='inflated', views='si');

## ---- eval = FALSE------------------------------------------------------------
#  vis.subject.morph.native(sjd, sj, 'thickness', rglactions = list('shift_hemis_apart'=list('min_dist'=20)), surface='inflated', views='si');

## ---- eval = FALSE------------------------------------------------------------
#  subjects_dir = fsbrain::get_optional_data_filepath("subjects_dir");
#  
#  view_angles = get.view.angle.names(angle_set = "t4");
#  
#  coloredmeshes = vis.subject.morph.native(subjects_dir, "subject1", "thickness", views=NULL);
#  vislayout.from.coloredmeshes(coloredmeshes, view_angles = view_angles, grid_like=FALSE, output_img="~/fsbrain_horizontal.png");

## ---- eval = FALSE------------------------------------------------------------
#  vis.fs.surface('~/Documents/my_mesh.ply');

## ---- eval = FALSE------------------------------------------------------------
#  Error in par(new = TRUE, pty = "m", plt = smallplot, err = -1) :
#    invalid value specified for graphical parameter "plt"

## ---- eval = FALSE------------------------------------------------------------
#  vis.subject.morph.native(sjd, sj, 'your_measure_here')
#  Error in squash::cmap(lh_morph_data, map = common_cmap) :
#    Found 2193 values outside map range.

## ---- eval = FALSE------------------------------------------------------------
#  vis.subject.morph.native(sjd, sj, 'your_measure_here', cortex_only = T)

## ---- eval = FALSE------------------------------------------------------------
#  Warning messages:
#  1: In rgl.init(initValue, onlyNULL) : RGL: unable to open X11 display
#  2: 'rgl.init' failed, running with 'rgl.useNULL = TRUE'.

## ---- eval = FALSE------------------------------------------------------------
#  fsbrain::fsbrain.set.default.figsize(3000, 3000, 0, 0);

## ---- eval = FALSE------------------------------------------------------------
#  library("fsbrain")
#  Error: package or namespace load failed for ‘fsbrain’ in get(method, envir = home):
#  lazy-load database '/Users/youruser/Library/R/3.6/library/fsbrain/R/fsbrain.rdb' is corrupt

## ---- eval = FALSE------------------------------------------------------------
#  vis.subject.annot(subject_dir, 'sub-sub001', 'aparc', 'both', 'pial',views=c('si'));

## ---- eval = FALSE------------------------------------------------------------
#  vis.subject.annot(subject_dir, 'sub-sub001', 'aparc', 'both', 'pial',views=c('si')); library(rgl); rglwidget()

Try the fsbrain package in your browser

Any scripts or data that you put into this service are public.

fsbrain documentation built on July 9, 2023, 7:12 p.m.