ODIN
|
micalc: Performs basic mathematics with data sets File formats are automatically identified by their file extension. For binary operations with two input files, the protocol of the first input file will be used for the output file. This program is part of odin 2.0.5 with configuration using_gcc debug gui(:5) standalone dl posix_threads libz gsl nifti vtk dicom png ismrmrd gdb micalc can be used in one of the following modes: Binary operation with data sets and/or scalar numbers: micalc [-if1 <input-file1> | -in1 <input-number1>] -op <operation(+,-,*,/,min,max,lcorr,kcorr)> [-if2 <input-file2> | -in2 <input-number1>] -of <output-file> Accumulation/reduction of one data set: micalc -if <input-file> -op <operation(+,*,mean,median,stdev,min,max)> Transformation (magnitude, logarithm, ...) of one data set: micalc -if <input-file> -op <operation(abs,sqrt,log,exp,-,/,acos)> -of <output-file> Statistics of one data set: micalc -if <input-file> [-mean <time-mean-file>] [-stdev <time-stdev-file>] [-fluct <relative-time-stdev-file>] [-tcourse <average time course of all voxels>] [-hist <histogram> -histslots <numofslots> [-histmin <minval>] [-histmax <maxval>] [-rightstairs] [-histfract] [-loghist] [-histslotmap <file>]] [-cog <center-of-gravity-file>] Extra options: -mask <Binary mask file: voxels with zeroes are discarded> Protocol options (overrides parameters in input data): -aa: azimuthal rotation angle [deg] (default=0.0) -ah: height rotation angle [deg] (default=0.0) -ai: inplane rotation angle [deg] (default=0.0) -date: Date of scan [yyyymmdd] (default=20211015) -fp: FOV in phase direction [mm] (default=220.0) -fr: FOV in read direction [mm] (default=220.0) -fs: FOV in slice direction [mm] (default=5.0) -nr: Number of consecutive measurements (default=1) -nx: Number of points in read direction (default=128) -ny: Number of points in phase direction (default=128) -nz: Number of points in slice direction (default=1) -pbirth: Patients date of birth [yyyymmdd] (default=00000000) -pid: Unique patient identifier (default=Unknown) -pname: Full patient name (default=Unknown) -psex: Patients sex (options=M F O , default=O) -psize: Patients size/height [mm] (default=2000.0) -pweight: Patients weight [kg] (default=50.0) -rcname: Name of receive coil (default=Unknown) -scient: Scientist Name (default=Unknown) -sd: Inter-slice distance (from center to center) [mm] (default=10.0) -serd: Series Description (default=Unknown) -serno: Series Number (default=1) -st: Slice thickness [mm] (default=5.0) -stud: Study Description (default=Unknown) -tcname: Name of transmit coil (default=Unknown) -te: Time-to-echo of the sequence [ms] (default=80.0) -time: Time of scan [hhmmss] (default=113648) -tr: Time between consecutive excitations [ms] (default=1000.0) File read options (will be applied to input data before processing): -cplx: Treat data as complex and extract the given component (options=none abs pha real imag , default=none) -ds: Dataset index to extract if multiple datasets are read -filter: Read only those datasets which protocol parameter 'key' contains the string 'value' (given in the format 'key=value') -fmap: For reduced memory usage, keep filemapping after reading (raw) data, but writing into the array will result in a crash -framesplit: Force splitting frames with different acquisition times into separate protocol-data pairs -ldr: If multiple LDR (labeled data record) arrays are present, select this -rdialect: Read data using given dialect of the format (default is no dialect) -rf: Read format, use it to override file extension (options=autodetect 3db analyze asc coi dat dcm double float gz h5 hdr idx ima interfile jdx mag mhd nii ph png pos pro reg s16bit s32bit s8bit smp u16bit u32bit u8bit vtk xml xpro , default=autodetect) -skip: Skip this amount of bytes before reading the raw data (default=0) File write options (will be applied to output data after processing): -append: Append to existing file, only for raw data -fnamepar: Space-separated list of protocol parameters to include when creating unique file names -noscale: Do not rescale values when storing integers -split: Force splitting of protocol-data pairs into separate files. -type: Image representation type (options=automatic float double s32bit u32bit s16bit u16bit s8bit u8bit , default=automatic) -wdialect: Write data using given dialect of the format (default is no dialect) -wf: Write format, use it to override file extension (options=autodetect 3db analyze asc coi dat dcm double float gz h5 hdr idx ima interfile jdx mag mhd nii ph png pos pro reg s16bit s32bit s8bit smp u16bit u32bit u8bit vtk xml xpro , default=autodetect) -wp: Store the protocol separately to this file. Filters/processing applied to input file(s) and mask, applied in the order they appear on the command line: -align <filename,In-plane blowup factor (default=0)> : Align data to the geometry (voxel locations) of an external file -automask <skip leftmost slots (default=0),dump histogram,dump histogram fit> : Create binary mask using automatic histogram-based threshold -cluster : Create clusters of non-zero adjacent/next-neighbours voxels, sorted by size -convolve <convolution kernel (default=noFunction) (Gauss NoFilter Triangle Hann Hamming CosSq Blackman BlackmanNuttall Exp ),full-width-at-half-maximum of kernel [mm] (default=0.0)> : Convolution in spatial dimensions -detrend <Number of low frequency components to be removed (default=5),Zero mean of resulting timecourse (default=No)> : Remove slow drift over time -dilate <radius of kernel [mm] (default=0.0)> : dilate image using spherical kernel as structuring element -edit <string in the format (timerange,slicerange,phaserange,readrange),value (default=0.0)> : Edit voxel values with range specifed as single position, or 'all', or explict range, optionally with increment (e.g. 1-10:3) -erode <radius of kernel [mm] (default=0.0)> : erode image using spherical kernel as structuring element -genmask <lower threshold (default=0.0),upper threshold (default=0.0)> : Create binary mask including all voxels with value in given range -inv : Invert image values, i.e. lowest to highest and vice versa -isotrop <voxelsize [mm] (default=0.0)> : make image voxels isotrop through interpolation (image geometry will not change), set to zero for minimum extent -lowpass <Cut-off frequency [Hz] (default=0.0)> : Lowpass filtering -max <Maximum value (default=0.0)> : Clip all values above maximum value -maxip <direction (time slice phase read none )> : Perform maximum intensity projection over given direction -merge : Merge datasets into a single dataset by expanding the time dimension -min <Minimum value (default=0.0)> : Clip all values below minimum value -minip <direction (time slice phase read none )> : Perform minimum intensity projection over given direction -noNaN <Replacement value (default=0.0)> : Replaces every NaN by the given value -nonzeromask : Create binary mask including all voxels with non-zero value -pflip : Flip data in phase direction -prange <single position, or 'all', or explict range, optionally with increment (e.g. 1-10:3)> : Select range in phase direction -proj <direction (time slice phase read none )> : Perform mean projection over given direction -quantilmask <quantil (default=0.0)> : Create binary mask including all voxels above the given fractional threshold -resample <new size (default=0)> : Temporal resize of image data -resize <slice-size (default=0),phase-size (default=0),read-size (default=0)> : Spatial resize of image data -reslice <requested orientation (default=coronal) (sagittal coronal axial )> : reslices the image to a given orientation -rflip : Flip data in read direction -rot <angle [deg] (default=0.0),kernel size [pixel] (default=1.41421)> : In-plane rotation -rrange <single position, or 'all', or explict range, optionally with increment (e.g. 1-10:3)> : Select range in read direction -scale <Slope (default=1.0),Offset (default=0.0)> : Rescale image values -sflip : Flip data in slice direction -shift <readDirection shift [pixel] (default=0.0),phaseDirection shift [pixel] (default=0.0),sliceDirection shift [pixel] (default=0.0)> : Shift data spatially -slicetime <space-separated list of slice indices in order of acquisition> : Correct for different acquisition time points of slices -spheremask <Position string in the format (slicepos,phasepos,readpos),radius [mm] (default=0.0)> : Create binary spherical mask -splice <dimension of the data to be spliced (time slice phase read none )> : splices the image in the given direction -srange <single position, or 'all', or explict range, optionally with increment (e.g. 1-10:3)> : Select range in slice direction -sum <direction (time slice phase read none )> : Perform sum projection over given direction -swapdim <[rps][-],[rps][-],[rps][-]> : swap/reflect/transpose dimensions by specifying a direction triple with optional reflection sign appended -tile <columns (default=0)> : Combine slices into a square 2D image -trange <single position, or 'all', or explict range, optionally with increment (e.g. 1-10:3)> : Select range in time direction -tshift <time shift [frames] (default=0.0)> : Shift data in time -typemax <Datatype> : Clip all values above maximum of a specific datatype -typemin <Datatype> : Clip all values below minimum of a specific datatype -usemask <filename> : Create 1D dataset including all values within binary mask from file Other options: -v <loglevel> or <component:loglevel> for debugging/tracing all components or a single component, respectively. Possible values for loglevel are: 0(noLog), 1(errorLog), 2(warningLog), 3(infoLog), 4(significantDebug), 5(normalDebug), 6(verboseDebug). -h, --help, -help, --version : Print help text or version information Supported file extensions(formats): 3db (Iris3D binary data) analyze (NIFTI/ANALYZE, dialects: fsl) asc (ASCII, dialects: tcourse) coi (JCAMP-DX data sets) dat (Matlab ascii 2D data matrix) dcm (DICOM, dialects: siemens) double (double raw data) float (float raw data) gz (GNU-Zip container for other formats) h5 (ISMRMRD Image) hdr (Interfile, dialects: neurostat) hdr (NIFTI/ANALYZE, dialects: fsl) idx (3D-indices of non-zeroes in ASCII, dialects: addval) ima (DICOM, dialects: siemens) interfile (Interfile, dialects: neurostat) jdx (ODIN Image based on JCAMP-DX (Joint Committee on Atomic and Molecular Physical Data)) mag (DICOM, dialects: siemens) mhd (MetaImage) nii (NIFTI/ANALYZE, dialects: fsl) ph (DICOM, dialects: siemens) png (Portable Network Graphics) pos (x-y positions of non-zeroes in ASCII) pro (ODIN protocols based on JCAMP-DX (Joint Committee on Atomic and Molecular Physical Data)) reg (Ansoft HFSS ASCII) s16bit (signed 16 bit raw data) s32bit (signed 32 bit raw data) s8bit (signed 8 bit raw data) smp (JCAMP-DX data sets) u16bit (unsigned 16 bit raw data) u32bit (unsigned 32 bit raw data) u8bit (unsigned 8 bit raw data) vtk (Visualization Toolkit, vtkStructuredPoints) xml (ODIN Image based on XML (Extensible Markup Language)) xpro (ODIN protocols based on XML (Extensible Markup Language))
Calculate the difference between two DICOM files 'image1.dcm' 'and image2.dcm' and store it in float-type raw data file 'diff.float':
micalc -if1 image1.dcm -op '-' -if2 image2.dcm -of diff.float
Multiply image magnitude of Nifti file 'image.nii' by a factor 10:
micalc -if1 image.nii -op '*' -in2 10 -of image.nii
Accumulate all values in file 'image.float' and write result to console:
micalc -if image.float -op '+'
Negate values (invert sign) of file image.hdr and write result to neg.hdr
micalc -if image.hdr -op '-' neg.hdr
Print statistics about file 'data.asc' to console:
micalc -if data.asc
Write time-course mean and fluctuation (relative standard deviation over time) of file 'tcourse.v' to file 'mean.v' and 'stdev.v', respectively:
micalc -if tcourse.v -mean mean.v -fluct stdev.v
Calculate histogram in interval (0.0,100.0) with 64 steps of DICOMs in directory cbv:
micalc -if cbv -hist histogram.asc -histmin 0.0 -histmax 100.0 -histslots 64
Please note that it might be necessary to quote the operation argument (as shown above) in order to prevent the shell from expanding it.