Ulrik Pedersen added HDF5 documentation; some fixes for Magick plugin
git-svn-id: https://subversion.xor.aps.anl.gov/synApps/areaDetector/trunk@12950 dc6c5ff5-0b8b-c028-a01f-ffb33f00fc8b
This commit is contained in:
@@ -10,7 +10,7 @@
|
||||
<h1>
|
||||
areaDetector Plugin NDPluginFile</h1>
|
||||
<h2>
|
||||
December 5, 2010</h2>
|
||||
June 19, 2011</h2>
|
||||
<h2>
|
||||
Mark Rivers</h2>
|
||||
<h2>
|
||||
@@ -24,6 +24,7 @@
|
||||
<li><a href="#TIFF">TIFF file plugin</a></li>
|
||||
<li><a href="#netCDF">netCDF file plugin</a></li>
|
||||
<li><a href="#NeXus">NeXus (HDF) file plugin</a></li>
|
||||
<li><a href="#HDF5">HDF5 file plugin</a></li>
|
||||
<li><a href="#Magick">GraphicsMagick file plugin</a></li>
|
||||
<li><a href="#Screens">Screen shots</a></li>
|
||||
</ul>
|
||||
@@ -156,8 +157,8 @@
|
||||
and many others. GraphicsMagick automatically selects the output file format based
|
||||
on the extension of the file (.jpg=JPEG, .tif=TIFF, etc. The GraphicsMagick plugin
|
||||
should be able to write files in any format in the <a href="http://www.graphicsmagick.org/formats.html">
|
||||
list of GraphicsMagick supported file formats"</a> that has a "W" or "RW" in the
|
||||
Mode column.</a>.
|
||||
list of GraphicsMagick supported file formats"</a> that has a "W"
|
||||
or "RW" in the Mode column.
|
||||
</p>
|
||||
<p>
|
||||
The GraphicsMagick plugin is limited to 8 and 16-bit integer arrays. It supports
|
||||
@@ -167,39 +168,39 @@
|
||||
<p>
|
||||
The GraphicsMagick plugin supports the Int32 parameter NDFileMagickCompressType
|
||||
to control the compression mode of the file. NDFileMagick.template defines 2 records
|
||||
to support this: $(P)$(R)CompressMode (longout) and $(P)$(R)CompressMode_RBV (longin).
|
||||
The following are the supported compression modes:</p>
|
||||
to support this: $(P)$(R)CompressType (longout) and $(P)$(R)CompressType_RBV (longin).
|
||||
The following are the supported compression types:</p>
|
||||
<ul>
|
||||
<li>"None"</li>
|
||||
<li>"BZip"</li>
|
||||
<li>"FAX"</li>
|
||||
<li>"Group 4"</li>
|
||||
<li>"JPEG"</li>
|
||||
<li>"LZW"</li>
|
||||
<li>"RLE""</li>
|
||||
<li>"Zip"</li>
|
||||
<li>"None"</li>
|
||||
<li>"BZip"</li>
|
||||
<li>"FAX"</li>
|
||||
<li>"Group 4"</li>
|
||||
<li>"JPEG"</li>
|
||||
<li>"LZW"</li>
|
||||
<li>"RLE""</li>
|
||||
<li>"Zip"</li>
|
||||
</ul>
|
||||
<p>
|
||||
No formats support all of these compression modes. Many support only one, or have
|
||||
an implicit compression mode and so ignore the CompressMode parameter. For example,
|
||||
No formats support all of these compression types. Many support only one, or have
|
||||
an implicit compression mode and so ignore the CompressType parameter. For example,
|
||||
the JPEG format supports only the JPEG compression scheme, which is implicit. The
|
||||
TIFF format supports "None", ...</p>
|
||||
TIFF format supports "None", (ADD DOCUMENTATION ON TIFF COMPRESSION AND OTHER FORMATS)</p>
|
||||
<p>
|
||||
The <a href="areaDetectorDoxygenHTML/class_n_d_file_t_i_f_f.html">NDFileNetTIFF class
|
||||
The <a href="areaDetectorDoxygenHTML/class_n_d_file_magick.html">NDFileMagick class
|
||||
documentation </a>describes this class in detail.
|
||||
</p>
|
||||
<p>
|
||||
The NDFileTIFF plugin is created with the NDFileTIFFConfigure command, either from
|
||||
The NDFileMagick plugin is created with the NDFileMagickConfigure command, either from
|
||||
C/C++ or from the EPICS IOC shell.</p>
|
||||
<pre>NDFileTIFFConfigure (const char *portName, int queueSize, int blockingCallbacks,
|
||||
const char *NDArrayPort, int NDArrayAddr, size_t maxMemory,
|
||||
int priority, int stackSize)
|
||||
<pre>NDFileMagickConfigure(const char *portName, int queueSize, int blockingCallbacks,
|
||||
const char *NDArrayPort, int NDArrayAddr, size_t maxMemory,
|
||||
int priority, int stackSize)
|
||||
</pre>
|
||||
<p>
|
||||
For details on the meaning of the parameters to this function refer to the detailed
|
||||
documentation on the NDFileTIFFConfigure function in the <a href="areaDetectorDoxygenHTML/_n_d_file_t_i_f_f_8cpp.html">
|
||||
NDFileTIFF.cpp documentation</a> and in the documentation for the constructor
|
||||
for the <a href="areaDetectorDoxygenHTML/class_n_d_file_t_i_f_f.html">NDFileTIFF class</a>.
|
||||
documentation on the NDFileMagickConfigure function in the <a href="areaDetectorDoxygenHTML/_n_d_file_magick_8cpp.html">
|
||||
NDFileMagick.cpp documentation</a> and in the documentation for the constructor
|
||||
for the <a href="areaDetectorDoxygenHTML/class_n_d_file_magick.html">NDFileMagick class</a>.
|
||||
</p>
|
||||
<h2 id="netCDF">
|
||||
netCDF file plugin
|
||||
@@ -278,54 +279,54 @@ variables:
|
||||
:dimOffset = 0, 0, 0 ;
|
||||
:dimBinning = 1, 2, 2 ;
|
||||
:dimReverse = 0, 0, 0 ;
|
||||
:Attr_colorMode_DataType = "Int32" ;
|
||||
:Attr_colorMode_Description = "Color mode" ;
|
||||
:Attr_colorMode_DataType = "Int32" ;
|
||||
:Attr_colorMode_Description = "Color mode" ;
|
||||
:Attr_colorMode_Source = ;
|
||||
:Attr_colorMode_SourceType = "Driver" ;
|
||||
:Attr_AcquireTime_DataType = "Float64" ;
|
||||
:Attr_AcquireTime_Description = "Camera acquire time" ;
|
||||
:Attr_AcquireTime_Source = "13SIM1:cam1:AcquireTime" ;
|
||||
:Attr_AcquireTime_SourceType = "EPICS_PV" ;
|
||||
:Attr_RingCurrent_DataType = "Float64" ;
|
||||
:Attr_RingCurrent_Description = "Storage ring current" ;
|
||||
:Attr_RingCurrent_Source = "S:SRcurrentAI" ;
|
||||
:Attr_RingCurrent_SourceType = "EPICS_PV" ;
|
||||
:Attr_ImageCounter_DataType = "Int32" ;
|
||||
:Attr_ImageCounter_Description = "Image counter" ;
|
||||
:Attr_ImageCounter_Source = "ARRAY_COUNTER" ;
|
||||
:Attr_ImageCounter_SourceType = "Param" ;
|
||||
:Attr_CameraModel_DataType = "String" ;
|
||||
:Attr_CameraModel_Description = "Camera model" ;
|
||||
:Attr_CameraModel_Source = "MODEL" ;
|
||||
:Attr_CameraModel_SourceType = "Param" ;
|
||||
:Attr_BinX_DataType = "Int32" ;
|
||||
:Attr_BinX_Description = "X binning" ;
|
||||
:Attr_BinX_Source = "13SIM1:ROI1:0:BinX_RBV" ;
|
||||
:Attr_BinX_SourceType = "EPICS_PV" ;
|
||||
:Attr_BinY_DataType = "Int32" ;
|
||||
:Attr_BinY_Description = "Y binning" ;
|
||||
:Attr_BinY_Source = "13SIM1:ROI1:0:BinY_RBV" ;
|
||||
:Attr_BinY_SourceType = "EPICS_PV" ;
|
||||
:Attr_AttrTimeStamp_DataType = "Float64" ;
|
||||
:Attr_AttrTimeStamp_Description = "Time stamp" ;
|
||||
:Attr_AttrTimeStamp_Source = "TIME_STAMP" ;
|
||||
:Attr_AttrTimeStamp_SourceType = "Param" ;
|
||||
:Attr_ROI0Mean_DataType = "Float64" ;
|
||||
:Attr_ROI0Mean_Description = "Mean value ROI 0" ;
|
||||
:Attr_ROI0Mean_Source = "MEAN_VALUE" ;
|
||||
:Attr_ROI0Mean_SourceType = "Param" ;
|
||||
:Attr_ROI1Mean_DataType = "Float64" ;
|
||||
:Attr_ROI1Mean_Description = "Mean value ROI 0" ;
|
||||
:Attr_ROI1Mean_Source = "MEAN_VALUE" ;
|
||||
:Attr_ROI1Mean_SourceType = "Param" ;
|
||||
:Attr_FilePath_DataType = "String" ;
|
||||
:Attr_FilePath_Description = "File path" ;
|
||||
:Attr_FilePath_Source = "13SIM1:netCDF1:FilePath_RBV" ;
|
||||
:Attr_FilePath_SourceType = "EPICS_PV" ;
|
||||
:Attr_FileName_DataType = "String" ;
|
||||
:Attr_FileName_Description = "File name" ;
|
||||
:Attr_FileName_Source = "13SIM1:netCDF1:FileName_RBV" ;
|
||||
:Attr_FileName_SourceType = "EPICS_PV" ;
|
||||
:Attr_colorMode_SourceType = "Driver" ;
|
||||
:Attr_AcquireTime_DataType = "Float64" ;
|
||||
:Attr_AcquireTime_Description = "Camera acquire time" ;
|
||||
:Attr_AcquireTime_Source = "13SIM1:cam1:AcquireTime" ;
|
||||
:Attr_AcquireTime_SourceType = "EPICS_PV" ;
|
||||
:Attr_RingCurrent_DataType = "Float64" ;
|
||||
:Attr_RingCurrent_Description = "Storage ring current" ;
|
||||
:Attr_RingCurrent_Source = "S:SRcurrentAI" ;
|
||||
:Attr_RingCurrent_SourceType = "EPICS_PV" ;
|
||||
:Attr_ImageCounter_DataType = "Int32" ;
|
||||
:Attr_ImageCounter_Description = "Image counter" ;
|
||||
:Attr_ImageCounter_Source = "ARRAY_COUNTER" ;
|
||||
:Attr_ImageCounter_SourceType = "Param" ;
|
||||
:Attr_CameraModel_DataType = "String" ;
|
||||
:Attr_CameraModel_Description = "Camera model" ;
|
||||
:Attr_CameraModel_Source = "MODEL" ;
|
||||
:Attr_CameraModel_SourceType = "Param" ;
|
||||
:Attr_BinX_DataType = "Int32" ;
|
||||
:Attr_BinX_Description = "X binning" ;
|
||||
:Attr_BinX_Source = "13SIM1:ROI1:0:BinX_RBV" ;
|
||||
:Attr_BinX_SourceType = "EPICS_PV" ;
|
||||
:Attr_BinY_DataType = "Int32" ;
|
||||
:Attr_BinY_Description = "Y binning" ;
|
||||
:Attr_BinY_Source = "13SIM1:ROI1:0:BinY_RBV" ;
|
||||
:Attr_BinY_SourceType = "EPICS_PV" ;
|
||||
:Attr_AttrTimeStamp_DataType = "Float64" ;
|
||||
:Attr_AttrTimeStamp_Description = "Time stamp" ;
|
||||
:Attr_AttrTimeStamp_Source = "TIME_STAMP" ;
|
||||
:Attr_AttrTimeStamp_SourceType = "Param" ;
|
||||
:Attr_ROI0Mean_DataType = "Float64" ;
|
||||
:Attr_ROI0Mean_Description = "Mean value ROI 0" ;
|
||||
:Attr_ROI0Mean_Source = "MEAN_VALUE" ;
|
||||
:Attr_ROI0Mean_SourceType = "Param" ;
|
||||
:Attr_ROI1Mean_DataType = "Float64" ;
|
||||
:Attr_ROI1Mean_Description = "Mean value ROI 0" ;
|
||||
:Attr_ROI1Mean_Source = "MEAN_VALUE" ;
|
||||
:Attr_ROI1Mean_SourceType = "Param" ;
|
||||
:Attr_FilePath_DataType = "String" ;
|
||||
:Attr_FilePath_Description = "File path" ;
|
||||
:Attr_FilePath_Source = "13SIM1:netCDF1:FilePath_RBV" ;
|
||||
:Attr_FilePath_SourceType = "EPICS_PV" ;
|
||||
:Attr_FileName_DataType = "String" ;
|
||||
:Attr_FileName_Description = "File name" ;
|
||||
:Attr_FileName_Source = "13SIM1:netCDF1:FileName_RBV" ;
|
||||
:Attr_FileName_SourceType = "EPICS_PV" ;
|
||||
} </pre>
|
||||
<p>
|
||||
ncdump is one of a number of very useful command line utilities that come with the
|
||||
@@ -471,6 +472,486 @@ variables:
|
||||
on older Linux systems (which predate Fedora Core 8 for example), it was decided
|
||||
to use this older version of HDF5. Future releases of areaDetector may use HDF5
|
||||
1.8.2 or later, and hence not work with older Linux systems.</p>
|
||||
<h2 id="HDF5">
|
||||
HDF5 file plugin
|
||||
</h2>
|
||||
<p>
|
||||
NDFileHDF5 inherits from NDPluginFile. This plugin uses the HDF5 libraries to store
|
||||
data. HDF5 file format is a self-describing binary format supported by the <a href="http://www.hdfgroup.org/HDF5">
|
||||
hdfgroup</a>.
|
||||
</p>
|
||||
<p>
|
||||
The plugin supports all NDArray datatypes and any number of NDArray dimensions (tested
|
||||
up to 3). It supports storing multiple NDArrays in a single file (in stream or capture
|
||||
modes) where each NDArray get appended to an extra dimension.
|
||||
</p>
|
||||
<p>
|
||||
NDArray attributes are stored in the HDF5 file. In case of multi-frame files the
|
||||
attributes are stored in 1D datasets (arrays).
|
||||
</p>
|
||||
<p>
|
||||
The NDFileHDF5 plugin is created with the NDFileHDF5Configure command, either from
|
||||
C/C++ or from the EPICS IOC shell.</p>
|
||||
<pre>
|
||||
NDFileHDF5Configure (const char *portName, int queueSize, int blockingCallbacks,
|
||||
const char *NDArrayPort, int NDArrayAddr, size_t maxMemory,
|
||||
int priority, int stackSize)
|
||||
</pre>
|
||||
<p>
|
||||
For details on the meaning of the parameters to this function refer to the detailed
|
||||
documentation on the NDFileNexusConfigure function in the <a href="areaDetectorDoxygenHTML/_n_d_file_h_d_f5_8cpp.html">
|
||||
NDFileHDF5.cpp documentation</a> and in the documentation for the constructor
|
||||
for the <a href="areaDetectorDoxygenHTML/class_n_d_file_h_d_f5.html">NDFileHDF5 class</a>.</p>
|
||||
<h3>
|
||||
File structure
|
||||
</h3>
|
||||
<p>
|
||||
The HDF5 files comprises a hierachial data structure, similar to a file system structure
|
||||
with directories (groups) and files (datasets) [<a href="http://www.hdfgroup.org/HDF5/Tutor/fileorg.html">ref</a>]
|
||||
</p>
|
||||
<p>
|
||||
This plugin writes HDF5 files that are compatible with the Nexus file format. This
|
||||
is achieved by defining a specific hierachial structure of groups and datasets and
|
||||
by tagging elements in the hierachi with certain "NX_class=nnn" attributes.
|
||||
Although Nexus libraries are not used to write the data to disk, this file structure
|
||||
allow Nexus-aware readers to open and read the content of these HDF5 files. This
|
||||
has been tested with the Nexus reader in the <a href="http://opengda.org/">GDA application</a>.
|
||||
</p>
|
||||
<p>
|
||||
The directory structure of the HDF5 files, generated by this plugin:</p>
|
||||
<pre>
|
||||
entry <-- NX_class=NXentry
|
||||
|
|
||||
+--instrument <-- NX_class=NXinstrument
|
||||
|
|
||||
+--NDAttributes
|
||||
| |
|
||||
| +--- <-- Any number of EPICS PV based NDAttributes as individual 1D datasets
|
||||
| +--- The PV attributes are in the 'instrument' group as they are expected
|
||||
| to originate from the beamline/instrument rather than the detector itself
|
||||
|
|
||||
+--detector <-- NX_class=NXdetector
|
||||
| |
|
||||
| +--data <-- NX_class=SDS, signal=1
|
||||
| |
|
||||
| +--NDAttributes
|
||||
| |
|
||||
| +--- <-- Any number of PARAM type NDAttributes as individual 1D datasets
|
||||
| +--- These type of parameters are in the 'detector' group as they
|
||||
| originate from the areaDetector system
|
||||
|
|
||||
+--performance <-- Performance of the file writing
|
||||
|
|
||||
+--timestamp <-- A 2D dataset of different timing measurements taking during file writing
|
||||
</pre>
|
||||
<h3>
|
||||
HDF5 File Viewers
|
||||
</h3>
|
||||
<p>
|
||||
<a href="http://www.hdfgroup.org/hdf-java-html/hdfview/index.html">HDFView</a> is
|
||||
a simple GUI tool for viewing and browsing HDF files. It has some limited support
|
||||
for viewing images, plotting graphs and displaying data tables.
|
||||
</p>
|
||||
<p>
|
||||
The <a href="http://www.hdfgroup.org/HDF5/release/obtain5.html">HDF5 libraries</a>
|
||||
also ships with a number of command-line tools for browsing and dumping data.
|
||||
</p>
|
||||
<p>
|
||||
The screenshot below shows the hdfview application with a datafile open. The datafile
|
||||
is generated by the plugin and a number of elements are visible:</p>
|
||||
<ul>
|
||||
<li>A number of NDAttributes sourced from EPICS PVs during detector acquisition appear
|
||||
as 1D datasets in the group "/entry/instrument/NDAttributes/"</li>
|
||||
<li>Several NDAttributes from the areaDetector show up as datasets in the group "/entry/instrument/detector/NDAttributes/"</li>
|
||||
<li>The image data is in the dataset "/entry/instrument/detector/data".
|
||||
The metadata (in HDF known as "attributes") for that dataset indicate
|
||||
8bit unsigned char data, 10 frames of 60x40 pixels</li>
|
||||
<li>Image and table view of the first frame data is open</li>
|
||||
</ul>
|
||||
<div style="text-align: center">
|
||||
<img alt="==== HDFView-screenshot.png ====" src="HDFView-screenshot.png" /></div>
|
||||
<h3>
|
||||
Multiple Dimensions
|
||||
</h3>
|
||||
<p>
|
||||
Both areaDetector and the HDF5 file format supports multidimensional datasets. The
|
||||
dimensions from the NDArray are preserved when writing to the HDF5 file. In multi-frame
|
||||
files (plugin in Stream or Capture mode) an additional dimension is added to the
|
||||
dataset to hold the array of frames.
|
||||
</p>
|
||||
<p>
|
||||
In addition to the dimensions of the NDArray it is also possible to specify up to
|
||||
2 extra "virtual" dimensions to store datasets in the file. This is to
|
||||
support applications where a sample is scanned in up to two dimensions, say X and
|
||||
Y. For each scan point a dataset comprising of multiple frames can be stored. The
|
||||
length of (i.e. number of points in) each of the two virtual dimensions have to
|
||||
be specified before the plugin opens the file for writing. This feature is only
|
||||
supported in the Stream and Capture modes.
|
||||
</p>
|
||||
<p>
|
||||
This feature allow for creating very large sets of scan data which matches the dimensions
|
||||
of the performed scan in one datafile. Depending on the application this can be
|
||||
a benefit in post processing.
|
||||
</p>
|
||||
<p>
|
||||
The figure below illustrate the use of the two extra "virtual" dimensions
|
||||
in a 2D (X,Y) raster scan with N frames per point:</p>
|
||||
<div style="text-align: center">
|
||||
<img alt="HDFmultiple-dimensions.png" src="HDFmultiple-dimensions.png" /></div>
|
||||
<p>
|
||||
Prior to starting a scan like this the user will need to configure the number of
|
||||
virtual dimensions to use (none, 1 or 2); the number of frames per point; and the
|
||||
length of each of the virtual dimensions (4 x 2 in the example figure). It is not
|
||||
possible to change the number or size of dimensions while the file is open.
|
||||
</p>
|
||||
<p>
|
||||
For 2D image (greyscale) formats the dimensions in the multiframe HDF5 file are
|
||||
organised as follows:</p>
|
||||
<ul>
|
||||
<li>For a multiframe file with no use of "virtual" dimension the order is:
|
||||
{Nth frame, width, height}</li>
|
||||
<li>For a multiframe file using 1 "virtual" dimension (X) the order is:
|
||||
{X, Nth frame, width, height}</li>
|
||||
<li>For a multiframe file using 2 "virtual" dimension (X,Y) the order is:
|
||||
{Y, X, Nth frame, width, height}</li>
|
||||
</ul>
|
||||
<h3>
|
||||
NDArray attributes
|
||||
</h3>
|
||||
<p>
|
||||
The attributes from NDArrays are stored in the HDF5 files. The list of attributes
|
||||
is loaded when a file is opened so XML attributes files should not be reloaded during
|
||||
an acquisition run.
|
||||
</p>
|
||||
<p>
|
||||
The type of attribute is used to determine where in the file structure the attribute
|
||||
data will end up. All attribute datasets will be named by the NDArray attribute
|
||||
name. They will also have metadata (known as HDF "attributes") to indicate
|
||||
their source type and origin.</p>
|
||||
<ul>
|
||||
<li>Attributes from EPICS PVs (type="EPICS_PV") will be stored as 1D datasets
|
||||
in the group "/entry/instrument/NDAttributes/"
|
||||
<ul>
|
||||
<li>Special case is attributes of datatype string, which will be stored as HDF5 metadata
|
||||
attributes to the same group.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>All other attributes (type="PARAM") will be stored as 1D datasets in
|
||||
the group "/entry/instrument/detector/NDAttributes/"
|
||||
<ul>
|
||||
<li>Special case is attributes of datatype string, which will be stored as HDF5 metadata
|
||||
attributes to the same group.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
<h3>
|
||||
Compression
|
||||
</h3>
|
||||
<p>
|
||||
The HDF5 library supports a number of compression algorithms. When using HDF5 libraries
|
||||
to write and read files the compression is seemless: it only need to be switched
|
||||
on when writing and HDF5 enabled applications can read the files without any additional
|
||||
configuration. Only one compression filter can be applied at the time.
|
||||
</p>
|
||||
<p>
|
||||
The following compression filters are supported in the NDFileHDF5 plugin:</p>
|
||||
<ul>
|
||||
<li>Lossless <a href="http://www.hdfgroup.org/doc_resource/SZIP/">SZIP</a> compression
|
||||
is using a separate library from the hdfgroup</li>
|
||||
<li>External libz -also lossless</li>
|
||||
<li><a href="http://www.hdfgroup.org/HDF5/doc/RM/RM_H5P.html#Property-SetNbit">N-bit</a>
|
||||
compression is a bit-packing scheme to be used when a detector provide fewer databits
|
||||
than standard 8,16,32 bit words. Data width and offset in the word is user configurable</li>
|
||||
</ul>
|
||||
<h3>
|
||||
Parameters and Records
|
||||
</h3>
|
||||
<table border="1" cellpadding="2" cellspacing="2" style="text-align: left">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" colspan="7,">
|
||||
<b>Parameter Definitions and EPICS Record Definitions in NDFileHDF5.template</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th>
|
||||
Parameter index variable</th>
|
||||
<th>
|
||||
asyn interface</th>
|
||||
<th>
|
||||
Access</th>
|
||||
<th>
|
||||
Description</th>
|
||||
<th>
|
||||
drvInfo string</th>
|
||||
<th>
|
||||
EPICS record name</th>
|
||||
<th>
|
||||
EPICS record type</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
nRowChunks</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Configure HDF5 "chunking" to approriate size for the filesystem: sets
|
||||
number of rows to use per chunk</td>
|
||||
<td>
|
||||
HDF5_nRowChunks</td>
|
||||
<td>
|
||||
$(P)$(R)NumRowChunks<br />
|
||||
$(P)$(R)NumRowChunks_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
storeAttributes</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Enable or disable support for storing NDArray attributes in file</td>
|
||||
<td>
|
||||
HDF5_storeAttributes</td>
|
||||
<td>
|
||||
$(P)$(R)StoreAttr<br />
|
||||
$(P)$(R)StoreAttr_RBV</td>
|
||||
<td>
|
||||
bo<br />
|
||||
bi</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
storePerformance</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Enable or disable support for storing file IO timing measurements in file</td>
|
||||
<td>
|
||||
HDF5_storePerformance</td>
|
||||
<td>
|
||||
$(P)$(R)StorePerform<br />
|
||||
$(P)$(R)StorePerform_RBV</td>
|
||||
<td>
|
||||
bo<br />
|
||||
bi</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="7,">
|
||||
<b>Additional Virtual Dimensions</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
nExtraDims</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Number of extra dimensions [0..2]</td>
|
||||
<td>
|
||||
HDF5_nExtraDims</td>
|
||||
<td>
|
||||
$(P)$(R)NumExtraDims<br />
|
||||
$(P)$(R)NumExtraDims</td>
|
||||
<td>
|
||||
mbbo<br />
|
||||
mbbi</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
extraDimSizeN</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Size of extra dimension N (no. of frames per point)</td>
|
||||
<td>
|
||||
HDF5_extraDimSizeN</td>
|
||||
<td>
|
||||
$(P)$(R)ExtraDimSizeN<br />
|
||||
$(P)$(R)ExtraDimSizeN_RBV</td>
|
||||
<td>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
extraDimSizeX</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Size of extra dimension X</td>
|
||||
<td>
|
||||
HDF5_extraDimSizeX</td>
|
||||
<td>
|
||||
$(P)$(R)ExtraDimSizeX<br />
|
||||
$(P)$(R)ExtraDimSizeX_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
extraDimSizeY</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Size of extra dimension Y</td>
|
||||
<td>
|
||||
HDF5_extraDimSizeY</td>
|
||||
<td>
|
||||
$(P)$(R)ExtraDimSizeY<br />
|
||||
$(P)$(R)ExtraDimSizeY_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="7,">
|
||||
<b>Runtime Statistics</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
totalRuntime</td>
|
||||
<td>
|
||||
asynFloat64</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Total runtime in seconds from first frame to file closed</td>
|
||||
<td>
|
||||
HDF5_totalRuntime</td>
|
||||
<td>
|
||||
$(P)$(R)Runtime</td>
|
||||
<td>
|
||||
ai</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
totalIoSpeed</td>
|
||||
<td>
|
||||
asynFloat64</td>
|
||||
<td>
|
||||
r/o</td>
|
||||
<td>
|
||||
Overall IO write speed in megabit per second from first frame to file closed</td>
|
||||
<td>
|
||||
HDF5_totalIoSpeed</td>
|
||||
<td>
|
||||
$(P)$(R)IOSpeed</td>
|
||||
<td>
|
||||
ai</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" colspan="7,">
|
||||
<b>Compression Filters</b></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
compressionType</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
Select or switch off compression filter</td>
|
||||
<td>
|
||||
HDF5_compressionType</td>
|
||||
<td>
|
||||
$(P)$(R)Compression<br />
|
||||
$(P)$(R)Compression_RBV</td>
|
||||
<td>
|
||||
mbbo<br />
|
||||
mbbi</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
nbitsPrecision</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
N-bit compression filter: number of data bits per pixel</td>
|
||||
<td>
|
||||
HDF5_nbitsPrecision</td>
|
||||
<td>
|
||||
$(P)$(R)NumDataBits<br />
|
||||
$(P)$(R)NumDataBits_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
nbitsOffset</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
N-bit compression filter: dataword bit-offset in pixel</td>
|
||||
<td>
|
||||
HDF5_nbitsOffset</td>
|
||||
<td>
|
||||
$(P)$(R)DataBitsOffset<br />
|
||||
$(P)$(R)DataBitsOffset_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
szipNumPixels</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
szip compression filter: number of pixels in filter [1..32]</td>
|
||||
<td>
|
||||
HDF5_szipNumPixels</td>
|
||||
<td>
|
||||
$(P)$(R)SZipNumPixels<br />
|
||||
$(P)$(R)SZipNumPixels_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
zCompressLevel</td>
|
||||
<td>
|
||||
asynInt32</td>
|
||||
<td>
|
||||
r/w</td>
|
||||
<td>
|
||||
zlib compression filter: compression level [1..9]</td>
|
||||
<td>
|
||||
HDF5_zCompressLevel</td>
|
||||
<td>
|
||||
$(P)$(R)ZLevel<br />
|
||||
$(P)$(R)ZLevel_RBV</td>
|
||||
<td>
|
||||
longout<br />
|
||||
longin</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<p>
|
||||
<i>The NDFileHDF5 plugin was developed by Ulrik Kofoed Pedersen at Diamond Light Source.</i></p>
|
||||
<h2 id="Screens">
|
||||
Screen shots</h2>
|
||||
<p>
|
||||
|
||||
Reference in New Issue
Block a user