TXM file format (Xradia)Written by Paul BourkeJune 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 |