Intensity Image Data Types
The package provides the high-level abstract data type AbstractIntensityImage
for five-dimensional images (x (right ascention), y (declination), frequency, polarization, time) and many methods to handle these data sets.
The package further provides two reference implementations of the 5D intensity image cube data sets: in-memory IntensityImage
and NetCDF4-based DiskIntensityImage
data types, which share common methods through AbstractIntensityImage
.
Intensity image data types adopt the following conventions:
- Equispaced grid along with
x
andy
axes, which is left-handed following the standard of astronomy images. - For the
x
andy
axes, we follow the standard FITS convention — the first index along these axes (i.e., [x,y]=[1,1]) points to the lower-left (eastern- and southern-most) pixel. - Non-equidistant grid in time for the application of dynamic imaging methods (e.g., Johnson et al., 2017, Bouman et al., 2017).
- Non-equidistant grid in frequency for the application of multi-frequency imaging methods (e.g., Chael et al., 2023).
- The intensity image cube is assumed to be real. This convention practically limits the polarization representation of images to the standard Stokes parameters (I, Q, U, V). The data type does not support other polarization representations such as (RR, LL, RL, LR) or (XX, YY, XY, YX), which are both image-domain counterparts of raw interferometric data and are generally described as complex functions.
Abstract Intensity Images
The high-level abstract type of the 5D intensity image cube is defined by AbstractIntensityImage
. Here, AbstractImageDataSet
is a common high-level abstract type for data sets handled in this package (i.e. not limited to the intensity cube). While AbstractIntensityImage
is not a subtype of AbstractArray
, it behaves like AbstractArray
thanks to methods associated with AbstractImageDataSet
.
To handle the 5D intensity cube AbstractIntensityImage
assumes following fields
data
: 5 dimensional array for intensity [x, y, polarization, frequency, time]p
: 1 dimensional array for polarization codes in string (coordinate for polarization axis)f
: 1 dimensional array for frequency in Hz (coordinate for frequency axis)t
: 1 dimensional array for time in modified Julian dates (coordinate for time axis)metadata
:OrderedCollections.OrderedDict
-like object to stock metadata
Let's walk through methods defined in AbstractIntensityImage
using its in-memory subtype IntensityImage
in the next section.