.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.1. .TH GIFTI_TOOL "1" "June 2022" "gifti_tool version 1.3, 24 December 2009" "User Commands" .SH NAME gifti_tool \- gifti_tool - create, display, modify or compare GIFTI datasets .SH DESCRIPTION \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR gifti_tool \- create, display, modify or compare GIFTI datasets .IP general examples: .TP 1. read in a GIFTI dataset (set verbose level? show GIFTI dataset?) .IP gifti_tool \fB\-infile\fR dset.gii gifti_tool \fB\-infile\fR dset.gii \fB\-verb\fR 3 gifti_tool \fB\-infile\fR dset.gii \fB\-show_gifti\fR .IP 2. copy a GIFTI dataset .IP a. create a simple copy, and check for differences .IP gifti_tool \fB\-infile\fR dset.gii \fB\-write_gifti\fR copy.gii diff dset.gii copy.gii .IP b. copy only 3 DataArray indices: 4, 0, 5 .TP gifti_tool \fB\-infile\fR time_series.gii \fB\-write_gifti\fR ts3.gii \e .IP \fB\-read_DAs\fR 4 0 5 .IP OR .TP gifti_tool \fB\-infile\fR time_series.gii'[4,0,5]' \e .IP \fB\-write_gifti\fR ts3.gii .IP 3. write datasets in other formats .IP a. FreeSurfer\-style .asc surface dataset .IP gifti_tool \fB\-infile\fR pial.gii \fB\-write_asc\fR pial.asc .IP b. .1D time series surface dataset .IP gifti_tool \fB\-infile\fR time_series.gii \fB\-write_1D\fR ts.1D .IP 4. create a new gifti dataset from nothing, where .IP a. \- the dataset has 3 DataArray elements .IP \- the data will be of type 'short' (NIFTI_TYPE_INT16) \- the intent codes will reflect a t\-test \- the data will be 2\-dimensional (per DataArray), 5 by 2 shorts \- memory will be allocated for the data (a modification option) \- the result will be written to created.gii .TP gifti_tool \fB\-new_dset\fR \e .TP \fB\-new_numDA\fR 3 \fB\-new_dtype\fR NIFTI_TYPE_INT16 \e \fB\-new_intent\fR NIFTI_INTENT_TTEST \e \fB\-new_ndim\fR 2 \fB\-new_dims\fR 5 2 0 0 0 0 \e \fB\-mod_add_data\fR \fB\-write_gifti\fR created.gii .IP b. \- the dataset has 12 DataArray elements (40 floats each) .IP \- the data is partitioned over 2 files (so 6*40 floats in each) .TP ** Note: since dataset creation does not add data (without \fB\-mod_add_data\fR), this operation will not create or try to overwrite the external datafiles. .TP gifti_tool \fB\-new_dset\fR \fB\-new_numDA\fR 12 \e .TP \fB\-new_ndim\fR 1 \fB\-new_dims\fR 40 0 0 0 0 0 \e .TP \fB\-set_extern_filelist\fR ext1.bin ext2.bin \e .IP \fB\-write_gifti\fR points_to_extern.gii .IP 5. modify a gifti dataset .IP a. apply various modifications at the GIFTI level and to all DAs .IP \- set the Version attribute at the GIFTI level \- set 'Date' as GIFTI MetaData, with value of today's date \- set 'Description' as GIFTI MetaData, with some value \- set all DA Intent attributes to be an F\-test \- set 'Name' as an attribute of all DAs, with some value \- read created.gii, and write to first_mod.gii .TP gifti_tool \fB\-mod_gim_atr\fR Version 1.0 \e .TP \fB\-mod_gim_meta\fR Date "`date`" \e .TP \fB\-mod_gim_meta\fR Description 'modified surface' \e .TP \fB\-mod_DA_atr\fR Intent NIFTI_INTENT_FTEST \e .TP \fB\-mod_DA_meta\fR Name 'same name for all DAs' \e .IP \fB\-infile\fR created.gii \fB\-write_gifti\fR first_mod.gii .IP b. modify the 'Name' attribute is DA index #42 only .TP gifti_tool \fB\-mod_DA_meta\fR Name 'data from pickle #42' \e .TP \fB\-mod_DAs\fR 42 \e .IP \fB\-infile\fR stats.gii \fB\-write_gifti\fR mod_stats.gii .IP c. set the data to point to a single external data file, without .IP overwriting the external file on write (so use \fB\-no_data\fR), and where the DataArrays will point to sequential partitions of the file .TP gifti_tool \fB\-infiles\fR created.gii \fB\-no_data\fR \e .TP \fB\-set_extern_filelist\fR ex_data.bin \e .IP \fB\-write_gifti\fR extern.gii .IP d. convert a POINTSET/TRIANGLE Base64 format dataset to one where .IP to one where the data is external (raw binary): .TP gifti_tool \fB\-infiles\fR inflated.gii \e .TP \fB\-set_extern_filelist\fR points.data tri.data \e \fB\-write_gifti\fR inflated.external.gii .IP e. convert a 5 run time series dataset from internal Base64 format .IP to one where the data is external (raw binary): .IP as one external file: .TP gifti_tool \fB\-infiles\fR epi.5runs.gii \e .TP \fB\-set_extern_filelist\fR data.5runs.bin \e .IP \fB\-write_gifti\fR epi.ext.5runs.gii .IP as 5 external files (1 per run): .TP gifti_tool \fB\-infiles\fR epi.5runs.gii \e .IP \fB\-set_extern_filelist\fR data.5runs.r{1,2,3,4,5}.bin \e \fB\-write_gifti\fR epi.ext.5runs.gii .IP f. convert the previous external dataset back to internal form .IP (i.e. it should be the same as epi.5runs.gii) .TP gifti_tool \fB\-infiles\fR epi.ext.5runs.gii \e .TP \fB\-encoding\fR BASE64 \e .IP \fB\-write_gifti\fR epi.int.5runs.gii .IP 6. compare 2 gifti datasets .IP a. compare GIFTI structures, compare data, and report all diffs .TP gifti_tool \fB\-compare_gifti\fR \fB\-compare_data\fR \fB\-compare_verb\fR 3 \e \fB\-infiles\fR created.gii first_mod.gii .IP b. report approximate comparison: focusing on data, but allowing .IP for small, fractional differences varying per datatype .TP gifti_tool \fB\-approx_gifti\fR \fB\-compare_verb\fR 3 \e \fB\-infiles\fR created.gii first_mod.gii .IP 7. copy MetaData from one dataset to another .IP (any old Value will be replaced if the Name already exists) .IP \- copy every (ALL) MetaData element at the GIFTI level \- copy MetaData named 'Label' per DataArray element \- only apply DataArray copies to indices 0, 3 and 6 \- first input file is the source, second is the destination \- write the modified 'destination.gii' dataset to meta_copy.gii .TP gifti_tool \fB\-copy_gifti_meta\fR ALL \e .TP \fB\-copy_DA_meta\fR Label \e .TP \fB\-DA_index_list\fR 0 3 6 \e .TP \fB\-infiles\fR source.gii destination.gii \e .IP \fB\-write_gifti\fR meta_copy.gii .PP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP (all warranties are void in Montana, and after 4 pm on Tuesdays) .PP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP informational options: .TP \fB\-help\fR : display this help .TP \fB\-hist\fR : display the modification history of gifti_tool .TP \fB\-ver\fR : display the gifti_tool version .TP \fB\-gifti_hist\fR : display thd modification history of gifticlib .TP \fB\-gifti_ver\fR : display gifticlib version .TP \fB\-gifti_dtd_url\fR : display the gifti DTD URL .TP \fB\-gifti_zlib\fR : display whether the zlib is linked in library .HP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP general/input options .TP \fB\-b64_check\fR TYPE : set method for checking base64 errors .IP e.g. \fB\-b64_check\fR COUNT .IP This option sets the preference for how to deal with errors in Base64 encoded data (whether compressed or not). The default is SKIPnCOUNT, which skips any illegal characters, and reports a count of the number found. .TP TYPE = NONE : no checks \- assume all is well .TP TYPE = DETECT : report whether errors were found .TP TYPE = COUNT : count the number of bad chars .TP TYPE = SKIP : ignore any bad characters .IP TYPE = SKIPnCOUNT : ignore but count bad characters .IP This default adds perhaps 10% to the reading time. .TP \fB\-buf_size\fR SIZE : set the buffer size (given to expat library) .IP e.g. \fB\-buf_size\fR 1024 .HP \fB\-DA_index_list\fR I0 I1 ... : specify a list of DataArray indices .IP e.g. \fB\-DA_index_list\fR 0 e.g. \fB\-DA_index_list\fR 0 17 19 .IP This option is used to specify a list of DataArray indices for use via some other option (such as \fB\-copy_DA_meta\fR). .IP Each DataArray element corresponding to one of the given indices will have the appropriate action applied, such as copying a given MetaData element from the source dataset to the destination dataset. .IP Note that this differs from \fB\-read_DAs\fR, which specifies which DataArray elements to even read in. Both options could be used in the same command, such as if one wanted to copy the \&'Name' MetaData from index 17 of a source dataset into the MetaData of the first DataArray in a dataset with only two DataArray elements. .TP e.g. gifti_tool \fB\-infiles\fR source.gii dest.gii \e .TP \fB\-write_gifti\fR new_dest.gii \e .TP \fB\-copy_DA_meta\fR Name \e .TP \fB\-read_DAs\fR 17 17 \e .IP \fB\-DA_index_list\fR 0 .IP Note that DA_index_list applies to the indices _after_ the datasets are read in. .TP \fB\-gifti_test\fR : test whether each gifti dataset is valid .IP This performs a consistency check on each input GIFTI dataset. Lists and dimensions must be consistent. .TP \fB\-infile\fR INPUT : specify one or more GIFTI datasets as input .IP e.g. \fB\-input\fR pial.gii e.g. \fB\-input\fR run1.gii run2.gii e.g. \fB\-input\fR MAKE_IM (create a new image) e.g. \fB\-input\fR run1.gii'[3,4,5]' (read DAs 3,4,5 ) e.g. \fB\-input\fR run1.gii'[0..16(2)]' (read evens from 0 to 16) e.g. \fB\-input\fR run1.gii'[4..$]' (read all but 0..3) .TP There are 2 special ways to specify input. One is via the .TP name 'MAKE_IM'. That 'input' filename tell gifti_tool to .IP create a new dataset, applying any '\-new_*' options to it. .IP (refer to options: \fB\-new_\fR*) .IP The other special way is to specify which DataArray elements should be read in, using AFNI\-style syntax within '[]'. The quotes prevent the shell from interpreting the brackets. .IP DataArray indices are zero\-based. .IP The list of DAs can be comma\-delimited, and can use '..' or \&'\-' to specify a range, and a value in parentheses to be used as a step. The '$' character means the last index (numDA\-1). .TP \fB\-no_data\fR : do not read in data .IP This option means not to read in the Data element in any DataArray, akin to reading only the header. .TP \fB\-no_updates\fR : do not allow the library to modify metadata .IP By default, the library may update some metadata fields, such as 'gifticlib\-version'. The \fB\-no_updates\fR option will prevent that operation. .TP \fB\-read_DAs\fR s0 ... : read DataArray list indices s0,... from input .IP e.g. \fB\-read_DAs\fR 0 4 3 3 8 e.g. \fB\-input\fR run1.gii \fB\-read_DAs\fR 0 2 4 6 8 e.g. \fB\-input\fR run1.gii'[0..8(2)]' (same effect) .TP Specify a list of DataArray indices to read. This is a .IP simplified form of using brackets '[]' with \fB\-input\fR names. .TP \fB\-show_gifti\fR : show final gifti image .IP Display all of the dataset information on the screen (sans data). This includes meta data and all DataArray elements. .TP \fB\-verb\fR VERB : set verbose level (default: 1) .IP e.g. \fB\-verb\fR 2 .TP Print extra information to the screen. The VERB level can .IP be from 0 to 8, currently. .IP Level 0 is considered 'quiet' mode, and should only report serious errors. Level 1 is the default. .HP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP output options .TP \fB\-encoding\fR TYPE : set the data encoding for any output file .IP e.g. \fB\-encoding\fR BASE64GZIP .TP TYPE = ASCII : ASCII encoding .TP TYPE = BASE64 : base64 binary .IP TYPE = BASE64GZIP : base64 compressed binary .IP This operation can also be performed via \fB\-mod_DA_atr\fR: e.g. \fB\-mod_DA_atr\fR Encoding BASE64GZIP .HP \fB\-set_extern_filelist\fR F1 F2 ... : store data in external files .IP e.g. \fB\-set_extern_filelist\fR run.1.data run.2.data run.3.data e.g. \fB\-set_extern_filelist\fR runs.all.data e.g. \fB\-set_extern_filelist\fR points.data triangles.data .IP Data is normally stored within the XML file as numerical text or Base64 encoded raw or compressed data. .IP With use of this option, users can set to have data stored in external binary files (neither encoded nor compressed) upon a write operation. .IP External file storage is subject to a couple of restrictions: .IP \- GIFTI requires that they are in the same directory .IP \- the library allows multiple DataArrays per file, but each .IP DataArray within the same file must have the same size (this is a gifticlib limit, not a GIFTI limit) .IP OK : equal data in 1 file OK : equal data in k files, numDA is multiple of k BAD: equal data in k files, numDA is NOT multiple of k OK : points/triangles in 2 files BAD: points/triangles in 1 file (sizes differ) .IP The most basic use of this option is to convert data from internal to external. See examples 5d and 5e. .IP Note that one can also create a GIFTI dataset out of nothing and use this option to point to existing external data files. This would help conversion from other dataset formats. See example 5c. .IP Note that one can convert from an external data format to internal just by modifying the \fB\-encoding\fR. See example 5f. .TP \fB\-write_1D\fR DSET : write out data to AFNI style 1D file .IP e.g. \fB\-write_1D\fR stats.1D .TP Currently, all DAs need to be of the same datatype. This .IP restriction could be lifted if there is interest. .TP \fB\-write_asc\fR DSET : write out geometry to FreeSurfer style ASC file .IP e.g. \fB\-write_asc\fR pial.asc .IP To write a surface file in FreeSurfer asc format, it must contain DataArray elements of intent NIFTI_INTENT_POINTSET and NIFTI_INTENT_TRIANGLE. The POINTSET data is written as node coordinates and the TRIANGLE data as triangles (node index triplets). .HP \fB\-write_gifti\fR DSET : write out dataset as gifti image .IP e.g. \fB\-write_gifti\fR new.pial.gii .TP \fB\-zlevel\fR LEVEL : set compression level (\fB\-1\fR or 0..9) .TP This option sets the compression level used by zlib. Some .IP LEVEL values are noteworthy: .TP \fB\-1\fR : specify to use the default of zlib (currently 6) .TP 0 : no compression (but still needs a few extra bytes) .TP 1 : fastest but weakest compression .TP 6 : default (good speed/compression trade\-off) .TP 9 : slowest but strongest compression .HP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP modification options .IP These modification options will affect every DataArray element specified by the \fB\-mod_DAs\fR option. If the option is not used, then ALL DataArray elements will be affected. .TP \fB\-mod_add_data\fR : add data to empty DataArray elements .TP Allocate data in every DataArray element. Datasets can be .TP created without any stored data. This will allocate data .IP and fill it with zeros of the given type. .TP \fB\-mod_DA_atr\fR NAME VALUE : set the NAME=VALUE attribute pair .IP e.g. \fB\-mod_DA_atr\fR Intent NIFTI_INTENT_ZSCORE .IP This option will set the DataArray attribute corresponding to NAME to the value, VALUE. Attribute name=value pairs are specified in the gifti DTD (see \fB\-gifti_dtd_url\fR). .IP One NAME=VALUE pair can be specified per \fB\-mod_DA_atr\fR option. Multiple \fB\-mod_DA_atr\fR options can be used. .HP \fB\-mod_DA_meta\fR NAME VALUE : set the NAME=VALUE pair in DA's MetaData .IP e.g. \fB\-mod_DA_meta\fR Description 'the best dataset, ever' .IP Add a MetaData entry to each DataArray element for this NAME and VALUE. If 'NAME' already exists, the old value is replaced by VALUE. .TP \fB\-mod_DAs\fR i0 i1 ... : specify the set of DataArrays to modify .IP e.g. \fB\-mod_DAs\fR 0 4 5 .TP Specify the list of DataArray elements to modify. All the .TP \fB\-mod_\fR* options apply to this list of DataArray indices. If .IP no \fB\-mod_DAs\fR option is used, the operations apply to ALL DataArray elements. .IP Note that the indices are zero\-based, 0 .. numDA\-1. .TP \fB\-mod_gim_atr\fR NAME VALUE : set the GIFTI NAME=VALUE attribute pair .IP e.g. \fB\-mod_gim_atr\fR Version 3.141592 .IP Set the GIFTI element attribute corresponding to NAME to the value, VALUE. .IP Given that numDA is computed and version will rarely change, this option will probably not feel much love. .HP \fB\-mod_gim_meta\fR NAME VALUE : add this pair to the GIFTI MetaData .IP e.g. \fB\-mod_gim_meta\fR date "`date`" .IP Add a MetaData entry to each DataArray element for this NAME and VALUE pair. If NAME exists, VALUE will replace the old value. .TP \fB\-mod_to_float\fR : change all DataArray data to float .IP Convert all DataArray elements of all datasets to datatype NIFTI_TYPE_FLOAT32 (4\-byte floats). If the data does not actually exist, only the attribute will be set. Otherwise all of the data will be converted. There are some types for which this operation may not be appropriate. .HP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP creation (new dataset) options .TP \fB\-new_dset\fR : create a new GIFTI dataset .TP \fB\-new_numDA\fR NUMDA : new dataset will have NUMDA DataArray elements e.g. \fB\-new_numDA\fR 3 .TP \fB\-new_intent\fR INTENT: DA elements will have intent INTENT e.g. \fB\-new_intent\fR NIFTI_INTENT_FTEST .TP \fB\-new_dtype\fR TYPE : set datatype to TYPE e.g. \fB\-new_dtype\fR NIFTI_TYPE_FLOAT32 .HP \fB\-new_ndim\fR NUMDIMS : set Dimensionality to NUMDIMS (see \fB\-new_dims\fR) .TP \fB\-new_dims\fR D0...D5 : set dims[] to these 6 values e.g. \fB\-new_ndim\fR 2 \fB\-new_dims\fR 7 2 0 0 0 0 .TP \fB\-new_data\fR : allocate space for data in created dataset .HP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP comparison options .TP \fB\-approx_gifti\fR : approximate comparison of GIFTI dsets .IP This compares all data elements of the two GIFTI structures. The attributes, MetaData, etc. are ignored if they do not pertain directly to the data. .IP The comparisons allow for small, fractional differences, which depend on the datatype. .TP \fB\-compare_gifti\fR : specifies to compare two GIFTI datasets .IP This compares all elements of the two GIFTI structures. The attributes, LabelTabels, MetaData are compared, and then each of the included DataArray elements. All sub\-structures of the DataArrays are compared, except for the actual 'data', which requires the '\-compare_data' flag. .IP There must be exactly 2 input datasets to use this option. See example #7 for sample usage. .TP \fB\-compare_data\fR : flag to request comparison of the data .IP Data comparison is done per DataArray element. .IP Comparing data is a separate operation from comparing GIFTI. Neither implies the other. .TP \fB\-compare_verb\fR LEVEL : set the verbose level of comparisons .TP Data comparison is done per DataArray element. Setting the .IP verb level will have the following effect: .IP 0 : quiet, only return whether there was a difference 1 : show whether there was a difference 2 : show whether there was a difference per DataArray 3 : show all differences .HP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .IP MetaData copy options .TP \fB\-copy_gifti_meta\fR MD_NAME : copy MetaData with name MD_NAME .IP e.g. \fB\-copy_gifti_meta\fR AFNI_History .IP Copy the MetaData with the given name from the first input dataset to the second (last). This applies to MetaData at the GIFTI level (not in the DataArray elements). .TP \fB\-copy_DA_meta\fR MD_NAME : copy MetaData with name MD_NAME .IP e.g. \fB\-copy_DA_meta\fR intent_p1 .IP Copy the MetaData with the given name from the first input dataset to the second (last). This applies to MetaData at DataArray level. .IP This will apply to all DataArray elements, unless the \fB\-DA_index_list\fR option is used to specify a zero\-based index list. .IP see also \fB\-DA_index_list\fR .PP \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR see the GIfTI community web site at: .IP http://www.nitrc.org/projects/gifti .PP R Reynolds, National Institutes of Health \fB\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\fR .SH "SEE ALSO" The full documentation for .B gifti_tool is maintained as a Texinfo manual. If the .B info and .B gifti_tool programs are properly installed at your site, the command .IP .B info gifti_tool .PP should give you access to the complete manual.