Developer Guide (2.6) - The Format of FMR Files
- Details
- Category: File Formats
- Last Updated: 21 November 2022
- Published: 17 April 2018
- Hits: 3146
The Format Of FMR Files
FMR project files are simple text files containing the information defining a functional project created from raw MRI data, typically from EPI sequences. The actual time course data is contained in STC ("slice time course") files, which are referenced in the FMR file. The file need not be changed directly, all entries can be conveniently inspected and modified using the FMR Properties dialog, which can be invoked with theFile > FMR Properties menu item. An important entry is the "Prefix:" string, which specifies a link to the corresponding STC file, which actually contains the time series data. In the more recent file versions, all data is contained in one STC file, e.g., if the FMR file is saved as "CG_OBJECTS.fmr", the prefix will be "CG_OBJECTS" and the functional data will reside in the single file "CG_OBJECTS.stc". Supported but not recommended is the older FMR file format that stores the time series data of each slice in a separate .stc file. In this case the prefix contains a "-" sign, e.g. "CG_OBJECTS-" and the files "CG_OBJECTS-1.stc", "CG_OBJECTS-2.stc" and so on contains all time series data of slice 1, 2 and so on. The way how data is stored in one or more STC files is described by the "DataStorageFormat" entry. The number of time points is stored in the entry NrOfVolumes. Since file version 6, the "DataType" format specifies whether the data in STC files is stored as 2-byte integer (old format) or as 4-byte float (new format, used as default) values.
Most entries of an FMR file are self explanatory. The structure of the file is similar also for DMR files. The format of the current FMR file version together with short explanatory descriptions of the entries is given in the following table (changes from version "5" are indicated):
ENTRY | DESCRIPTION |
FileVersion: | The version of the FMR file: 7 |
NrOfVolumes: | Number of time points per pixel (data points, samples) |
NrOfSlices: | Number of recorded slices |
NrOfSkippedVolumes: | Number of volumes skipped during project creation |
Prefix: | Link to STC file containing the time series data |
DataStorageFormat: | Flag indicating how data are stored in STC file(s) (*1) |
DataType: | flag: 1 - 2-byte integer, 2 - 4-byte real (float) values (new v6) |
TR: | TR [msec] |
InterSliceTime: | Inter slice time (IST) [msec] |
TimeResolutionVerified: | Flag ensuring that "TR" and "IST" are correct |
TE: | TE [msec] |
SliceAcquisitionOrder: | Order in which slices are scanned |
SliceAcquisitionOrderVerified: | Flag ensuring that "SliceAcquisitionOrder" is correct |
ResolutionX: | Nr of columns of slice image matrix (5) |
ResolutionY: | Nr of rows of slice image matrix (5) |
LoadAMRFile: | Link to inplane anatomical AMR project (*3) |
ShowAMRFile: | flag: 1 - show linked AMR, 0 - show first image of STCs |
ImageIndex: | slice shown in the upper left subwindow |
LayoutNColumns: | Number of columns to show slices |
LayoutNRows: | Number of rows to show slices |
LayoutZoomLevel: | Zoom level range: 1 to 10 (1 = slice resolution) |
SegmentSize: | Subdivision (vertical lines) in time course plots (*4) |
SegmentOffset: | Offset for first vertical line of subdivisions |
ProtocolVersion: | Version of protocol access |
NrOfLinkedProtocols: | at present, only "0" and "1" fully supported |
N x ProtocolFile: | Link to the protocol (.PRT) file(s) |
InplaneResolutionX: | Resolution of one pixel in x dimension [mm] (*2) |
InplaneResolutionY: | Resolution of one pixel in y dimension [mm] (*2) |
SliceThickness: | Slice thickness without slice gap [mm] (*2) |
SliceGap: | The gap between slices [mm] (*2) |
VoxelResolutionVerified: | Flag ensuring that pixel resolution values are correct |
PositionInformationFromImageHeaders | descriptive string introducing next entries |
PosInfosVerified: | Flag indicating that info could be read from header |
CoordinateSystem: | "1" for standard DICOM |
Slice1CenterX: | X coordinate of center of first slice |
Slice1CenterY: | Y coordinate of center of first slice |
Slice1CenterZ: | Z coordinate of center of first slice |
SliceNCenterX: | X coordinate of center of last slice |
SliceNCenterY: | Y coordinate of center of last slice |
SliceNCenterZ: | Z coordinate of center of last slice |
RowDirX: | Slice row direction vector, x component |
RowDirY: | Slice row direction vector, y component |
RowDirZ: | Slice row direction vector, z component |
ColDirX: | Slice column direction vector, x component |
ColDirY: | Slice column direction vector, y component |
ColDirZ: | Slice column direction vector, z component |
NRows: | Nr of rows of slice image matrix |
NCols: | Nr of columns of slice image matrix |
FoVRows: | Extent of field of view (FoV) in row direction [mm] |
FoVCols: | Extent of field of view (FoV) in column direction [mm] |
SliceThickness: | Slice thickness in mm |
GapThickness: | Gap thickness in mm |
NrOfPastSpatialTransformations: | Always "0", not used at present |
LeftRightConvention: | "Radiological" (left-is-right), "Neurological" (left-is-left), "Unknown" |
FirstDataSourceFile: | Name of file selected when loading original data from disk |
MultibandSequence: | from FMR v7 |
SliceTimingTableSize: | number, from FMR v7 |
<TableSize x values> | only if SliceTimingTableSize > 0 |
... | |
AcqusitionTime: | NA or number (float) |
(1) The "DataStorageFormat" entry was introduced in file version "5". A value of "1" indicates that the STC data is stored according to the old approach with one separate file per slice. A value of "2" indicates that the whole data is stored in a single STC file; the data within the file is stored in the same way as in the old style. Values "3" and "4" are used at present only for DMR-DWI projects. Storage format "3" keeps the data not as "slice time courses", but as a series of volumes within a single file. Storage format "4" stores the data in the form of VTCs, i.e. the time course values for a voxel are located in neighboring memory locations (time as inner loop).
(2) The AMR file might be from a "real" T1-weighted scan or showing the functional slices itself, i.e. the first scan with high T1-contrast.
(3) A vertical line is placed every n-th measurement, i.e. every 10th. This subdivision is only used, if no protocol file is linked.
(4) If a protocol is linked, time course plots are subdivided based on the protocol and not on the values for SegmentSize and SegmentOffset The "LeftRightConvention" entry replaces the "RadiologicalConvention" entry used in previous versions; instead of the two entries "YES" and "NO", the new "LeftRightConvention" is able to indicate that the header did not provide information about what is left and what is right ("Unknown"), which should only occur when reading non-standard data files.
(5) In BrainVoyager 22.4, the fields "ResolutionX" and "ResolutionY" are replaced by "NrOfColumns" and "NrOfRows". This might give the message "Can not read FMR file - unexpected tokens encountered!" when opening in previous BrainVoyager versions, for example 22.2 and 21.4. To open the files in previous BrainVoyager versions, replace the fields "NrOfColumns" and "NrOfRows" in the *.fmr file by "ResolutionX" and "ResolutionY" in a text editor.