The Format of VTC Files

The Format of VTC Files

A VTC file contains the functional data (time series) of one experimental run (one functional scan) in a 3D space (native, AC-PC, Talairach, MNI) without slice gap. The binary file contains a variable-length header followed by the actual 4D data. The data is not stored as a sequence of volumes (time points), but contains for each voxel a continous stream of values representing the voxel's time course. Having time as the inner loop in this way speeds up reading time course data for voxels from a file.

VTC Header

BYTES

DATA TYPE

DEFAULT

DESCRIPTION

2

short int

2

version number

N

byte

 

name of FMR file whose STC data has been transformed (*1)

M

byte

<none>

name of the linked protocol (PRT) file (*1)

2

short int

 

NrOfVolumes (number of volumes, measurements, time points)

2

short int

3

VTC resolution, i.e. 3 -> one voxel = 3 x 3 x 3 mm (*2)

2

short int

57

XStart (*3)

2

short int

231

XEnd (*3)

2

short int

52

YStart (*3)

2

short int

172

YEnd (*3)

2

short int

59

ZStart (*3)

2

short int

197

ZEnd (*3)

2

short int

 

Hemodynamic delay, simple shift value (*4)

4

float

 

TR [ms] (*4)

4

float

 

Hemodynamic function, delta parameter (*4)

4

float

 

Hemodynamic function, tau parameter (*4)

2

short int

 

Segment size, used for time course separation (*4)

2

short int

 

Segment offset, used for time course separation (*4)

(*1) Variable length, the end of the name is indicated by '0'.

(*2) The VTC resolution is defined with respect to the resolution of a VMR file. Typically, one VMR voxel has the resolution of 1 (Talairach) mm3. A VTC resolution value of 3 means that one VTC voxel encompasses 3 x 3 x 3 = 27 VMR voxels. Other resolutions are possible,  i.e. 1 and 2.

(*3) These values indicate the relative position within a VMR volume (must be a 2563 data set for Talairach VTC data, (see explanations below).

(*4) These values are included in the header only if the file version number is at least 2. You can ignore these values, they might be dropped in future versions.

 

VTC Data

Each data element (intensity value) is represented in 2 bytes (unsigned short). The data is organized in four loops:

DimZ

DimY

DimX

DimT

The inner loop (DimT = NrOfVolumes) contains the time series for each VTC voxel. The spatial dimensions can be computed from the header info as follows:

DimX = (XEnd-XStart) / VTC-resolution
DimY = (YEnd-YStart) / VTC-resolution
DimZ = (ZEnd-ZStart) / VTC-resolution

Example. With a VTC resolution of 3 and the default dimension values provided above, this results in:

DimX = 58
DimY = 40
DimZ = 46

With these values and a typical NrOfVolumes of 200, the total number of bytes (for data without header) is therefore:

DimX * DimY * DimZ * NrOfVolumes * 2 = 42,688,000

or approximately 40MB.

Note that the axes terminology follows the internal BrainVoyager (BV) format. The mapping to Talairach axes is as follows:

BV X front -> back = Y in Tal space
BV Y top -> bottom = Z in Tal space
BV Z left -> right = X in Tal space