{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# SKA-Low conversion guide" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "XRADIO version 1.1.3 already installed.\n" ] } ], "source": [ "from importlib.metadata import version\n", "import os\n", "\n", "try:\n", " import xradio\n", "\n", " print(\"XRADIO version\", version(\"xradio\"), \"already installed.\")\n", "except ImportError as e:\n", " print(e)\n", " print(\"Installing XRADIO\")\n", "\n", " os.system(\"pip install xradio\")\n", "\n", " import xradio\n", "\n", " print(\"xradio version\", version(\"xradio\"), \" installed.\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Download Dataset" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\u001b[38;2;128;05;128m2026-04-20 15:19:58,240\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m toolviper: \u001b[0m Initializing download... \n", "[\u001b[38;2;128;05;128m2026-04-20 15:19:58,241\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m toolviper: \u001b[0m File already exists: /Users/vdesouza/work/xradio/docs/source/measurement_set/guides/ska_low_sim_18s.ms \n" ] } ], "source": [ "import toolviper\n", "\n", "toolviper.utils.data.download(file=\"ska_low_sim_18s.ms\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Convert to Processing Set" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\u001b[38;2;128;05;128m2026-04-20 15:19:58,528\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m toolviper: \u001b[0m Updated partition scheme used: ['DATA_DESC_ID', 'OBS_MODE', 'OBSERVATION_ID'] \n", "[\u001b[38;2;128;05;128m2026-04-20 15:19:58,529\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m toolviper: \u001b[0m Number of partitions: 1 \n", "[\u001b[38;2;128;05;128m2026-04-20 15:19:58,529\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m toolviper: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [0], FIELD [0], SCAN [0], EPHEMERIS [None] \n", "[\u001b[38;2;128;05;128m2026-04-20 15:19:58,580\u001b[0m] \u001b[38;2;255;160;0m WARNING\u001b[0m\u001b[38;2;112;128;144m toolviper: \u001b[0m SOURCE table empty for (unique) source_id [0] and spectral_window_id 0. \n" ] } ], "source": [ "from xradio.measurement_set import convert_msv2_to_processing_set\n", "\n", "ms_file = \"ska_low_sim_18s.ms\"\n", "outfile = \"ska_low_sim_18s.ps.zarr\"\n", "convert_msv2_to_processing_set(\n", " in_file=ms_file,\n", " out_file=outfile,\n", " parallel_mode=\"none\",\n", " persistence_mode='w',\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Processing Set" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
| \n", " | name | \n", "scan_intents | \n", "shape | \n", "execution_block_UID | \n", "polarization | \n", "scan_name | \n", "spw_name | \n", "spw_intents | \n", "field_name | \n", "source_name | \n", "line_name | \n", "field_coords | \n", "session_reference_UID | \n", "scheduling_block_UID | \n", "project_UID | \n", "start_frequency | \n", "end_frequency | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | \n", "ska_low_sim_18s_0 | \n", "[OBSERVE_TARGET#ON_SOURCE] | \n", "(67, 153, 27, 4) | \n", "--- | \n", "[XX, XY, YX, YY] | \n", "[0] | \n", "spw_0 | \n", "[UNSPECIFIED] | \n", "[_0] | \n", "[Unknown] | \n", "[] | \n", "[fk5, 11h20m00.00s, -10d00m00.00s] | \n", "--- | \n", "--- | \n", "\n", " | 1.013862e+08 | \n", "1.736084e+08 | \n", "
<xarray.DataTree 'ska_low_sim_18s_0'>\n",
"Group: /ska_low_sim_18s_0\n",
"│ Dimensions: (time: 67, baseline_id: 153, frequency: 27,\n",
"│ polarization: 4, uvw_label: 3)\n",
"│ Coordinates:\n",
"│ * time (time) float64 536B 9.47e+08 ... 9.47e+08\n",
"│ field_name (time) <U23 6kB dask.array<chunksize=(67,), meta=np.ndarray>\n",
"│ scan_name (time) <U21 6kB dask.array<chunksize=(67,), meta=np.ndarray>\n",
"│ * baseline_id (baseline_id) int64 1kB 0 1 2 3 ... 150 151 152\n",
"│ baseline_antenna1_name (baseline_id) <U24 15kB dask.array<chunksize=(153,), meta=np.ndarray>\n",
"│ baseline_antenna2_name (baseline_id) <U24 15kB dask.array<chunksize=(153,), meta=np.ndarray>\n",
"│ * frequency (frequency) float64 216B 1.014e+08 ... 1.736e+08\n",
"│ * polarization (polarization) <U2 32B 'XX' 'XY' 'YX' 'YY'\n",
"│ * uvw_label (uvw_label) <U1 12B 'u' 'v' 'w'\n",
"│ Data variables:\n",
"│ EFFECTIVE_INTEGRATION_TIME (time, baseline_id) float64 82kB dask.array<chunksize=(67, 153), meta=np.ndarray>\n",
"│ FLAG (time, baseline_id, frequency, polarization) bool 1MB dask.array<chunksize=(67, 153, 27, 4), meta=np.ndarray>\n",
"│ TIME_CENTROID (time, baseline_id) float64 82kB dask.array<chunksize=(67, 153), meta=np.ndarray>\n",
"│ UVW (time, baseline_id, uvw_label) float64 246kB dask.array<chunksize=(67, 153, 3), meta=np.ndarray>\n",
"│ VISIBILITY (time, baseline_id, frequency, polarization) complex64 9MB dask.array<chunksize=(67, 153, 27, 4), meta=np.ndarray>\n",
"│ WEIGHT (time, baseline_id, frequency, polarization) float32 4MB dask.array<chunksize=(67, 153, 27, 4), meta=np.ndarray>\n",
"│ Attributes:\n",
"│ creation_date: 2026-04-20T21:19:58.537824+00:00\n",
"│ creator: {'software_name': 'xradio', 'version': '1.1.3'}\n",
"│ data_groups: {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
"│ observation_info: {'observer': ['fd382'], 'observing_log': "['']", 'proj...\n",
"│ processor_info: {'sub_type': '', 'type': ''}\n",
"│ schema_version: 4.0.0\n",
"│ type: visibility\n",
"├── Group: /ska_low_sim_18s_0/antenna_xds\n",
"│ Dimensions: (antenna_name: 18, cartesian_pos_label: 3,\n",
"│ receptor_label: 2)\n",
"│ Coordinates:\n",
"│ * antenna_name (antenna_name) <U24 2kB 's0000 (station345_S8-1)'...\n",
"│ mount (antenna_name) <U5 360B dask.array<chunksize=(18,), meta=np.ndarray>\n",
"│ station_name (antenna_name) <U5 360B dask.array<chunksize=(18,), meta=np.ndarray>\n",
"│ telescope_name (antenna_name) <U12 864B dask.array<chunksize=(18,), meta=np.ndarray>\n",
"│ * cartesian_pos_label (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
"│ * receptor_label (receptor_label) <U5 40B 'pol_0' 'pol_1'\n",
"│ polarization_type (antenna_name, receptor_label) <U1 144B dask.array<chunksize=(18, 2), meta=np.ndarray>\n",
"│ Data variables:\n",
"│ ANTENNA_DISH_DIAMETER (antenna_name) float64 144B dask.array<chunksize=(18,), meta=np.ndarray>\n",
"│ ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 432B dask.array<chunksize=(18, 3), meta=np.ndarray>\n",
"│ ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 288B dask.array<chunksize=(18, 2), meta=np.ndarray>\n",
"│ Attributes:\n",
"│ overall_telescope_name: OSKAR 2.10.0\n",
"│ relocatable_antennas: False\n",
"│ type: antenna\n",
"├── Group: /ska_low_sim_18s_0/field_and_source_base_xds\n",
"│ Dimensions: (field_name: 1, sky_dir_label: 2)\n",
"│ Coordinates:\n",
"│ * field_name (field_name) <U23 92B '_0'\n",
"│ source_name (field_name) <U7 28B dask.array<chunksize=(1,), meta=np.ndarray>\n",
"│ * sky_dir_label (sky_dir_label) <U3 24B 'ra' 'dec'\n",
"│ Data variables:\n",
"│ FIELD_PHASE_CENTER_DIRECTION (field_name, sky_dir_label) float64 16B dask.array<chunksize=(1, 2), meta=np.ndarray>\n",
"│ Attributes:\n",
"│ type: field_and_source\n",
"└── Group: /ska_low_sim_18s_0/phased_array_xds\n",
" Dimensions: (antenna_name: 18,\n",
" cartesian_pos_label_local: 3,\n",
" cartesian_pos_label: 3, receptor_label: 2,\n",
" element_id: 256)\n",
" Coordinates:\n",
" * antenna_name (antenna_name) <U24 2kB 's0000 (station345_...\n",
" * cartesian_pos_label_local (cartesian_pos_label_local) <U1 12B 'p' ......\n",
" * cartesian_pos_label (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
" * receptor_label (receptor_label) <U5 40B 'pol_0' 'pol_1'\n",
" polarization_type (antenna_name, receptor_label) <U1 144B dask.array<chunksize=(18, 2), meta=np.ndarray>\n",
" * element_id (element_id) int64 2kB 0 1 2 3 ... 253 254 255\n",
" Data variables:\n",
" PHASED_ARRAY_COORDINATE_AXES (antenna_name, cartesian_pos_label_local, cartesian_pos_label) float64 1kB dask.array<chunksize=(18, 3, 3), meta=np.ndarray>\n",
" PHASED_ARRAY_ELEMENT_FLAG (antenna_name, receptor_label, element_id) bool 9kB dask.array<chunksize=(18, 2, 256), meta=np.ndarray>\n",
" PHASED_ARRAY_ELEMENT_OFFSET (antenna_name, cartesian_pos_label_local, element_id) float64 111kB dask.array<chunksize=(18, 3, 256), meta=np.ndarray>\n",
" Attributes:\n",
" type: phased_array<xarray.DatasetView> Size: 15MB\n",
"Dimensions: (time: 67, baseline_id: 153, frequency: 27,\n",
" polarization: 4, uvw_label: 3)\n",
"Coordinates:\n",
" * time (time) float64 536B 9.47e+08 ... 9.47e+08\n",
" field_name (time) <U23 6kB dask.array<chunksize=(67,), meta=np.ndarray>\n",
" scan_name (time) <U21 6kB dask.array<chunksize=(67,), meta=np.ndarray>\n",
" * baseline_id (baseline_id) int64 1kB 0 1 2 3 ... 150 151 152\n",
" baseline_antenna1_name (baseline_id) <U24 15kB dask.array<chunksize=(153,), meta=np.ndarray>\n",
" baseline_antenna2_name (baseline_id) <U24 15kB dask.array<chunksize=(153,), meta=np.ndarray>\n",
" * frequency (frequency) float64 216B 1.014e+08 ... 1.736e+08\n",
" * polarization (polarization) <U2 32B 'XX' 'XY' 'YX' 'YY'\n",
" * uvw_label (uvw_label) <U1 12B 'u' 'v' 'w'\n",
"Data variables:\n",
" EFFECTIVE_INTEGRATION_TIME (time, baseline_id) float64 82kB dask.array<chunksize=(67, 153), meta=np.ndarray>\n",
" FLAG (time, baseline_id, frequency, polarization) bool 1MB dask.array<chunksize=(67, 153, 27, 4), meta=np.ndarray>\n",
" TIME_CENTROID (time, baseline_id) float64 82kB dask.array<chunksize=(67, 153), meta=np.ndarray>\n",
" UVW (time, baseline_id, uvw_label) float64 246kB dask.array<chunksize=(67, 153, 3), meta=np.ndarray>\n",
" VISIBILITY (time, baseline_id, frequency, polarization) complex64 9MB dask.array<chunksize=(67, 153, 27, 4), meta=np.ndarray>\n",
" WEIGHT (time, baseline_id, frequency, polarization) float32 4MB dask.array<chunksize=(67, 153, 27, 4), meta=np.ndarray>\n",
"Attributes:\n",
" creation_date: 2026-04-20T21:19:58.537824+00:00\n",
" creator: {'software_name': 'xradio', 'version': '1.1.3'}\n",
" data_groups: {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
" observation_info: {'observer': ['fd382'], 'observing_log': "['']", 'proj...\n",
" processor_info: {'sub_type': '', 'type': ''}\n",
" schema_version: 4.0.0\n",
" type: visibility<xarray.Dataset> Size: 6kB\n",
"Dimensions: (antenna_name: 18, cartesian_pos_label: 3,\n",
" receptor_label: 2, baseline_id: 153,\n",
" frequency: 27, polarization: 4, time: 67,\n",
" uvw_label: 3)\n",
"Coordinates:\n",
" * antenna_name (antenna_name) <U24 2kB 's0000 (station345_S8-1)'...\n",
" mount (antenna_name) <U5 360B dask.array<chunksize=(18,), meta=np.ndarray>\n",
" station_name (antenna_name) <U5 360B dask.array<chunksize=(18,), meta=np.ndarray>\n",
" telescope_name (antenna_name) <U12 864B dask.array<chunksize=(18,), meta=np.ndarray>\n",
" * cartesian_pos_label (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
" * receptor_label (receptor_label) <U5 40B 'pol_0' 'pol_1'\n",
" polarization_type (antenna_name, receptor_label) <U1 144B dask.array<chunksize=(18, 2), meta=np.ndarray>\n",
" * baseline_id (baseline_id) int64 1kB 0 1 2 3 ... 149 150 151 152\n",
" * frequency (frequency) float64 216B 1.014e+08 ... 1.736e+08\n",
" * polarization (polarization) <U2 32B 'XX' 'XY' 'YX' 'YY'\n",
" * time (time) float64 536B 9.47e+08 9.47e+08 ... 9.47e+08\n",
" * uvw_label (uvw_label) <U1 12B 'u' 'v' 'w'\n",
"Data variables:\n",
" ANTENNA_DISH_DIAMETER (antenna_name) float64 144B dask.array<chunksize=(18,), meta=np.ndarray>\n",
" ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 432B dask.array<chunksize=(18, 3), meta=np.ndarray>\n",
" ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 288B dask.array<chunksize=(18, 2), meta=np.ndarray>\n",
"Attributes:\n",
" overall_telescope_name: OSKAR 2.10.0\n",
" relocatable_antennas: False\n",
" type: antennaska_low_sim_18s.ms ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00\n\n", "text/plain": "ska_low_sim_18s.ms \u001b[38;2;114;156;31m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[35m100%\u001b[0m \u001b[36m0:00:00\u001b[0m\n" }, "metadata": {}, "output_type": "display_data" } ] } }, "c9be37d068de456bacccec9a6c551b58": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 4 }