Open File
---------
.. uml::
skinparam style strictuml
hide footbox
title Open File workflow
actor User
box "Client-side" #EDEDED
participant Frontend
end box
box "Server-side" #lightblue
participant Backend
end box
User -> Frontend: Open image
activate Frontend
Frontend -> Backend : 1. OPEN_FILE
activate Backend
Frontend <--[#red] Backend : 2. OPEN_FILE_ACK [Check 1]
Frontend <-- Backend : 3. REGION_HISTOGRAM_DATA
deactivate Backend
deactivate Frontend
User -> Frontend: Request tiles
activate Frontend
Frontend -> Backend : 4. ADD_REQUIRED_TILES
activate Backend
Frontend <--[#red] Backend : 5. RASTER_TILE_DATA [Check 2]
deactivate Backend
User <-- Frontend: Displays image
deactivate Frontend
OPEN_FITS_GZ
~~~~~~~~~~~~~
See the `source code `__.
This test verifies that a gzip-compressed FITS image file can be opened and rendered correctly.
1. Frontend sends: **OPEN_FILE** (``OpenFile``)
.. code-block:: protobuf
directory = "set_QA"
file = "tu2310418.fits.gz"
hdu = "0"
file_id = 0
render_mode = RASTER
2. Backend returns: **OPEN_FILE_ACK** (``OpenFileAck``) and **REGION_HISTOGRAM_DATA**
:red-text:`Check 1:` the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True
- OPEN_FILE_ACK.fileInfo.name = "tu2310418.fits.gz"
3. Frontend sends: **SET_CURSOR** at (2268, 2467) and **ADD_REQUIRED_TILES** (tile [0], ZFP quality 11)
4. Backend returns: **SPATIAL_PROFILE_DATA** and **RASTER_TILE_DATA**
:red-text:`Check 2:` the RASTER_TILE_DATA count = 3 (1 tile + 2 sync messages)
OPEN_IMAGE_APPEND
~~~~~~~~~~~~~~~~~
See the `source code `__.
This test verifies opening multiple image files sequentially without closing previous ones, confirming that multiple files can be open simultaneously.
1. Frontend sends: **OPEN_FILE** (``OpenFile``) for 4 files
.. code-block:: protobuf
file = "M17_SWex.fits", file_id = 0
file = "M17_SWex.image", file_id = 1
file = "M17_SWex.miriad", file_id = 2
file = "M17_SWex.hdf5", file_id = 3
2. For each file, Backend returns: **OPEN_FILE_ACK** and **REGION_HISTOGRAM_DATA**
:red-text:`Check 1:` for each file, the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True
- OPEN_FILE_ACK.fileId matches expected file_id
3. For each file, Frontend sends: **SET_IMAGE_CHANNELS** with **ADD_REQUIRED_TILES** (tile [0], ZFP quality 11)
4. Backend returns: **RASTER_TILE_DATA**
:red-text:`Check 2:` the RASTER_TILE_DATA for each file should satisfy:
- Tile dimensions: width = 160, height = 200 for all files
- imageData.length > 0
- nanEncodings.length > 0
:red-text:`Check 3:` REGION_HISTOGRAM_DATA for each file should satisfy:
- regionId = -1, stokes = 0, progress = 1
OPEN_IMAGE_CASA_VARIENTS
~~~~~~~~~~~~~~~~~~~~~~~~~
See the `source code `__.
This test verifies opening multiple CASA image variants with different structures and formats.
1. Frontend sends: **OPEN_FILE** (``OpenFile``) for 5 CASA image variants
.. code-block:: protobuf
file = "componentlist.image", file_id = 200
file = "concatenated.image", file_id = 201
file = "pVimage.image", file_id = 202
file = "UVamp.image", file_id = 203
file = "UVphase.image", file_id = 204
2. Backend returns: **OPEN_FILE_ACK** and **REGION_HISTOGRAM_DATA** for each file
:red-text:`Check 1:` the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True for all files
:red-text:`Check 2:` RASTER_TILE_DATA dimensions should match:
- fileId 200: 256x256
- fileId 201: 189x189
- fileId 202: 160x52 (narrow PV image)
- fileId 203: 150x150
- fileId 204: 150x150
OPEN_IMAGE_PV
~~~~~~~~~~~~~
See the `source code `__.
This test verifies opening Position-Velocity (PV) images in both FITS and CASA formats.
1. Frontend sends: **OPEN_FILE** (``OpenFile``) for 2 PV images
.. code-block:: protobuf
file = "M17_SWex_pv.fits", file_id = 0
file = "M17_SWex_pv.image", file_id = 1
2. Backend returns: **OPEN_FILE_ACK** and **REGION_HISTOGRAM_DATA** for each
:red-text:`Check 1:` the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True
- OPEN_FILE_ACK.fileInfo.name matches filename
:red-text:`Check 2:` histogram and tile data should satisfy:
- REGION_HISTOGRAM_DATA.histograms.numBins = 109 for both files
- RASTER_TILE_DATA dimensions: width = 241, height = 13 for both files
OPEN_SWAPPED_IMAGES
~~~~~~~~~~~~~~~~~~~
See the `source code `__.
This test verifies opening images with different axis orderings to ensure correct handling of swapped axes.
1. Frontend sends: **OPEN_FILE** (``OpenFile``) for 5 images with varying axis configurations
.. code-block:: protobuf
file = "HH211_IQU-swap-rfds.image" (axes: RA-Freq-Dec-Stokes, 1049x5)
file = "HH211_IQU-swap-rsdf.image" (axes: RA-Stokes-Dec-Freq, 1049x1049)
file = "HH211_IQU.fits" (axes: RA-Dec-Freq-Stokes, 1049x1049)
file = "HH211_IQU-swap-fdsr.image" (axes: Freq-Dec-Stokes-RA, 5x1049)
file = "supermosaic.10-cutted-stokes-glon-vard-glat.image" (483x51)
:red-text:`Check 1:` for each image, the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True
- fileInfoExtended axis numbers and dimensions match expected for each swap pattern
:red-text:`Check 2:` cursor values at specific positions should satisfy:
- (510, 2): SpatialProfileData.value = 0.0015299528604373336
- (555, 586): SpatialProfileData.value = 0.00048562639858573675
- (4, 521): SpatialProfileData.value = 0.03848038613796234
- (477, 12): SpatialProfileData.value = 20.193593978881836
OPENFILE_FITS_BEAMTABLE
~~~~~~~~~~~~~~~~~~~~~~~
See the `source code `__.
This test verifies that beam table information is correctly extracted from FITS format files.
1. Frontend sends: **OPEN_FILE** (``OpenFile``)
.. code-block:: protobuf
directory = "set_QA"
file = "SDC335.579-0.292.spw0.line.fits"
file_id = 0
render_mode = RASTER
2. Backend returns: **OPEN_FILE_ACK** (``OpenFileAck``)
:red-text:`Check 1:` the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True
- fileInfo.type = CARTA.FileType.FITS
- fileInfo.size = 1806465600
- fileInfo.HDUList = ["0"]
:red-text:`Check 2:` the beam table entries should match at specific channels:
- Channel 0: majorAxis = 5.927, minorAxis = 4.056, pa = -73.86
- Channel 10: majorAxis = 6.085, minorAxis = 4.215, pa = -76.39
- Channel 200: majorAxis = 6.154, minorAxis = 4.467, pa = -80.17
- Channel 1000: majorAxis = 6.156, minorAxis = 4.468, pa = -80.17
- Channel 2000: majorAxis = 6.158, minorAxis = 4.469, pa = -80.17
- Channel 3839: majorAxis = 6.358, minorAxis = 4.732, pa = -85.62
OPENFILE_CASA_BEAMTABLE
~~~~~~~~~~~~~~~~~~~~~~~~
See the `source code `__.
This test verifies that beam table information is correctly extracted from CASA format files.
1. Frontend sends: **OPEN_FILE** (``OpenFile``)
.. code-block:: protobuf
directory = "set_QA"
file = "SDC335.579-0.292.spw0.line.image"
file_id = 0
render_mode = RASTER
2. Backend returns: **OPEN_FILE_ACK** (``OpenFileAck``)
:red-text:`Check 1:` the OPEN_FILE_ACK should satisfy:
- OPEN_FILE_ACK.success = True
- fileInfo.type = CARTA.FileType.CASA
- fileInfo.HDUList = [""]
:red-text:`Check 2:` the beam table entries should match identical values as the FITS beam table test at channels 0, 10, 200, 1000, 2000, and 3839