• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Washington-University/cifti-matlab: MATLAB code for reading and writing CIFTI co ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称(OpenSource Name):

Washington-University/cifti-matlab

开源软件地址(OpenSource Url):

https://github.com/Washington-University/cifti-matlab

开源编程语言(OpenSource Language):

MATLAB 79.9%

开源软件介绍(OpenSource Introduction):

MATLAB code for reading and writing CIFTI files, v2

This library is compatible with the CIFTI-2 format, without externally installed dependencies (except that CIFTI-1 files require wb_command for conversion), returning a structure that exposes the information contained in the CIFTI-2 XML with minimal translation, as well as the data matrix with no added padding. The cifti_read function is the intended starting point, ciftiopen and similar are compatibility wrappers so that the library can be used in older code.

Additionally, the library provides numerous helper functions to make many common operations (such as extracting the data for one structure) into a single line of intuitive code.

The previous code that was derived from FieldTrip is in the "ft_cifti" folder.

The cifti structure returned by this library uses 0-based indices for vertex and voxel indices, 1-based for cifti indices, and the helper functions return 1-based indices for everything.

Usage

All exposed functions have usage information available through the help command:

>> help cifti_read
 function outstruct = cifti_read(filename, ...)
    Read a cifti file.
...

The simplest practical usage is to load a cifti file with cifti_read, take its data from the .cdata field, modify it, store it back into the .cdata field, and write it back out to a new file with cifti_write:

mycifti = cifti_read('something.dscalar.nii');
mycifti.cdata = sqrt(mycifti.cdata);
cifti_write(mycifti, 'sqrt.dscalar.nii');

The ciftiopen, ciftisave, and ciftisavereset functions provide backward compatibility with a previous cifti library (option II of HCP FAQ 2), and you can also use this ciftisavereset function even if you use cifti_read. An alternative way to do the equivalent of ciftisavereset is to use the cifti_write_from_template helper function (which also has options to set the names of the maps for dscalar, and similar for other cifti file types):

mycifti = cifti_read('something.dscalar.nii');
cifti_write_from_template(mycifti, mycifti.cdata(:, 1), 'firstmap.dscalar.nii', 'namelist', {'map #1'});

%ciftisavereset equivalent (keeping 'mycifti' unmodified):
mycifti = cifti_read('something.dscalar.nii');
newcifti = mycifti;
newcifti.cdata = mycifti.cdata(:, 1);
ciftisavereset(newcifti, 'firstmap.dscalar.nii');
clear newcifti;

The cifti_struct_create_from_template function can create a cifti struct without writing it to a file, with the same options as cifti_write_from_template to control the other diminfo. The cifti_write... or cifti_struct... functions should handle most cases of working with common cifti files, including extracting the data for one cortical surface, doing some computation on it, and replacing the surface data with the new values:

mycifti = cifti_read('something.dscalar.nii');
leftdata = cifti_struct_dense_extract_surface_data(mycifti, 'CORTEX_LEFT');
newleftdata = 1 - leftdata;
newcifti = cifti_struct_dense_replace_surface_data(mycifti, newleftdata, 'CORTEX_LEFT');
...

The dense part of some function names refers to only being applicable to "dense" files or diminfo (in cifti xml terms, a "brain models" mapping), such as dtseries, dscalar, dlabel, or dconn. There are more dense helpers mainly because there is a more common need to make use of the information in a dense diminfo than most other diminfo types.

The cifti_diminfo_* helpers are lower-level and require more understanding of the details of the cifti format, and often require writing more code to use them, so you should generally look at the cifti_write... and cifti_struct... functions first.

Function reference

Main functions

read/write and compatibility

outstruct = cifti_read(filename, ...)
cifti_write(cifti, filename, ...)

cifti = ciftiopen(filename, ...)     %note: these 3 do not use option pairs,
ciftisave(cifti, filename, ...)      %  the varargin here is to make passing 'wb_command' optional
ciftisavereset(cifti, filename, ...)

struct create helpers and write convenience functions

cifti = cifti_struct_create_from_template(ciftitemplate, data, type, ...)
cifti_write_from_template(ciftitemplate, data, filename, ...)

cifti = cifti_struct_create_sdseries(data, ...)
cifti_write_sdseries(data, filename, ...)

dense struct extract/replace helpers

[outdata, outroi] = cifti_struct_dense_extract_surface_data(cifti, structure[, dimension])
cifti = cifti_struct_dense_replace_surface_data(cifti, data, structure[, dimension])

[outdata, outsform1, outroi] = cifti_struct_dense_extract_volume_all_data(cifti[, cropped, dimension])
cifti = cifti_struct_dense_replace_volume_all_data(cifti, data[, cropped, dimension])

[outdata, outsform1, outroi] = cifti_struct_dense_extract_volume_structure_data(cifti, structure[, cropped, dimension])
cifti = cifti_struct_dense_replace_volume_structure_data(cifti, data, structure[, cropped, dimension])

misc

[surflist, vollist] = cifti_diminfo_dense_get_structures(diminfo)     %returns the names of structures that exist in this diminfo

outstring = cifti_metadata_get(metadata, key)           %returns empty string for nonexistent key
metadata = cifti_metadata_remove(metadata, key)         %returns unmodified metadata struct for nonexistent key
metadata = cifti_metadata_set(metadata, key, value)     %overwrites key if it exists

Special usage

advanced diminfo helpers

outinfo = cifti_diminfo_dense_get_surface_info(diminfo, structure)
outinfo = cifti_diminfo_dense_get_volume_all_info(diminfo[, cropped])
outinfo = cifti_diminfo_dense_get_volume_structure_info(diminfo, structure[, cropped])

outmap = cifti_diminfo_make_scalars(nummaps[, namelist, metadatalist])
outmap = cifti_diminfo_make_series(nummaps[, start, step, unit])

advanced misc

indices = cifti_vox2ind(dims, voxlist1)         %helper to act like sub2ind for voxel ijk lists



鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap