tImageWrite (Image Accessor Test)¶
This page provides instruction for tImageWrite test program which can be used to test standard image access utilised by many YandaSoft applications, e.g. linmos (Linear Mosaic Applicator). It is also a handy tool to explore I/O performance as it mimics access patterns which can be encountered in real-worl astronomy applications.
Running the program¶
It can be run with the following command, where “config.in” is a file containing the configuration parameters described in the next section.
$ tImageWrite -c config.in
The tImageWrite program supports execution in parallel and can use distributed I/O if supported by the particular accessor selected in the “config.in” parameter file.
Configuration Parameters¶
The following table contains the configuration parameters to be specified in the config.in file shown on above command line. Note that unlike the actual YandaSoft applications this test tool exercises interfaces directly and doesn’t require any prefix for parameters. In general, all parameters supported by image access factory can be used here.
Parameter |
Type |
Default |
Description |
---|---|---|---|
mask |
boolean |
false |
If true, a masked cube will be written (i.e. it will contain a boolean mask for each pixel showing its validity). |
mask.threshold |
float |
If masked cube is written (see the previous parameter), this parameter describes “flagging” threshold. All pixels with the value exceeding mask.threshold will be masked out. Set to large positive value to have no masking (if you want a masked cube in the output but with all pixels marked as good) or to a large negative value to have all pixels masked |
|
variance |
double |
Variance of the Gaussian noise to fill the simulated cube with. Note the value of this parameter when choosing the threshold for masking with mask.threshold. |
|
name |
string |
fakecube |
Name of the output image. |
stokes |
vector of strings |
[“I”] |
Desired Stokes axis for the simulated cube |
spectral_first |
boolean |
true |
If true, the simulated cube will have the spectral axis before the Stokes axis. If false, the order will be the opposite. |
size |
unsigned int |
1024 |
Number of pixels on each side for the spatial coordinates of the simulated cube. Only square planes are supported at the moment. |
nchan |
unsigned int |
10 if serial, the number of ranks otherwise |
The number of spectral channels in the sumulated cube. The default is different depending on the number of ranks available: in the serial mode (i.e. only one rank is available) it is 10 planes, otherwise it is the number of ranks (suitable for parallel writers). |
mode |
string |
“parallel” or “serial” as appropriate |
This parameter can be either “parallel” or “serial” and defines the type of the image accessor factory created. The default is “serial” if only one rank is available and “parallel” otherwise, so most users don’t need to worry about it. However, it may be useful to force a particular type of accessor to exercise it in unusual circumstances. |
The following options are related to image accessors and are shared between all applications doing image writing:
imagetype |
string |
“casa” |
Type of the image handler (determines the format of the images, both which are written to or read from the disk). The default is to create casa images but “fits” can also be chosen. |
imageaccess |
string |
“individual” |
The imageaccess parameters are for fits images only: Choose between “individual” and “collective” I/O operations. For collective I/O the number of ranks must divide evenly into the number of channels. |
imageaccess.axis |
uint |
0 |
Specify the channel axis of the cubes - usually 3 This is only used for collective I/O on fits cubes |
imageaccess.order |
string |
“distributed” |
How do the ranks read/write channels:
For collective I/O “contiguous” is automatically selected |
imageaccess.write |
string |
“serial” |
How does the output cube get written:
|
Example¶
Example tImageWrite parset to create a fake fits image cube with 10 spectral planes and 4 Stokes planes (IQUV). Each plane will contain 8192x8192 spatial pixels. The cube will be filled with the Gaussian noise with the variance of 1. Pixles stronger than 3 Jy will be masked out (given the variance, there will be a number of such pixels).
mask=true
mask.threshold=3
mode=parallel
imagetype=fits
name=test
spectral_first=true
stokes=[I,Q,U,V]
size=8192
nchan=10