Learn R Programming

⚠️There's a newer version (0.17.4) of this package.Take me there.

ciftiTools

CIFTI files contain brain imaging data in “grayordinates,” which represent the gray matter as cortical surface vertices (left and right) and subcortical voxels (cerebellum, basal ganglia, and other deep gray matter). ciftiTools provides a unified environment for reading, writing, visualizing and manipulating CIFTI-format data. It supports the “dscalar,” “dlabel,” and “dtseries” intents. Greyordinate data is read in as a "xifti" object, which is structured for convenient access to the data and metadata, and includes support for surface geometry files to enable spatially-dependent functionality such as static or interactive visualizations and smoothing.

Installation

You can install ciftiTools from CRAN with:

install.packages("ciftiTools")

Additionally, most of the ciftiTools functions require the Connectome Workbench, which can be installed from the HCP website.

Quick start guide

# Load the package and point to the Connectome Workbench --------
library(ciftiTools)
ciftiTools.setOption("wb_path", "path/to/workbench")

# Read and visualize a CIFTI file -------------------------------
cifti_fname <- ciftiTools::ciftiTools.files()$cifti["dtseries"]
surfL_fname <- ciftiTools.files()$surf["left"]
surfR_fname <- ciftiTools.files()$surf["right"]

xii <- read_cifti(
  cifti_fname, brainstructures="all", 
  surfL_fname=surfL_fname, surfR_fname=surfR_fname,
  resamp_res=4000
)

view_xifti_surface(xii) # or plot(xii)
# view_xifti_volume(xii) if subcortex is present

# Access CIFTI data ---------------------------------------------
cortexL <- xii$data$cortex_left
cortexL_mwall <- xii$meta$medial_wall_mask$left
cortexR <- xii$data$cortex_right
cortexR_mwall <- xii$meta$medial_wall_mask$right
# subcortVol <- xii$data$subcort
# subcortLabs <- xii$meta$subcort$labels
# subcortMask <- xii$meta$subcort$mask
surfL <- xii$surf$cortex_left
surfR <- xii$surf$cortex_right

# Create a `"xifti"` from data ----------------------------------
xii2 <- as.xifti(
  cortexL=cortexL, cortexL_mwall=cortexL_mwall,
  cortexR=cortexR, cortexR_mwall=cortexR_mwall,
  #subcortVol=subcortVol, subcortLabs=subcortLabs,
  #subcortMask=subcortMask,
  surfL=surfL, surfR=surfR
)

# Write a CIFTI file --------------------------------------------
write_cifti(xii2, "my_cifti.dtseries.nii")

Vignette

See this link to view the tutorial vignette.

Illustrations

FAQ

Why is a CIFTI file that has been read in called a "xifti"?

The "xifti" object is a general interface for not only CIFTI files, but also GIFTI and NIFTI files. For example, we can plot a surface GIFTI:

xii <- as.xifti(surfL=read_surf(ciftiTools.files()$surf["left"]))
plot(xii)

We can also convert metric GIFTI files and/or NIFTI files to CIFTI files (or vice versa) using the "xifti" object as an intermediary.

Related R extensions

  • NIFTI files: oro.nifti, RNifti
  • GIFTI files: gifti
  • CIFTI files: cifti can read in any CIFTI file, whereas ciftiTools provides a user-friendly interface for CIFTI files with the dscalar, dlabel, and dtseries intents only.
  • Other structural neuroimaging files: fsbrain
  • xml files: xml2
  • Interactive 3D rendering: rgl

Citation

You can cite our pre-print at https://arxiv.org/abs/2106.11338.

Data acknowledgement

The following data are included in the package for convenience:

Example CIFTI files provided by NITRC.

Cortical surfaces provided by the HCP, according to the Data Use Terms:

Data were provided [in part] by the Human Connectome Project, WU-Minn Consortium (Principal Investigators: David Van Essen and Kamil Ugurbil; 1U54MH091657) funded by the 16 NIH Institutes and Centers that support the NIH Blueprint for Neuroscience Research; and by the McDonnell Center for Systems Neuroscience at Washington University.

Several parcellations provided by Thomas Yeo’s Computational Brain Imaging Group (CBIG):

  1. Yeo, B. T. T. et al. The organization of the human cerebral cortex estimated by intrinsic functional connectivity. J Neurophysiol 106, 1125–1165 (2011).
  2. Schaefer, A. et al. Local-Global Parcellation of the Human Cerebral Cortex from Intrinsic Functional Connectivity MRI. Cereb Cortex 28, 3095–3114 (2018).
  3. Kong, R. et al. Individual-Specific Areal-Level Parcellations Improve Functional Connectivity Prediction of Behavior. Cerebral Cortex (2021).

Copy Link

Version

Install

install.packages('ciftiTools')

Monthly Downloads

466

Version

0.4.3

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Amanda Mejia

Last Published

August 19th, 2021

Functions in ciftiTools (0.4.3)

as.matrix.xifti

Convert a "xifti" to a matrix
ROY_BIG_BL

"ROY_BIG_BL" color palette
apply_xifti

Apply a function along the rows or columns of a "xifti"
as.surf_gifti

Format surface data as a "gifti"
add_surf

Add surface(s) to a "xifti"
as.xifti

Assemble a "xifti" from data
ciftiTools

ciftiTools: Tools for Reading and Visualizing CIFTI Brain Files
as.metric_gifti

Format metric data as a "gifti"
all_integers

All integers?
ROI_brainstructures_Param_LR

ROI_brainstructures
ciftiTools.listOptions

List ciftiTools options
ciftiTools_warn

Print suppressible warning
dim.xifti

Dimensions of a "xifti"
crop_vol

Crop a 3D array
ciftiTools_msg

Print suppressible message
ciftiTools.setOption

Set a ciftiTools option
fix_xifti

Fix a "xifti"
make_cortex

Make the cortical components of a "xifti"
combine_xifti

Combine "xifti"s with non-overlapping brain structures
get_data_meta_from_cifti_xml

Extract data-related metadata from CIFTI
newdata_xifti

Replace the data in a "xifti"
ciftiTools.files

ciftiTools files
cifti_component_suffix

Get CIFTI component suffix default
ciftiTools.checkOption

Validate a ciftiTools option and value
flatten_xifti

Flatten a "xifti"
ciftiTools.getOption

Get a ciftiTools option
ncol_xifti

Counts the number of columns in a "xifti".
confirm_wb_cmd_path

Confirm the Connectome Workbench command path
make_subcort

Make the subcortical components of a "xifti"
get_kwargs

Get kwargs
read_cifti_flat

Read only the data matrix in a CIFTI file
expand_color_pal

Interpolates between entries in the input palette to make a larger palette with COLOR_RES entries.
format_path

Format a path
brainstructures_Param_LR

brainstructures
.onAttach

Message on attach
brainstructures_Param_all

brainstructures
get_cifti_extn

Get CIFTI file extension
get_intn_meta_from_cifti_xml

Extract intent-specific metadata from CIFTI
info_cifti

Get CIFTI metadata
cifti_fname_Param

cifti_fname
is.nummat

Validate a numeric matrix
check_cifti_type

Check CIFTI type
read_cifti_separate

Read a CIFTI file with optional resampling
get_wb_cmd_path

Get the Connectome Workbench command path
is.xifti

Validate a "xifti" object.
is.surf

Validate a "surf" object (vertices + faces)
header_cifti

Get NIFTI header (of a CIFTI)
get_misc_meta_from_cifti_xml

Extract misc metadata from CIFTI
load_surf

Load a "surf" included in ciftiTools
make_color_pal

Make a color palette.
read_dir_Param_separated

read_dir: separated files
is.subcort_labs

Validate a factor vector of subcortical labels
convert_to_dlabel

Convert the intent of a CIFTI file or "xifti" object
read_surf

Get a "surf" object
select_xifti

Select columns of a "xifti"
run_wb_cmd

Wrapper for Connectome Workbench Commands
coordlist_to_vol

Convert coordinate list to volume
resample_cifti

Resample CIFTI data
nrow_xifti

Counts the number of rows (vertices + voxels) in a "xifti".
original_fnames_Param_resampled

original_fnames: for resampling
expect_equal_xifti

Expect these "xifti"s to match
labels_Description

labels
is.3D_mask

Validate a 3d binary mask
load_parc

Load a parcellation included in ciftiTools
make_trans_mat

Make the subcortical transformation matrix
read_cifti

Read a CIFTI file
make_xifti

Assemble a "xifti" object
resample_cifti_components

Resample a series of GIFTIs related to a CIFTI file
merge_xifti

Concatenate "xifti"s
plot.surf

S3 method: plot surface
merge_kwargs

Merges two kwargs
supported_intents

The NIFTI intents supported by ciftiTools
summary.xifti

Summarize a "xifti" object
is.cifti

Validate a "xifti" object
fix_gifti_mwall

Fix GIFTI medial wall
plot.xifti

S3 method: use view_xifti to plot a "xifti" object
move_from_mwall

Move data locations from medial wall
separate_cifti

Separate a CIFTI file
substructure_table

Substructure table
view_xifti_surface.draw_mesh

Draw brain hemisphere mesh in RGL
view_xifti_surface.surf_hemi

Sort out surface & hemisphere args for view_xifti_surface
view_xifti_surface.color

Get the palettes and data color mapping for view_xifti_surface
idx_Param

idx
is.fname

Is this an existing file path?
view_xifti_volume

View subcortical data in a "xifti"
separate_cifti_wrapper

separate_cifti wrapper
write_spheres

Generate GIFTI sphere surface files
read_cifti_convert

Read a CIFTI file quickly
resamp_res_Param_required

resamp_res: required
rgl_static_plots_Description

Embedding the Static Plots
resamp_res_Param_optional

resamp_res: optional
rotate_surf

Rotate a "surf" object
summary.surf

Summarize a "surf" object
read_xifti2

Read in GIFTI files as a "xifti" object
move_to_mwall

Move data locations to the medial wall
remove_xifti

Remove a component from a "xifti"
write_subcort_nifti

Write subcortical data to NIFTI files
smooth_gifti

Smooth a metric GIFTI file
smooth_cifti

Smooth CIFTI data
infer_resolution

Infer resolution from "xifti" and surfaces
is.xifti_data

Validate the "data" component of a "xifti" object
is.xifti_meta

Validate the "meta" component of a "xifti" object
match_exactly

Do these character vectors match exactly?
unmask_subcortex

Undo a volumetric mask
unmask_cortex

Unmask cortex
match_input

Match user inputs to expected values
parc_borders

Parcellation borders
pad_vol

Pad a 3D Array
resample_cifti_default_fname

Get resampled file name default
surfR_original_fname_Param

surfR_original_fname
surfR_target_fname_Param

surfR_target_fname
view_surf

View "surf" object(s)
write_dir_Param_generic

write_dir: generic
resample_cifti_from_template

Resample a CIFTI from a template
verbose_Param_TRUE

verbose: TRUE
resample_cifti_wrapper

resample_cifti wrapper
resample_gifti

Resample a GIFTI file (with its ROI)
write_metric_gifti

Write a data matrix to a GIFTI metric file
surfL_Param_optional

surfL
resample_surf

Resample a "surf" object
surfL_fname_Param

surfL_fname
rgl_interactive_plots_Description

Navigating and Embedding the Interactive Plots
surface_plot_Params

Surface plot
transform_xifti

Apply a univariate transformation to a "xifti" or pair of "xifti"s.
surfL_target_fname_Param

surfL_target_fname
write_cifti

Write a CIFTI file from a "xifti" object
surfL_original_fname_Param

surfL_original_fname
template_xifti

Make a template "xifti" object
wb_path_request

Request "wb_path"
xifti_Param

xifti
surfR_Param_optional

surfR
sys_path

surfR_fname_Param

surfR_fname
use_color_pal

Use a color palette
view_xifti_surface.cbar

Make the colorbar for view_xifti_surface
verbose_Param_FALSE

verbose: FALSE
view_xifti_surface.cleg

Draw color legend for qualitative mode
write_cifti_components

Write CIFTI component files from a "xifti" object
write_surf_gifti

Write a "surf" to a GIFTI surface file
write_cifti_from_separate

Write a CIFTI file from NIFTI and GIFTI files
xml_cifti

Get XML of a CIFTI
view_xifti

View a "xifti" object
view_xifti_surface.draw_title

Draw title in RGL
view_xifti_surface

View cortical surface data in a "xifti"
x_Param_xifti

x: xifti
view_xifti_surface.mesh_val

Get the mesh(es) and data values for view_xifti_surface