A *.simj file stores settings for the Turbo-BrainVoyager Data Simulator. The file is a plain text file in JSON format and contains the simulator configuration, including the selected protocol and region files, ROI/condition effect settings, confounds, noise, simulated motion, scan geometry, and output settings.
SIMJ files are useful for saving a complete simulation setup so that it can be loaded again later or reused for similar simulation runs.
General structure
A *.simj file contains a top-level Version entry and several main sections:
{ "Version": 1, "Paradigm": {}, "Confounds": {}, "Noise": {}, "Motion": {}, "Scan": {}, "Output": {} }
The main sections correspond to the main setting groups in the Data Simulator.
Main sections
| Section | Description |
|---|---|
Version | File format version. |
Paradigm | Stores the protocol file, region file, and ROI/condition effect settings. |
Confounds | Stores constant signal, trend, and DCT confound settings. |
Noise | Stores random noise and AR(1) noise settings. |
Motion | Stores simulated translation and rotation settings. |
Scan | Stores image matrix, voxel/slice geometry, number of volumes, TR, and optional MNI slicing/translation settings. |
Output | Stores output folder, TBV project/settings file, data subfolder, and generated image file prefix. |
Paradigm section
The Paradigm section defines the input files and ROI/condition simulation parameters.
Example:
{ "Paradigm": { "ProtocolFile": "./Example.prt", "RegionsFile": "./Example.voi", "ROIConditionTable": [ [ { "EffectSize": 1.0, "PatternAcrossVoxelSD": 0.2 }, { "EffectSize": 0.5, "PatternAcrossVoxelSD": 0.1 } ] ] } }
| Field | Description |
|---|---|
ProtocolFile | Path to the protocol file, usually a *.prt file. |
RegionsFile | Path to the region file used for the simulation, for example a VOI/ROI file. |
ROIConditionTable | Nested list of ROI/condition settings. The first level corresponds to ROIs, and the second level corresponds to conditions. |
EffectSize | Simulated effect size for the respective ROI and condition. |
PatternAcrossVoxelSD | Across-voxel standard deviation used for the simulated condition pattern. |
Confounds section
The Confounds section stores simulated non-neural signal components.
Example:
{ "Confounds": { "ConstantMean": 1000.0, "ConstantSD": 0.0, "AddLinearTrend": true, "LinearTrendMean": 0.0, "LinearTrendSD": 0.0, "AddDCT1": false, "DCT1Mean": 0.0, "DCT1SD": 0.0, "AddDCT2": false, "DCT2Mean": 0.0, "DCT2SD": 0.0 } }
| Field | Description |
|---|---|
ConstantMean / ConstantSD | Mean and standard deviation of the constant signal component. |
AddLinearTrend | Enables or disables a simulated linear trend. |
LinearTrendMean / LinearTrendSD | Mean and standard deviation of the linear trend. |
AddDCT1, AddDCT2 | Enable or disable DCT confound components. |
DCT1Mean, DCT1SD, DCT2Mean, DCT2SD | Mean and standard deviation values for the DCT components. |
Noise section
The Noise section stores random noise settings.
Example:
{ "Noise": { "NoiseSD": 1.0, "AddAR1": true, "AR1Mean": 0.2, "AR1SD": 0.05 } }
| Field | Description |
|---|---|
NoiseSD | Standard deviation of the simulated noise. |
AddAR1 | Enables or disables AR(1) noise. |
AR1Mean / AR1SD | Mean and standard deviation of the AR(1) parameter. |
Motion section
The Motion section stores simulated head-motion settings for translation and rotation.
Example:
{ "Motion": { "EnableTranslX": true, "EnableTranslY": true, "EnableTranslZ": true, "EnableRotX": true, "EnableRotY": true, "EnableRotZ": true, "TranslationXSD": 0.1, "TranslationYSD": 0.1, "TranslationZSD": 0.1, "RotationXSD": 0.1, "RotationYSD": 0.1, "RotationZSD": 0.1, "TXLinearTrend": 0.0, "TYLinearTrend": 0.0, "TZLinearTrend": 0.0, "RXLinearTrend": 0.0, "RYLinearTrend": 0.0, "RZLinearTrend": 0.0 } }
| Field | Description |
|---|---|
EnableTranslX, EnableTranslY, EnableTranslZ | Enable or disable simulated translation in x, y, and z direction. |
EnableRotX, EnableRotY, EnableRotZ | Enable or disable simulated rotation around x, y, and z axes. |
TranslationXSD, TranslationYSD, TranslationZSD | Standard deviation of simulated translation. |
RotationXSD, RotationYSD, RotationZSD | Standard deviation of simulated rotation. |
TXLinearTrend, TYLinearTrend, TZLinearTrend | Linear trend values for translation. |
RXLinearTrend, RYLinearTrend, RZLinearTrend | Linear trend values for rotation. |
Scan section
The Scan section defines the simulated scan geometry and timing.
Example:
{ "Scan": { "MatrixSize": "64 x 64", "PixelSize": 3.0, "SliceThickness": 3.0, "NrOfSlices": 30, "NrOfVolumes": 200, "VolumeTR": 2000, "SliceMNIBrain": true, "TranslationX": 0.0, "TranslationY": 0.0, "TranslationZ": 0.0 } }
| Field | Description |
|---|---|
MatrixSize | Image matrix size used for the simulated data. |
PixelSize | In-plane pixel size. |
SliceThickness | Slice thickness. |
NrOfSlices | Number of simulated slices. |
NrOfVolumes | Number of simulated volumes. |
VolumeTR | Repetition time, usually in milliseconds. |
SliceMNIBrain | Enables or disables slicing from an MNI brain volume. |
TranslationX, TranslationY, TranslationZ | Translation values used when slicing the MNI brain volume. |
Output section
The Output section defines where the simulated data will be written and how the generated files will be named.
Example:
{ "Output": { "BaseDirectory": "./SimData", "TBVJFile": "Simulation.tbvj", "DataSubFolder": "Run01", "ImageFilePrefix": "vol" } }
| Field | Description |
|---|---|
BaseDirectory | Base output folder for the generated simulation data. |
TBVJFile | TBV settings/project file associated with the simulated run. |
DataSubFolder | Subfolder name for the generated image data. |
ImageFilePrefix | Prefix used for generated image files. |
Path handling
File and folder paths can be stored as absolute paths or as relative paths. If a referenced file or output folder is located in the same folder as the *.simj file, or in a subfolder, the path may be written using ./.
Example:
"ProtocolFile": "./Example.prt"
This makes the simulation setup easier to move together with its related files.
Important notes
A *.simj file must remain valid JSON. Use double quotes around text values, separate entries with commas, and use true or false for enabled/disabled settings.
When editing a *.simj file manually, use a plain text editor. Do not edit the file in a word processor, because hidden formatting characters can make the file unreadable.
For ROIConditionTable, the order of values is important. The outer list represents ROIs, and each ROI contains a list of condition entries. Each condition entry contains an EffectSize and a PatternAcrossVoxelSD value.