JSON Input | Short | Long command | MATLAB/Octave | Value | Meaning | MCX | MCXLAB | MCXCL | MCXLABCL | MMC | MMCLAB | MMCL | MMCLABCL |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Domain.VolumeFile | cfg.vol | 2D or 3D array | Domain volume | Y | Y | Y | Y | ||||||
Mesh.ID | cfg.{node,elem} | mesh data | Domain mesh | Y | Y | Y | Y | ||||||
Mesh.InitElem | cfg.e0 | integer | Initial element index (>0) | Y | Y | Y | Y | ||||||
Domain.Media | cfg.prop | (media count+1)x4 array | Optical properties | Y | Y | Y | Y | Y | Y | Y | Y | ||
Forward.T0 | cfg.tstart | float | Start time in second | Y | Y | Y | Y | Y | Y | Y | Y | ||
Forward.T1 | cfg.tend | float | End time in second | Y | Y | Y | Y | Y | Y | Y | Y | ||
Forward.Dt | cfg.tstep | float | Time gate width in second | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Source.Type | cfg.srctype | string ('pencil') | Source type | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Source.Pos | cfg.srcpos | 1x4 float | Source position in grid unit | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Source.Dir | cfg.srcdir | 1x4 float | Source direction (vx,vy,vz) and focal length | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Source.Param1 | cfg.srcparam1 | 1x4 float | Source parameters set 1 | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Source.Param2 | cfg.srcparam2 | 1x4 float | Source parameters set 2 | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Source.Pattern | cfg.srcpattern | 2D or 3D array | Source pattern data | Y | Y | Y | Y | Y | Y | Y | Y | ||
Optode.Detector.{Pos/R} | cfg.detpos | Nx4 array | Detector positions and radii | Y | Y | Y | Y | Y | Y | Y | Y | ||
Forward.N0 | cfg.n0 | float | Background refractive index | Y | Y | Y | Y | ||||||
-f | --input | - | string | Input file (.json or .inp) | Y | Y | Y | Y | Y | Y | Y | Y | |
Session.Photons | -n | --photon | cfg.nphoton | integer (0) | Total photon number | Y | Y | Y | Y | Y | Y | Y | Y |
-r | --repeat | cfg.repeat | integer (1) | Repeat count (positive int) | Y | Y | Y | Y | |||||
Session.DoMismatch | -b | --reflect | cfg.isreflect | bool (1) | Whether to do reflection/transmission | Y | Y | Y | Y | Y | Y | Y | Y |
-B | --bc | cfg.bc | 6-char-string (______) | Boundary conditions at 6 directions | Y | Y | Y | Y | |||||
Domain.LengthUnit | -u | --unitinmm | cfg.unitinmm | float (1) | Voxel edge length in mm | Y | Y | Y | Y | Y | Y | Y | Y |
Session.DoNormalize | -U | --normalize | cfg.isnormalize | bool (1) | Whether to normalize the solutions | Y | Y | Y | Y | Y | Y | Y | Y |
Session.RNGSeed | -E | --seed | cfg.seed | integer (0) | RNG seed (or a .mch file if replay) | Y | Y | Y | Y | Y | Y | Y | Y |
Domain.OriginType | -z | --srcfrom0 | cfg.issrcfrom0 | bool (0) | Whether the lower-corner of the domain is 0,0,0 | Y | Y | Y | Y | ||||
-R | --skipradius | cfg.skipradius | float (-2) | Whether to use atomic operations | Y | Y | Y | Y | |||||
-k | --voidtime | cfg.voidtime | bool (1) | Whether to count the time-of-flight before entry | Y | Y | Y | Y | Y | Y | Y | Y | |
-Y | --replaydet | cfg.replaydet | integer (-1) | Which detetor to be replayed | Y | Y | Y | Y | Y | Y | Y | Y | |
Session.DoSpecular | -V | --specular | cfg.isspecular | bool (1) | Whether to do specular reflection upon entry | Y | Y | Y | Y | Y | Y | Y | Y |
-e | --minenergy | cfg.minenergy | float (0) | Minimum energy to trigger Russian Roulette | Y | Y | Y | Y | Y | Y | Y | Y | |
-g | --gategroup | cfg.maxgate | integer (1) | Maximum time gate to be simulated together | Y | Y | Y | Y | Y | Y | |||
-L | --listgpu | mcxlab('gpuinfo') | List available GPUs | Y | Y | Y | Y | Y | Y | Y | Y | ||
-t | --thread | cfg.nthread | integer (16384) | Number of total threads | Y | Y | Y | Y | Y | Y | |||
-T | --blocksize | cfg.nblocksize | integer (64) | Size of thread block | Y | Y | Y | Y | Y | Y | |||
Session.DoAutoThread | -A | --autopilot | cfg.autopilot | bool (1) | Choosing thread/block automatically | Y | Y | Y | Y | Y | Y | ||
-G | --gpu | cfg.gpuid | integer (1) or 01 string | Specify which GPUs to use | Y | Y | Y | Y | Y | Y | |||
-W | --workload | cfg.workload | float,float,... | Workload split between GPUs | Y | Y | Y | Y | Y | Y | |||
-I | --printgpu | - | Print GPU information then run simulation | Y | Y | ||||||||
Shapes | -P | --shapes | cfg.shapes | JSON string '{...}' | JSON-based domain descriptors | Y | Y | Y | Y | ||||
Domain.MediaFormat | -K | --mediabyte | array types in cfg.vol | 1,2,4,101,... (1) | Volume data voxel format | Y | Y | Y | Y | ||||
-a | --array | - | bool (0) | Whether the array is in row-major | Y | Y | |||||||
Session.ID | -s | --session | - | a sring ('default') | Output file stub | Y | Y | Y | Y | ||||
Session.OutputType | -O | --outputtype | cfg.outputtype | XFEJPM (X) | Output data type | Y | Y | Y | Y | Y | Y | Y | Y |
Session.DoPartialPath | -d | --savedet | 2nd output of mcxlab | bool (1) | Whether to save detected photons | Y | Y | Y | Y | Y | Y | Y | Y |
Session.SaveDataMask | -w | --savedetflag | cfg.savedetflag | DSPMXVW (DP) | What fields to save per detected photon | Y | Y | Y | Y | ||||
Session.DoSaveExit | -x | --saveexit | cfg.issaveexit | bool (0) | Whether to save exit positions and dir | Y | Y | Y | Y | Y | Y | Y | Y |
-X | --saveref | cfg.issaveref | bool (0) | Whether to save diffuse reflectance | Y | Y | Y | Y | Y | Y | Y | Y | |
Session.DoDCS | -m | --momentum | cfg.ismomentum | bool (0) | Whether to save momentum transfer | Y | Y | Y | Y | Y | Y | Y | Y |
Session.DoSaveSeed | -q | --saveseed | cfg.issaveseed | bool (0) | Whether to save RNG seeds for replay | Y | Y | Y | Y | Y | Y | Y | Y |
-M | --dumpmask | 3rd output of mcxlab | bool (0) | Return the preprocessed volume | Y | Y | Y | Y | |||||
-H | --maxdetphoton | cfg.maxdetphoton | integer (1000000) | Maximum count of detected photon | Y | Y | Y | Y | Y | Y | Y | Y | |
Session.DoSaveVolume | -S | --save2pt | 1st output of mcxlab | bool (1) | Whether to save fluence | Y | Y | Y | Y | Y | Y | Y | Y |
Session.OutputFormat | -F | --outputformat | - | mc2,nii,hdr (mc2) | Output file format | Y | Y | Y | Y | ||||
-h | --help | help mcxlab | Print help info | Y | Y | Y | Y | Y | Y | Y | Y | ||
-v | --version | - | Print version info | Y | Y | ||||||||
-l | --log | - | bool (0) | Print info to a file | Y | Y | Y | Y | |||||
-i | --interactive | - | Interactive mode | Y | Y | Y | Y | ||||||
Session.Debug | -D | --debug | cfg.debuglevel | RMP ('') | Debug flags | Y | Y | Y | Y | Y | Y | Y | Y |
-k | --kernel | - | string ('') | Path to a user-specified kernel file | Y | ||||||||
-o | --optlevel | cfg.optlevel | 0,1,2,3 (3) | OpenCL optimization level | Y | Y | |||||||
-J | --compileropt | - | string ('') | OpenCL JIT compiler flags | Y | Y | |||||||
Session.RootPath | --root | cfg.root | string ('') | Root path of the output files | Y | Y | Y | Y | |||||
--gscatter | cfg.gscatter | integer (1e9) | Number of scatter events before isotropic scattering | Y | Y | Y | Y | Y | Y | Y | Y | ||
--maxvoidstep | cfg.maxvoidstep | integer (1000) | Maximum steps in the background | Y | Y | Y | Y | ||||||
--maxjumpdebug | cfg.maxjumpdebug | integer (10000000) | Maximum trajectory points | Y | Y | Y | Y | ||||||
--internalsrc | cfg.internalsrc | bool (0) | A point source inside the non-zero voxel | Y | Y |