From 7af9cd1d99b501f7fe434f715fec9a2d0445f639 Mon Sep 17 00:00:00 2001 From: Jan-Willem Date: Wed, 17 Dec 2025 10:35:52 -0500 Subject: [PATCH 1/4] Add support for string parallel coords (for example antenna_name) in node_task_data_mapping. Also added an example ipynb. --- docs/sd_tutorial.ipynb | 1925 +++++++++++++++++ .../graph_tools/coordinate_utils.py | 34 +- 2 files changed, 1948 insertions(+), 11 deletions(-) create mode 100644 docs/sd_tutorial.ipynb diff --git a/docs/sd_tutorial.ipynb b/docs/sd_tutorial.ipynb new file mode 100644 index 0000000..65cc25e --- /dev/null +++ b/docs/sd_tutorial.ipynb @@ -0,0 +1,1925 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "dac21471", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\u001b[38;2;128;05;128m2025-12-17 10:32:03,420\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m Downloading from [cloudflare] .... \n" + ] + }, + { + "data": { + "text/html": [ + "
                                     \n",
+       "  Download List                      \n",
+       " ─────────────────────────────────── \n",
+       "  uid___A002_Xced5df_Xf9d9.small.ms  \n",
+       "                                     \n",
+       "
\n" + ], + "text/plain": [ + " \n", + " \u001b[1m \u001b[0m\u001b[1mDownload List \u001b[0m\u001b[1m \u001b[0m \n", + " ─────────────────────────────────── \n", + " \u001b[35muid___A002_Xced5df_Xf9d9.small.ms\u001b[0m \n", + " \n" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[\u001b[38;2;128;05;128m2025-12-17 10:32:03,423\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m viperlog: \u001b[0m File exists: uid___A002_Xced5df_Xf9d9.small.ms \n" + ] + }, + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "e44c813f385045c9bd6b7136449a838c", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + "Output()" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "
\n"
+      ],
+      "text/plain": []
+     },
+     "metadata": {},
+     "output_type": "display_data"
+    }
+   ],
+   "source": [
+    "import toolviper\n",
+    "ms_file = \"uid___A002_Xced5df_Xf9d9.small.ms\"\n",
+    "toolviper.utils.data.download(file=ms_file)"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "id": "1358e83a",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:03,470\u001b[0m] \u001b[38;2;255;160;0m WARNING\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m It is recommended that the local cache directory be set using the \u001b[38;2;50;50;205mdask_local_dir\u001b[0m parameter. \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:03,471\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m Running client in synchronous mode. \n"
+     ]
+    }
+   ],
+   "source": [
+    "# Code to start a Dask cluster with two workers and 1 thread each.\n",
+    "from toolviper.dask.client import local_client\n",
+    "\n",
+    "# viper_client = local_client(cores=2, memory_limit=\"4GB\",autorestrictor=True)\n",
+    "viper_client = local_client(serial_execution=True)\n",
+    "viper_client"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 3,
+   "id": "a89a6310",
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,798\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m Updated partition scheme used: ['DATA_DESC_ID', 'OBS_MODE', 'OBSERVATION_ID', 'EPHEMERIS_ID'] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,803\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m Number of partitions: 20 \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,804\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [10], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,805\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [1], STATE [10], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,806\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [2], STATE [10], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,807\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [3], STATE [10], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,807\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [11], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,808\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [1], STATE [11], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,809\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [2], STATE [11], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,809\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [3], STATE [11], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,810\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [12], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,811\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [1], STATE [12], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,811\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [2], STATE [12], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,812\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [3], STATE [12], FIELD [1], SCAN [2, 4, 6, 8, 10, 12, 14, 16, 18], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,813\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,813\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [1], STATE [13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,814\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [2], STATE [13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,815\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [3], STATE [13, 15, 17, 19, 21, 23, 25, 27, 29, 31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,815\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,816\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [1], STATE [14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,817\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [2], STATE [14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n",
+      "[\u001b[38;2;128;05;128m2025-12-17 10:32:04,818\u001b[0m] \u001b[38;2;50;50;205m    INFO\u001b[0m\u001b[38;2;112;128;144m    viperlog: \u001b[0m OBSERVATION_ID [0], DDI [3], STATE [14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52], FIELD [1], SCAN [3, 5, 7, 9, 11, 13, 15, 17], EPHEMERIS [-1] \n"
+     ]
+    }
+   ],
+   "source": [
+    "from xradio.measurement_set import convert_msv2_to_processing_set\n",
+    "ps_store = ms_file.replace(\".ms\", \".ps.zarr\")\n",
+    "\n",
+    "convert_msv2_to_processing_set(\n",
+    "    in_file=ms_file,\n",
+    "    out_file=ps_store,\n",
+    "    parallel_mode=\"partition\",\n",
+    "    overwrite=True,\n",
+    ")"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "id": "0f327062",
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
namescan_intentsshapeexecution_block_UIDpolarizationscan_namespw_namespw_intentsfield_namesource_nameline_namefield_coordssession_reference_UIDscheduling_block_UIDproject_UIDstart_frequencyend_frequency
0uid___A002_Xced5df_Xf9d9.small_00[CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0[UNSPECIFIED][NGC1097_1][NGC1097_1][CO_v_0_2_1(ID=3768101)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.295643e+112.295648e+11
1uid___A002_Xced5df_Xf9d9.small_01[CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1[UNSPECIFIED][NGC1097_1][NGC1097_1][Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.320078e+112.320390e+11
2uid___A002_Xced5df_Xf9d9.small_02[CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2[UNSPECIFIED][NGC1097_1][NGC1097_1][H2CO_Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.161367e+112.161406e+11
3uid___A002_Xced5df_Xf9d9.small_03[CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3[UNSPECIFIED][NGC1097_1][NGC1097_1][C18O_2_1(ID=3768339)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.179697e+112.179736e+11
4uid___A002_Xced5df_Xf9d9.small_04[CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0[UNSPECIFIED][NGC1097_1][NGC1097_1][CO_v_0_2_1(ID=3768101)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.295643e+112.295648e+11
5uid___A002_Xced5df_Xf9d9.small_05[CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1[UNSPECIFIED][NGC1097_1][NGC1097_1][Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.320078e+112.320390e+11
6uid___A002_Xced5df_Xf9d9.small_06[CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2[UNSPECIFIED][NGC1097_1][NGC1097_1][H2CO_Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.161367e+112.161406e+11
7uid___A002_Xced5df_Xf9d9.small_07[CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3[UNSPECIFIED][NGC1097_1][NGC1097_1][C18O_2_1(ID=3768339)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.179697e+112.179736e+11
8uid___A002_Xced5df_Xf9d9.small_08[CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0[UNSPECIFIED][NGC1097_1][NGC1097_1][CO_v_0_2_1(ID=3768101)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.295643e+112.295648e+11
9uid___A002_Xced5df_Xf9d9.small_09[CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1[UNSPECIFIED][NGC1097_1][NGC1097_1][Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.320078e+112.320390e+11
10uid___A002_Xced5df_Xf9d9.small_10[CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2[UNSPECIFIED][NGC1097_1][NGC1097_1][H2CO_Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.161367e+112.161406e+11
11uid___A002_Xced5df_Xf9d9.small_11[CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT](135, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][10, 12, 14, 16, 18, 2, 4, 6, 8]X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3[UNSPECIFIED][NGC1097_1][NGC1097_1][C18O_2_1(ID=3768339)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.179697e+112.179736e+11
12uid___A002_Xced5df_Xf9d9.small_12[OBSERVE_TARGET#OFF_SOURCE](2844, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0[UNSPECIFIED][NGC1097_1][NGC1097_1][CO_v_0_2_1(ID=3768101)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.295643e+112.295648e+11
13uid___A002_Xced5df_Xf9d9.small_13[OBSERVE_TARGET#OFF_SOURCE](2844, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1[UNSPECIFIED][NGC1097_1][NGC1097_1][Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.320078e+112.320390e+11
14uid___A002_Xced5df_Xf9d9.small_14[OBSERVE_TARGET#OFF_SOURCE](2844, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2[UNSPECIFIED][NGC1097_1][NGC1097_1][H2CO_Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.161367e+112.161406e+11
15uid___A002_Xced5df_Xf9d9.small_15[OBSERVE_TARGET#OFF_SOURCE](2844, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3[UNSPECIFIED][NGC1097_1][NGC1097_1][C18O_2_1(ID=3768339)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.179697e+112.179736e+11
16uid___A002_Xced5df_Xf9d9.small_16[OBSERVE_TARGET#ON_SOURCE](5850, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0[UNSPECIFIED][NGC1097_1][NGC1097_1][CO_v_0_2_1(ID=3768101)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.295643e+112.295648e+11
17uid___A002_Xced5df_Xf9d9.small_17[OBSERVE_TARGET#ON_SOURCE](5850, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1[UNSPECIFIED][NGC1097_1][NGC1097_1][Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.320078e+112.320390e+11
18uid___A002_Xced5df_Xf9d9.small_18[OBSERVE_TARGET#ON_SOURCE](5850, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2[UNSPECIFIED][NGC1097_1][NGC1097_1][H2CO_Continuum(ID=0)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.161367e+112.161406e+11
19uid___A002_Xced5df_Xf9d9.small_19[OBSERVE_TARGET#ON_SOURCE](5850, 2, 3, 2)uid://A002/Xced5df/Xf9d9[XX, YY][11, 13, 15, 17, 3, 5, 7, 9]X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3[UNSPECIFIED][NGC1097_1][NGC1097_1][C18O_2_1(ID=3768339)][icrs, 2h46m19.09s, -30d16m30.18s]---uid://A001/X1284/X2621uid://A001/X1221/Xa612.179697e+112.179736e+11
\n", + "
" + ], + "text/plain": [ + " name \\\n", + "0 uid___A002_Xced5df_Xf9d9.small_00 \n", + "1 uid___A002_Xced5df_Xf9d9.small_01 \n", + "2 uid___A002_Xced5df_Xf9d9.small_02 \n", + "3 uid___A002_Xced5df_Xf9d9.small_03 \n", + "4 uid___A002_Xced5df_Xf9d9.small_04 \n", + "5 uid___A002_Xced5df_Xf9d9.small_05 \n", + "6 uid___A002_Xced5df_Xf9d9.small_06 \n", + "7 uid___A002_Xced5df_Xf9d9.small_07 \n", + "8 uid___A002_Xced5df_Xf9d9.small_08 \n", + "9 uid___A002_Xced5df_Xf9d9.small_09 \n", + "10 uid___A002_Xced5df_Xf9d9.small_10 \n", + "11 uid___A002_Xced5df_Xf9d9.small_11 \n", + "12 uid___A002_Xced5df_Xf9d9.small_12 \n", + "13 uid___A002_Xced5df_Xf9d9.small_13 \n", + "14 uid___A002_Xced5df_Xf9d9.small_14 \n", + "15 uid___A002_Xced5df_Xf9d9.small_15 \n", + "16 uid___A002_Xced5df_Xf9d9.small_16 \n", + "17 uid___A002_Xced5df_Xf9d9.small_17 \n", + "18 uid___A002_Xced5df_Xf9d9.small_18 \n", + "19 uid___A002_Xced5df_Xf9d9.small_19 \n", + "\n", + " scan_intents \\\n", + "0 [CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE] \n", + "1 [CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE] \n", + "2 [CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE] \n", + "3 [CALIBRATE_ATMOSPHERE#OFF_SOURCE, CALIBRATE_WVR#OFF_SOURCE] \n", + "4 [CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT] \n", + "5 [CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT] \n", + "6 [CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT] \n", + "7 [CALIBRATE_ATMOSPHERE#AMBIENT, CALIBRATE_WVR#AMBIENT] \n", + "8 [CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT] \n", + "9 [CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT] \n", + "10 [CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT] \n", + "11 [CALIBRATE_ATMOSPHERE#HOT, CALIBRATE_WVR#HOT] \n", + "12 [OBSERVE_TARGET#OFF_SOURCE] \n", + "13 [OBSERVE_TARGET#OFF_SOURCE] \n", + "14 [OBSERVE_TARGET#OFF_SOURCE] \n", + "15 [OBSERVE_TARGET#OFF_SOURCE] \n", + "16 [OBSERVE_TARGET#ON_SOURCE] \n", + "17 [OBSERVE_TARGET#ON_SOURCE] \n", + "18 [OBSERVE_TARGET#ON_SOURCE] \n", + "19 [OBSERVE_TARGET#ON_SOURCE] \n", + "\n", + " shape execution_block_UID polarization \\\n", + "0 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "1 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "2 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "3 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "4 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "5 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "6 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "7 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "8 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "9 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "10 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "11 (135, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "12 (2844, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "13 (2844, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "14 (2844, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "15 (2844, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "16 (5850, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "17 (5850, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "18 (5850, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "19 (5850, 2, 3, 2) uid://A002/Xced5df/Xf9d9 [XX, YY] \n", + "\n", + " scan_name \\\n", + "0 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "1 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "2 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "3 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "4 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "5 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "6 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "7 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "8 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "9 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "10 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "11 [10, 12, 14, 16, 18, 2, 4, 6, 8] \n", + "12 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "13 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "14 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "15 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "16 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "17 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "18 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "19 [11, 13, 15, 17, 3, 5, 7, 9] \n", + "\n", + " spw_name spw_intents field_name \\\n", + "0 X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0 [UNSPECIFIED] [NGC1097_1] \n", + "1 X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1 [UNSPECIFIED] [NGC1097_1] \n", + "2 X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2 [UNSPECIFIED] [NGC1097_1] \n", + "3 X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3 [UNSPECIFIED] [NGC1097_1] \n", + "4 X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0 [UNSPECIFIED] [NGC1097_1] \n", + "5 X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1 [UNSPECIFIED] [NGC1097_1] \n", + "6 X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2 [UNSPECIFIED] [NGC1097_1] \n", + "7 X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3 [UNSPECIFIED] [NGC1097_1] \n", + "8 X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0 [UNSPECIFIED] [NGC1097_1] \n", + "9 X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1 [UNSPECIFIED] [NGC1097_1] \n", + "10 X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2 [UNSPECIFIED] [NGC1097_1] \n", + "11 X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3 [UNSPECIFIED] [NGC1097_1] \n", + "12 X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0 [UNSPECIFIED] [NGC1097_1] \n", + "13 X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1 [UNSPECIFIED] [NGC1097_1] \n", + "14 X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2 [UNSPECIFIED] [NGC1097_1] \n", + "15 X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3 [UNSPECIFIED] [NGC1097_1] \n", + "16 X1204293883#ALMA_RB_06#BB_1#SW-01#FULL_RES_0 [UNSPECIFIED] [NGC1097_1] \n", + "17 X1204293883#ALMA_RB_06#BB_2#SW-01#FULL_RES_1 [UNSPECIFIED] [NGC1097_1] \n", + "18 X1204293883#ALMA_RB_06#BB_3#SW-01#FULL_RES_2 [UNSPECIFIED] [NGC1097_1] \n", + "19 X1204293883#ALMA_RB_06#BB_4#SW-01#FULL_RES_3 [UNSPECIFIED] [NGC1097_1] \n", + "\n", + " source_name line_name field_coords \\\n", + "0 [NGC1097_1] [CO_v_0_2_1(ID=3768101)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "1 [NGC1097_1] [Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "2 [NGC1097_1] [H2CO_Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "3 [NGC1097_1] [C18O_2_1(ID=3768339)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "4 [NGC1097_1] [CO_v_0_2_1(ID=3768101)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "5 [NGC1097_1] [Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "6 [NGC1097_1] [H2CO_Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "7 [NGC1097_1] [C18O_2_1(ID=3768339)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "8 [NGC1097_1] [CO_v_0_2_1(ID=3768101)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "9 [NGC1097_1] [Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "10 [NGC1097_1] [H2CO_Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "11 [NGC1097_1] [C18O_2_1(ID=3768339)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "12 [NGC1097_1] [CO_v_0_2_1(ID=3768101)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "13 [NGC1097_1] [Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "14 [NGC1097_1] [H2CO_Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "15 [NGC1097_1] [C18O_2_1(ID=3768339)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "16 [NGC1097_1] [CO_v_0_2_1(ID=3768101)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "17 [NGC1097_1] [Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "18 [NGC1097_1] [H2CO_Continuum(ID=0)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "19 [NGC1097_1] [C18O_2_1(ID=3768339)] [icrs, 2h46m19.09s, -30d16m30.18s] \n", + "\n", + " session_reference_UID scheduling_block_UID project_UID \\\n", + "0 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "1 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "2 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "3 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "4 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "5 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "6 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "7 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "8 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "9 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "10 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "11 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "12 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "13 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "14 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "15 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "16 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "17 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "18 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "19 --- uid://A001/X1284/X2621 uid://A001/X1221/Xa61 \n", + "\n", + " start_frequency end_frequency \n", + "0 2.295643e+11 2.295648e+11 \n", + "1 2.320078e+11 2.320390e+11 \n", + "2 2.161367e+11 2.161406e+11 \n", + "3 2.179697e+11 2.179736e+11 \n", + "4 2.295643e+11 2.295648e+11 \n", + "5 2.320078e+11 2.320390e+11 \n", + "6 2.161367e+11 2.161406e+11 \n", + "7 2.179697e+11 2.179736e+11 \n", + "8 2.295643e+11 2.295648e+11 \n", + "9 2.320078e+11 2.320390e+11 \n", + "10 2.161367e+11 2.161406e+11 \n", + "11 2.179697e+11 2.179736e+11 \n", + "12 2.295643e+11 2.295648e+11 \n", + "13 2.320078e+11 2.320390e+11 \n", + "14 2.161367e+11 2.161406e+11 \n", + "15 2.179697e+11 2.179736e+11 \n", + "16 2.295643e+11 2.295648e+11 \n", + "17 2.320078e+11 2.320390e+11 \n", + "18 2.161367e+11 2.161406e+11 \n", + "19 2.179697e+11 2.179736e+11 " + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from xradio.measurement_set import open_processing_set\n", + "\n", + "import pandas as pd\n", + "pd.set_option('display.max_colwidth', 1000)\n", + "\n", + "ps_xdt = open_processing_set(ps_store)\n", + "ps_xdt.xr_ps.summary()" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "82d19901", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.Dataset> Size: 73kB\n",
+       "Dimensions:                 (antenna_name: 2, cartesian_pos_label: 3,\n",
+       "                             receptor_label: 2, frequency: 12, polarization: 2,\n",
+       "                             time: 9099)\n",
+       "Coordinates:\n",
+       "  * antenna_name            (antenna_name) <U9 72B 'PM01_T703' 'PM02_T701'\n",
+       "  * cartesian_pos_label     (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
+       "  * receptor_label          (receptor_label) <U5 40B 'pol_0' 'pol_1'\n",
+       "  * frequency               (frequency) float64 96B 2.161e+11 ... 2.32e+11\n",
+       "  * polarization            (polarization) <U2 16B 'XX' 'YY'\n",
+       "  * time                    (time) float64 73kB 1.53e+09 1.53e+09 ... 1.53e+09\n",
+       "    mount                   (antenna_name) <U6 48B dask.array<chunksize=(2,), meta=np.ndarray>\n",
+       "    polarization_type       (antenna_name, receptor_label) <U1 16B dask.array<chunksize=(2, 2), meta=np.ndarray>\n",
+       "    station_name            (antenna_name) <U4 32B dask.array<chunksize=(2,), meta=np.ndarray>\n",
+       "    telescope_name          (antenna_name) <U4 32B dask.array<chunksize=(2,), meta=np.ndarray>\n",
+       "Data variables:\n",
+       "    ANTENNA_DISH_DIAMETER   (antenna_name) float64 16B dask.array<chunksize=(2,), meta=np.ndarray>\n",
+       "    ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 48B dask.array<chunksize=(2, 3), meta=np.ndarray>\n",
+       "    ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 32B dask.array<chunksize=(2, 2), meta=np.ndarray>\n",
+       "Attributes:\n",
+       "    overall_telescope_name:  ALMA\n",
+       "    relocatable_antennas:    True\n",
+       "    type:                    antenna
" + ], + "text/plain": [ + " Size: 73kB\n", + "Dimensions: (antenna_name: 2, cartesian_pos_label: 3,\n", + " receptor_label: 2, frequency: 12, polarization: 2,\n", + " time: 9099)\n", + "Coordinates:\n", + " * antenna_name (antenna_name) \n", + " polarization_type (antenna_name, receptor_label) \n", + " station_name (antenna_name) \n", + " telescope_name (antenna_name) \n", + "Data variables:\n", + " ANTENNA_DISH_DIAMETER (antenna_name) float64 16B dask.array\n", + " ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 48B dask.array\n", + " ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 32B dask.array\n", + "Attributes:\n", + " overall_telescope_name: ALMA\n", + " relocatable_antennas: True\n", + " type: antenna" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ps_xdt.xr_ps.get_combined_antenna_xds()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "1d98327f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Parallel Coordinates - Antenna Name:\n" + ] + }, + { + "data": { + "text/html": [ + "
data: ['PM01_T703' 'PM02_T701']
data_chunks
0: ['PM01_T703']
1: ['PM02_T701']
data_chunks_edges: [np.str_('PM01_T703'), np.str_('PM01_T703'), np.str_('PM02_T701'), np.str_('PM02_T701')]
dims: ('antenna_name',)
attrs
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Node Task Data Mapping:\n" + ] + }, + { + "data": { + "text/html": [ + "
0
chunk_indices: (np.int64(0),)
parallel_dims: ['antenna_name']
data_selection
uid___A002_Xced5df_Xf9d9.small_00
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_01
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_02
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_03
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_04
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_05
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_06
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_07
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_08
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_09
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_10
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_11
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_12
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_13
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_14
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_15
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_16
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_17
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_18
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_19
antenna_name: slice(np.int64(0), np.int64(1), None)
task_coords
antenna_name
data: ['PM01_T703']
dims: ('antenna_name',)
attrs
1
chunk_indices: (np.int64(1),)
parallel_dims: ['antenna_name']
data_selection
uid___A002_Xced5df_Xf9d9.small_00
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_01
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_02
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_03
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_04
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_05
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_06
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_07
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_08
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_09
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_10
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_11
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_12
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_13
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_14
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_15
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_16
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_17
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_18
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_19
antenna_name: slice(np.int64(1), np.int64(2), None)
task_coords
antenna_name
data: ['PM02_T701']
dims: ('antenna_name',)
attrs
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from graphviper.graph_tools.coordinate_utils import (\n", + " interpolate_data_coords_onto_parallel_coords, make_parallel_coord\n", + ")\n", + "\n", + "from graphviper.graph_tools.coordinate_utils import make_frequency_coord\n", + "\n", + "from toolviper.utils.display import dict_to_html\n", + "from IPython.display import HTML, display\n", + "\n", + "\n", + "parallel_coords ={}\n", + "coord = ps_xdt.xr_ps.get_combined_antenna_xds().antenna_name\n", + "n_chunks = len(coord)\n", + "parallel_coords[\"antenna_name\"] = make_parallel_coord(coord=coord, n_chunks=n_chunks)\n", + "print(\"Parallel Coordinates - Antenna Name:\")\n", + "display(HTML(dict_to_html(parallel_coords[\"antenna_name\"])))\n", + "\n", + "node_task_data_mapping = interpolate_data_coords_onto_parallel_coords(\n", + " parallel_coords, ps_xdt\n", + ")\n", + "\n", + "print(\"Node Task Data Mapping:\")\n", + "display(HTML(dict_to_html(node_task_data_mapping)))" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "923e5b97", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import dask\n", + "from graphviper.graph_tools.map import map\n", + "from graphviper.graph_tools.generate_dask_workflow import generate_dask_workflow\n", + "\n", + "from toolviper.utils.display import dict_to_html\n", + "\n", + "from IPython.display import display, HTML\n", + "\n", + "\n", + "def my_func(input_params):\n", + " display(HTML(dict_to_html(input_params)))\n", + "\n", + " print(\"*\" * 30)\n", + " return input_params[\"test_input\"]\n", + "\n", + "\n", + "input_params = {}\n", + "input_params[\"test_input\"] = 42\n", + "\n", + "viper_graph = map(\n", + " input_data=ps_xdt,\n", + " node_task_data_mapping=node_task_data_mapping,\n", + " node_task=my_func,\n", + " input_params=input_params,\n", + ")\n", + "\n", + "dask_graph = generate_dask_workflow(viper_graph)\n", + "dask.visualize(dask_graph, filename=\"map_graph\")" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "338ebb73", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
test_input: 42
chunk_indices: (np.int64(1),)
parallel_dims: ['antenna_name']
data_selection
uid___A002_Xced5df_Xf9d9.small_00
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_01
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_02
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_03
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_04
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_05
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_06
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_07
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_08
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_09
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_10
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_11
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_12
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_13
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_14
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_15
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_16
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_17
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_18
antenna_name: slice(np.int64(1), np.int64(2), None)
uid___A002_Xced5df_Xf9d9.small_19
antenna_name: slice(np.int64(1), np.int64(2), None)
task_coords
antenna_name
data: ['PM02_T701']
dims: ('antenna_name',)
attrs
task_id: 1
input_data: None
date_time: None
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************************\n" + ] + }, + { + "data": { + "text/html": [ + "
test_input: 42
chunk_indices: (np.int64(0),)
parallel_dims: ['antenna_name']
data_selection
uid___A002_Xced5df_Xf9d9.small_00
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_01
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_02
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_03
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_04
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_05
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_06
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_07
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_08
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_09
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_10
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_11
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_12
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_13
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_14
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_15
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_16
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_17
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_18
antenna_name: slice(np.int64(0), np.int64(1), None)
uid___A002_Xced5df_Xf9d9.small_19
antenna_name: slice(np.int64(0), np.int64(1), None)
task_coords
antenna_name
data: ['PM01_T703']
dims: ('antenna_name',)
attrs
task_id: 0
input_data: None
date_time: None
" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "******************************\n" + ] + }, + { + "data": { + "text/plain": [ + "([42, 42],)" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "dask.compute(dask_graph)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "timg", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.13.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/src/graphviper/graph_tools/coordinate_utils.py b/src/graphviper/graph_tools/coordinate_utils.py index 62d44e2..1944b19 100644 --- a/src/graphviper/graph_tools/coordinate_utils.py +++ b/src/graphviper/graph_tools/coordinate_utils.py @@ -270,7 +270,7 @@ def interpolate_data_coords_onto_parallel_coords( list[str] ] = None, # Current options are {'field_name', 'spectral_window_name'} ) -> Dict: - """Interpolate data_coords onto parallel_coords to create the ``node_task_data_mapping``. + """Interpolate data_coords onto parallel_coords to create the ``node_task_data_mapping``. For the case of string coordinates (for example antenna_name), only exact matching is performed. Parameters ---------- @@ -387,16 +387,28 @@ def interpolate_data_coords_onto_parallel_coords( for xds_name in input_data: for dim, pc in parallel_coords.items(): xds = input_data[xds_name] - - interpolator = interp1d( - input_data[xds_name][dim].values, - np.arange(len(input_data[xds_name][dim].values)), - kind=interpolation_method, - bounds_error=False, - fill_value=-1, - # fill_value="extrapolate", - assume_sorted=assume_sorted, - ) + + if input_data[xds_name][dim].dtype.kind in ('U','S','O'): + # For string arrays, we perform exact matching only. + # We map each string to its integer index. + string_to_idx = {val: i for i, val in enumerate(input_data[xds_name][dim].values)} + + # Create a vectorized lookup function + # Values not found in the input data return -1 + def string_interpolator(query_values): + return np.array([string_to_idx.get(val, -1) for val in query_values]) + + interpolator = string_interpolator + else: + interpolator = interp1d( + input_data[xds_name][dim].values, + np.arange(len(input_data[xds_name][dim].values)), + kind=interpolation_method, + bounds_error=False, + fill_value=-1, + # fill_value="extrapolate", + assume_sorted=assume_sorted, + ) chunk_indx_start_stop = {} # Interpolate all the chunk edges. This is done for performance reasons. From b8696a3add4a56ef8ce1b3f1b8593cb79ab73759 Mon Sep 17 00:00:00 2001 From: Jan-Willem Date: Wed, 17 Dec 2025 10:42:40 -0500 Subject: [PATCH 2/4] Black and fix image ipynb. --- docs/graph_building_tutorial_image.ipynb | 43 +++++++++---------- .../graph_tools/coordinate_utils.py | 16 ++++--- 2 files changed, 31 insertions(+), 28 deletions(-) diff --git a/docs/graph_building_tutorial_image.ipynb b/docs/graph_building_tutorial_image.ipynb index d0e1fe7..666a3b2 100644 --- a/docs/graph_building_tutorial_image.ipynb +++ b/docs/graph_building_tutorial_image.ipynb @@ -26,7 +26,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "GraphVIPER version 0.0.35 already installed.\n" + "GraphVIPER version 0.0.36 already installed.\n" ] } ], @@ -68,8 +68,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "[\u001b[38;2;128;05;128m2025-10-07 10:33:55,721\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m Module path: \u001b[38;2;50;50;205m/Users/jsteeb/Dropbox/toolviper/src/toolviper\u001b[0m \n", - "[\u001b[38;2;128;05;128m2025-10-07 10:33:55,724\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m Downloading from [cloudflare] .... \n" + "[\u001b[38;2;128;05;128m2025-12-17 10:41:57,326\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m Downloading from [cloudflare] .... \n" ] }, { @@ -97,13 +96,13 @@ "name": "stdout", "output_type": "stream", "text": [ - "[\u001b[38;2;128;05;128m2025-10-07 10:33:55,728\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m File exists: demo_simulated.im \n" + "[\u001b[38;2;128;05;128m2025-12-17 10:41:57,329\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m File exists: demo_simulated.im \n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "9acdd7a70e2247908f76db39aa4254ca", + "model_id": "37bca1f1efbb40d8a9c8313de7a598db", "version_major": 2, "version_minor": 0 }, @@ -148,7 +147,7 @@ { "data": { "text/plain": [ - "" + "" ] }, "execution_count": 3, @@ -180,9 +179,9 @@ "name": "stdout", "output_type": "stream", "text": [ - "[\u001b[38;2;128;05;128m2025-10-07 10:33:57,323\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m J2000 found as system reference frame in CASA image This corresponds to fk5(equinox=\"j2000\") in astropy. Metadata will be written appropriately \n", + "[\u001b[38;2;128;05;128m2025-12-17 10:42:01,925\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m J2000 found as system reference frame in CASA image This corresponds to fk5(equinox=\"j2000\") in astropy. Metadata will be written appropriately \n", "Successful readonly open of default-locked table demo_simulated.im: 1 columns, 1 rows\n", - "[\u001b[38;2;128;05;128m2025-10-07 10:33:57,348\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m J2000 found as native reference frame in CASA image This corresponds to fk5(equinox=\"j2000\") in astropy. Metadata will be written appropriately \n" + "[\u001b[38;2;128;05;128m2025-12-17 10:42:01,949\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m graphviper: \u001b[0m J2000 found as native reference frame in CASA image This corresponds to fk5(equinox=\"j2000\") in astropy. Metadata will be written appropriately \n" ] }, { @@ -649,7 +648,7 @@ " MASK0 (time, frequency, polarization, l, m) bool 4MB dask.array<chunksize=(1, 50, 4, 40, 20), meta=np.ndarray>\n", " BEAM (time, frequency, polarization, beam_param) float64 5kB dask.array<chunksize=(1, 50, 4, 3), meta=np.ndarray>\n", "Attributes:\n", - " direction: {'reference': {'attrs': {'frame': 'fk5', 'type': 'sky_coord',...