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 paper at https://doi.org/10.1016/j.neuroimage.2022.118877.

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

564

Version

0.9.0

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Amanda Mejia

Last Published

May 16th, 2022

Functions in ciftiTools (0.9.0)

as.matrix.xifti

Convert a "xifti" to a matrix
apply_xifti

Apply a function along the rows or columns of a "xifti"
S3_Ops

"xifti" S3 Ops methods
ROI_brainstructures_Param_LR

ROI_brainstructures
S3_Summary

"xifti" S3 Summary methods
S3_Math

"xifti" S3 Math methods
ROY_BIG_BL

"ROY_BIG_BL" color palette
add_surf

Add surface(s) to a "xifti"
all_integers

All integers?
as.metric_gifti

Format metric data as a "gifti"
check_cifti_type

Check CIFTI type
brainstructures_Param_LR

brainstructures
cifti_component_suffix

Get CIFTI component suffix default
ciftiTools.checkOption

Validate a ciftiTools option and value
brainstructures_Param_all

brainstructures
ciftiTools_warn

Print suppressible warning
flatten_xifti

Flatten a "xifti"
ciftiTools.files

ciftiTools files
combine_xifti

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

cifti_fname
format_path

Format a path
ciftiTools.getOption

Get a ciftiTools option
ciftiTools.listOptions

List ciftiTools options
info_cifti

Get CIFTI metadata
is.surf

Validate a "surf" object (vertices + faces)
as.xifti

Assemble a "xifti" from data
infer_resolution

Infer resolution from "xifti" and surfaces
is.subcort_labs

Validate a factor vector of subcortical labels
as.surf_gifti

Format surface data as a "gifti"
is.nummat

Validate a numeric matrix
is.fname

Is this an existing file path?
match_input

Match user inputs to expected values
expand_color_pal

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

Convert coordinate list to volume
crop_image

Crop image
original_fnames_Param_resampled

original_fnames: for resampling
ciftiTools.setOption

Set a ciftiTools option
pad_vol

Pad a 3D Array
ciftiTools

ciftiTools: Tools for Reading and Visualizing CIFTI Brain Files
merge_kwargs

Merges two kwargs
ciftiTools_msg

Print suppressible message
expect_equal_xifti

Expect these "xifti"s to match
dim.xifti

Dimensions of a "xifti"
.onAttach

Message on attach
get_intn_meta_from_cifti_xml

Extract intent-specific metadata from CIFTI
crop_vol

Crop a 3D array
header_cifti

Get NIFTI header (of a CIFTI)
confirm_wb_cmd_path

Confirm the Connectome Workbench command path
plot.xifti

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

Make a color palette.
idx_Param

idx
read_cifti

Read a CIFTI file
plot.surf

S3 method: plot surface
parc_borders

Parcellation borders
convert_to_dlabel

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

Concatenate "xifti"s
move_from_mwall

Move data locations from medial wall
edit_mask_surf

Edit mask on surface
get_kwargs

Get kwargs
make_cortex

Make the cortical components of a "xifti"
is.3D_mask

Validate a 3d binary mask
get_misc_meta_from_cifti_xml

Extract misc metadata from CIFTI
get_wb_cmd_path

Get the Connectome Workbench command path
read_xifti2

Read in GIFTI files as a "xifti" object
read_surf

Get a "surf" object
remove_xifti

Remove a component from a "xifti"
resamp_res_Param_optional

resamp_res: optional
fix_xifti

Fix a "xifti"
resample_cifti_components

Resample a series of GIFTIs related to a CIFTI file
fix_gifti_mwall

Fix GIFTI medial wall
get_cifti_extn

Get CIFTI file extension
resample_cifti_wrapper

resample_cifti wrapper
resample_cifti_from_template

Resample a CIFTI from a template
is.cifti

Validate a "xifti" object
resample_cifti_default_fname

Get resampled file name default
get_data_meta_from_cifti_xml

Extract data-related metadata from CIFTI
is.xifti

Validate a "xifti" object.
is.xifti_data

Validate the "data" component of a "xifti" object
supported_intents

The NIFTI intents supported by ciftiTools
separate_cifti

Separate a CIFTI file
labels_Description

labels
make_xifti

Assemble a "xifti" object
is.xifti_meta

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

Resample a GIFTI file (with its ROI)
load_parc

Load a parcellation included in ciftiTools
match_exactly

Do these character vectors match exactly?
surfL_Param_optional

surfL
make_subcort

Make the subcortical components of a "xifti"
surfR_target_fname_Param

surfR_target_fname
surface_plot_Params

Surface plot
resample_surf

Resample a "surf" object
rotate_surf

Rotate a "surf" object
make_trans_mat

Make the subcortical transformation matrix
move_to_mwall

Move data locations to the medial wall
load_surf

Load a "surf" included in ciftiTools
nrow_xifti

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

Replace the data in a "xifti"
ncol_xifti

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

View subcortical data in a "xifti"
view_xifti

View a "xifti" object
view_xifti.cbar

Make the colorbar for view_xifti_surface
separate_cifti_files

Separate CIFTI: file names
vox_locations

Get spatial locations of each voxel
read_cifti_convert

Read a CIFTI file quickly
run_wb_cmd

Wrapper for Connectome Workbench Commands
write_surf_gifti

Write a "surf" to a GIFTI surface file
write_xifti2

Write a "xifti" object to GIFTI and NIFTI files
read_cifti_flat

Read only the data matrix in a CIFTI file
smooth_gifti

Smooth a metric GIFTI file
rgl_static_plots_Description

Embedding the Static Plots
rgl_interactive_plots_Description

Navigating and Embedding the Interactive Plots
substructure_table

Substructure table
unmask_cortex

Unmask cortex
transform_xifti

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

surfL_original_fname
sys_path

surfL_fname_Param

surfL_fname
template_xifti

Make a template "xifti" object
scale_xifti

Scale CIFTI
select_xifti

Select columns of a "xifti"
summary.surf

Summarize a "surf" object
read_cifti_separate

Read a CIFTI file with optional resampling
read_dir_Param_separated

read_dir: separated files
surfR_Param_optional

surfR
summary.xifti

Summarize a "xifti" object
surfL_target_fname_Param

surfL_target_fname
resamp_res_Param_required

resamp_res: required
write_metric_gifti

Write a data matrix to a GIFTI metric file
write_dir_Param_generic

write_dir: generic
view_xifti.cleg

Draw color legend for qualitative mode
resample_cifti

Resample CIFTI data
verbose_Param_FALSE

verbose: FALSE
view_comp

View composite of images
view_surf

View "surf" object(s)
view_xifti.title

Get title for view_xifti_surface or view_xifti_volume
verbose_Param_TRUE

verbose: TRUE
view_xifti_surface

View cortical surface data in a "xifti"
smooth_cifti

Smooth CIFTI data
separate_cifti_wrapper

separate_cifti wrapper
view_xifti_surface.color

Get the palettes and data color mapping for view_xifti_surface
view_xifti_surface.surf_hemi

Sort out surface & hemisphere args for view_xifti_surface
write_subcort_nifti

Write subcortical data to NIFTI files
write_spheres

Generate GIFTI sphere surface files
view_xifti_surface.mesh_val

Get the mesh(es) and data values for view_xifti_surface
write_cifti

Write a CIFTI file from a "xifti" object
surfR_fname_Param

surfR_fname
surfR_original_fname_Param

surfR_original_fname
write_cifti_from_separate

Write a CIFTI file from NIFTI and GIFTI files
x_Param_xifti

x: xifti
xifti_Param

xifti
unmask_subcortex

Undo a volumetric mask
use_color_pal

Use a color palette
view_xifti_surface.draw_title

Draw title in RGL
view_xifti_surface.draw_mesh

Draw brain hemisphere mesh in RGL
wb_path_request

Request "wb_path"
welcome_msg

Welcome message
xml_cifti

Get XML of a CIFTI