TXM file format (Xradia)

Written by Paul Bourke
June 2019


X-ray transmission image data as stored by Xradia scanners.

Header

       info = {'Version', 'float32', 4, [];                %Version number of txmcontroller
               'NoOfImages', 'int32', 4, [];                %Number of images taken
               'ImagesTaken', 'int32', 4, [];               %Number of images taken
               'AcquisitionMode', 'int32', 4, [];           %Aquisition mode e.g. tomography, averaging...
               'ReadOutTime', 'int32', 4, [];               %Camera read out time
               'HorizontalBin', 'int32', 4, [];             %Camera binning in horizontal direction
               'VerticalalBin', 'int32', 4, [];             %Camera binning in vertical direction
               'Temperature', 'int32', 4, [];               %Camera temperature
               'SourceVoltage', 'int32', 4, [];             %Source voltage
               'Voltage', 'int32', 4, [];                   %Source voltage
               'Current', 'int32', 4, [];                   %Source current
               'ImageWidth', 'int32', 4, [];                %Width of image in pixels
               'ImageHeight' 'int32', 4, [];                %Height of image in pixels
               'DataType', 'int32', 4, [];                  %Image datatype e.g. 5 (int16)
               'NoOfImagesAveraged', 'int32', 4, [];        %Number of images averaged
               'PixelSize', 'float32', 4, [];               %Size of pixels in microns
               'PixelSizeX', 'float32', 4, [];              %Relative size of pixels in x direction
               'PixelSizeY', 'float32', 4, [];              %Relative size of pixels in y direction
               'CameraNo', 'int32', 4, [];                  %Index of camera if more than 1
               'Angles', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};                  %Sample rotation angles for the image sequence
               'ExpTimes', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};                %Exposure times for the corresponding images
               'XPosition', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};               %Sample x positions for the image sequence
               'YPosition', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};               %Sample y positions for the image sequence
               'ZPosition', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};               %Sample z positions for the image sequence
               'TubelensPosition', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};        %Tube lens position for the image sequence (nanoXCT only)
               'IonChamberCurrent', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};       %Ion chamber current for the image sequence (nanoXCT only)
               'Energy', 'float32', 4, [];                  %X-ray energy (nanoXCT only)
               'NanoImageMode', 'int32', 4, [];             %1 or 0 if using/not using nanoXCT (nanoXCT only)?
               'StoRADistance', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};           %Source to rotation axis distances for the image sequence 
               'DtoRADistance', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};           %Detector to rotation axis distances for the image sequence 
               'UseForRADistances', 'float32', 4, [];       %Detector to rotation axis distances for the image sequence?
               'OpticalMagnification', 'float32', 4, [];    %Optical magnification used (nanoXCT only?)
               'MosiacRows', 'int32', 4, [];                %Number of mosiac rows
               'MosiacColumns', 'int32', 4, [];             %Number of mosiac columns
               'MosiacMode', 'int32', 4, [];                %1 or 0 if in/not in mosaic mode
               'MosaicFastAxis', 'int32', 4, [];            %Fast axis if in mosiac mode
               'MosaicSlowAxis', 'int32', 4, [];            %Slow axis if in mosiac mode
               'BigOrSmallSampleHolder', 'int32', 4, [];    %Not used?
               'FocusTarget', 'int32', 4, [];               %Not used?
               'ReferenceFile', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};        %Reference file name (white reference/ flat field image)
               'BackgroundFile', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};       %Background file name (black background image)
               'Date', 'char=>char', 1, {'matchstr', {'\d\d/\d\d/\d\d\W\d\d:\d\d:\d\d'}};                 %Date tomography was started
               'SampleInfo','char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};            %Information supplied by user about the sample
               'Analyst', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};              %Name of analyst
               'Facility', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};             %Name of facility
               'SampleID', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};             %Sample ID
               'DateIn', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};               %Sample in date                                        '
               'DateOut', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};              %Sample out date                                '
               'FailureInfo', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};          %Information if failure occurs?
               'ProcessInfo',  'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};         %Information about current process?
               'PositionInfo', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};         %Information about current position?
               'NoOfImages_', 'int32', 4, [];               %Number of images taken
               'TotalAxis', 'int32', 4, [];                 %Number of system component axes
               'MotorPositions', 'float32', 4, {'resize',{'[header.PositionInfo.TotalAxis header.ImageInfo.NoOfImages]'}};          %Motor positions?
               'HomeOffset', 'int32', 4, [];                %Home positions for the system component axes (in nm for nanoXCT)
               'AxisNames', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}; 'resize', {'[header.PositionInfo.TotalAxis 1]'}}; %{[char(256) '|' char(0)], 1}
               'AxisUnits', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}; 'resize', {'[header.PositionInfo.TotalAxis 1]'}}; %Names of the axes
               'StageCalibration', 'int32', 4, [];          %The stage position is (1) or is not (0) calibrated to give a virtual axis of rotation (nanoXCT only)
               'XValue', 'float32', 4, [];                  %X-value used in the stage calibration
               'ZValue', 'float32', 4, [];                  %Z-value used in the stage calibration
               'Annotations', 'float32', 4, [];             %Information about annotations?
               'AnnSize', 'int32', 4, [];                   %Size of annotations?
               'AnnData', 'int32', 4, [];                   %Annotation data?
               'AutoRecon', 'int32', 4, [];                 %Do or don't do automatic reconstruction
               'CenterShift', 'float32', 4, [];             %Center shift (rotation axis position) for reconstruction
               'AutoReconON', 'int32', 4, [];               %Do automatic reconstruction?
               'ReconBinning', 'int32', 4, [];              %Binning used for reconstruction
               'ReconDataType', 'int32', 4, [];             %Datatype used for reconstruction
               'RemoveRingON', 'int32', 4, [];              %Apply (1) or don't apply (0) ring artefact removal
               'MaximizeVolume', 'int32', 4, [];            %Unknown reconstruction variable 
               'BeamHardening', 'float32', 4, [];           %Beam hardening constant used for reconstruction
               'RotationAngle', 'float32', 4, [];           %Angle to rotate by for reconstruction
               'ReconFilter', 'int32', 4, [];               %Use (1) or don't use (0) reconstruction filter
               'GlobalMin', 'float32', 4, [];               %Global minimum used for reconstruction
               'GlobalMax', 'float32', 4, [];               %Global maximum used for reconstruction      
               'NumOfProjects', 'int32', 4, [];             %Number of projection images used for reconstruction
               'AngleSpan', 'float32', 4, [];               %Angle span of projection images?
               'MeanSampleX', 'float32', 4, [];             %Mean sample X position?
               'MeanSampleY', 'float32', 4, [];             %Mean sample Y position?
               'MeanSampleZ', 'float32', 4, [];             %Mean sample Z position?
               'ReferenceData', 'float32', 4, [];           %Unknown
               'Binning', 'int32', 4, [];                   %Binning for reference image?
               'DataType_', 'int32', 4, [];                 %Datatype for reference image?
               'ExpTime', 'float32', 4, [];                 %Exposure time for reference image?
               'IonCurrent', 'float32', 4, [];              %Ion current for reference image? (nanoXCT only)
               'BGAdjustments', 'int32', 4, [];             %Unknown
               'RefS2RADistance', 'float32', 4, [];         %Source to rotation axis distance for reference image?
               'RefD2RADistance', 'float32', 4, [];         %Detector to rotation axis distance for reference image?
               'Alignment', 'int32', 4, [];                 %Unknown
               'X_Shifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};                %Alignment shifts in x direction (nanoXCT only)
               'Y_Shifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};                %Alignment shifts in y direction (nanoXCT only)
               'Selection', 'int32', 4, [];                 %Unknown
               'SelectedImages', 'int32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};            %Images in sequence selected for reconstruction etc (0 for unselected, 1 for selected)
               'SineFitCenter', 'int32', 4, [];             %Unknown
               'SineFitCenterX', 'float32', 4, [];          %Sine fit x-value for virtual centre of rotation? (nanoXCT only)
               'SineFitCenterY', 'float32', 4, [];          %Sine fit y-value for virtual centre of rotation? (nanoXCT only)
               'CameraName', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};
               'XrayMagnification', 'float32', 4, [];
               'XrayVoltage', 'float32', 4,{'resize',{'[1 header.ImageInfo.NoOfImages]'}};
               'XrayCurrent', 'float32', 4,{'resize',{'[1 header.ImageInfo.NoOfImages]'}};
               
               'DageVoltages', 'float32', 4,[];
               'DagePowers', 'float32', 4,[];
               'DageCenteringX', 'float32', 4, [];
               'DageCenteringY', 'float32', 4, [];
               'DageVacuumLevel','float32', 4, [];
               'DageTubeCurrents','float32', 4, [];
               'DageFocusCurrent','float32', 4, [];
               'DageHoursOnTarget','float32', 4, [];
               'DageTargetCurrents','float32', 4, [];
               'DageTargetTurnNumber','int32', 4, [];
               
               'Temperatures','float32', 4, {'resize',{'[header.TemperatureInfo.TotalAxis header.ImageInfo.NoOfImages]'}};
               'StageShiftsApplied', 'int32', 4, [];        %Stage shifts are applied
               'MetrologyShiftsApplied', 'int32', 4, [];        %Metrology shifts are applied
               'ReferenceShiftsApplied', 'int32', 4, [];        %Reference shifts are applied
               'SourceDriftApplied', 'int32', 4, [];            %Source drift shifts are applied
               'EnableDistortionCorrection', 'int32', 4, [];        %Enable Distortion correction (relating to image distortion by optics)
               'PinholeCondenserSafetyConstant','float32', 4, [];   %Unknown (nanoXCT only)?
               'EncoderShiftsApplied', 'int32', 4, [];              %Motor Encoder shifts are applied
               'EncoderXShifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};          %Encoder X shifts
               'EncoderYShifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};          %Encoder Y shifts
               'StageXShifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};            %Stage X shifts
               'StageYShifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};            %Stage Y shifts
               'UseDithering', 'int32', 4, [];              %Use Dithering
               'Dither', 'int32', 4, [];                    %Use Dithering?
               'DitherXShifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};           %Dithering X shifts
               'DitherYShifts', 'float32', 4, {'resize',{'[1 header.ImageInfo.NoOfImages]'}};           %Dithering y shifts
               
               'SampleStackOrientation','int32', 4, [];             %Unknown
               'BigSampleYPosForSmallSample','int32', 4, [];        %Unknown
               'SmallSampleYPosForBigSample','int32', 4, [];        %Unknown
               'SourceLimitForBigSample','int32', 4, [];            %Unknown
               'DetectorLimitForBigSample','int32', 4, [];          %Unknown
               'HiResCameraPresetX','int32', 4, [];        %Unknown
               'HiResCameraPresetY','int32', 4, [];        %Unknown
               'SmallSampleCameraPresetZ','int32', 4, [];           %Unknown
               'LoResCameraPresetX','int32', 4, [];        %Unknown
               'LoResCameraPresetY','int32', 4, [];        %Unknown
               'BigSampleCameraPresetZ','int32', 4, [];             %Unknown
               'SourcePresetZForBigSample','int32', 4, [];          %Unknown
               'SourcePresetZForSmallSample','int32', 4, [];        %Unknown
               'BigSampleDistanceToSmall','int32', 4, [];           %Unknown
               'Motorized_Objective','int32', 4, [];                %Unknown
               'HeatedSample','int32', 4, [];               %Unknown
               'ComPortNumberForHeatedSample','int32', 4, [];       %Unknown
               'LoResCameraPresetZ','int32', 4, [];         %Unknown
               'HiResCameraPresetZ','int32', 4, [];         %Unknown
               'DetectorLimitSmallSampleLowResC','float32', 4, [];        %Unknown
               'SafetyDistance','float32', 4, [];           %Unknown
               'CameraX', 'float32', 4, [];                 %Unknown
               'CameraZ', 'float32', 4, [];                 %Unknown              
               'BeamLine', 'int32', 4, [];                  %Unknown
               
               'ZonePlateAlignmentPiezos', 'int32', 4, [];
               'ZonePlateAlignmentComPort', 'int32', 4, [];
               'DistortionParamLength', 'int32', 4, [];
               'DistortionWidth', 'int32', 4, [];
               'DistortionHeight', 'int32', 4, [];
               'DistortionParam', 'float32', 4, [];
               
               'Stage', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}}; 
               'BeamHardeningFileName', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}}; 
               'UserMinMax', 'float32', 4, [];
               
               'CropWidth', 'int32', 4, [];
               'CropHeight', 'int32', 4, [];
               'DefectCorrection', 'int32', 4 [];
               'Material', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}};  
               'ObjectiveName', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}}; 
               'PositiveRotationLimit', 'float32', 4, [];
               'NegativeRotationLimit', 'float32', 4, [];
               'TransmissionScaleFactor', 'float32', 4, [];
               'AbsorptionScaleFactor', 'float32', 4, [];
               'AbsorptionScaleOffset', 'float32', 4, [];
               'RefTypeToApplyIfAvailable', 'int32', 4 [];
               'OriginalDataRefCorrected',  'int32', 4 [];
               'Resolution', 'float32', 4, [];
               'MaxVelocity', 'float32', 4, [];
               'PosLimits', 'float32', 4, [];
               'NegLimits', 'float32', 4, [];
               'Axis', 'char=>char', 1, {'splitstr', {[char(256) '|' char(0)], 1}}; 
               'ThirdOrderRotationLimit', 'float32', 4, [];
               'IonChamberConstant', 'float32', 4, [];
               'ZoneplatePos', 'float32', 4, [];
               'TubeLensPos', 'float32', 4, [];
               'DefaultCenterShift', 'float32', 4, [];
               'DetectorOffset', 'float32', 4, [];
               'AxisInUse', 'int32', 4 [];
               'RefInterval','int32', 4 [];
               'TotalRefImages','int32', 4 [];
               
               'ID','int32', 4 [];
               'XradiaID','int32', 4 [];
               'Unit','int32', 4 [];
               'Mode','int32', 4 [];
               'Arrow','int32', 4 [];
               'BacklashCorrection','float32', 4 [];
               'HomingRoutine','int32', 4 [];
               'EnableFlyScan','int32', 4 [];
               'DisableDuringAcquisition','int32', 4 [];
              
               'Minimum', 'float32', 4, [];                 %Minimum reconstructed value?
               'Maximum', 'float32', 4, [];                %Maximum reconstructed value?
};                

Acquisition modes are as follows.

0   Tomography
2   Single
3   Continuous
4   Focal Series
5   Background
6   Averaging
7   Mosaic