{ "cells": [ { "cell_type": "markdown", "id": "17f99679-6680-4b96-a978-af765635b0d8", "metadata": {}, "source": [ "# Measurement Set Tutorial\n", "\n", "This tutorial notebook can be run on the Google Colaboratory environment via this [link](https://colab.research.google.com/github/casangi/xradio/blob/main/docs/source/measurement_set/tutorials/measurement_set_tutorial.ipynb).\n", "\n", "**XRADIO** is an open-source Python package that leverages [xarray](https://github.com/pydata/xarray) to provide an interface for radio astronomy data. It includes converters for legacy formats and defines versioned schemas for each dataset type. A schema checker is also included to verify whether a dataset conforms to the expected schema.\n", "\n", "Data is organized into the following structures:\n", "\n", "- [xarray.Dataset](https://docs.xarray.dev/en/stable/generated/xarray.Dataset.html): A multi-dimensional, in-memory array container for labeled n-dimensional arrays.\n", "- [xarray.DataArray](https://docs.xarray.dev/en/stable/generated/xarray.DataArray.html): An n-dimensional array with labeled coordinates and dimensions.\n", "- [xarray.DataTree](https://docs.xarray.dev/en/latest/generated/xarray.DataTree.html): A tree-like hierarchical collection of xarray objects (datasets and children trees).\n", "\n", "XRADIO extends the functionality of these xarray data structures by making use of **xarray accessors**.\n", "\n", "To use XRADIO effectively, it's important to understand the terminology and indexing methods used in xarray. The following documentation is recommended reading:\n", "\n", "- [xarray terminology](https://docs.xarray.dev/en/latest/user-guide/terminology.html)\n", "- [xarray data structures](https://docs.xarray.dev/en/latest/user-guide/data-structures.html) (arrays, coordinates, datasets, and data trees)\n", "- [xarray indexing and selection guide](https://docs.xarray.dev/en/latest/user-guide/indexing.html)\n", "- [xarray accessors](https://docs.xarray.dev/en/latest/internals/extending-xarray.html)\n", "\n", "## Acronyms Used\n", "\n", "- `ps` = processing set \n", "- `ms` = measurement set \n", "- `cor` = correlated \n", "- `xdt` = xarray DataTree \n", "- `xds` = xarray Dataset \n", "- `xda` = xarray DataArray \n", "\n", "Using these acronyms one can refer for example to the Processing Set DataTree (`ps_xdt`), the Measurement Set DataTree (`ms_xdt`) or the correlated dataset (`cor_xds`)." ] }, { "cell_type": "markdown", "id": "75d18a3b-e0fc-452d-b65a-2d1bab66412d", "metadata": {}, "source": [ "## Measurement Set v4 Schema Layout\n", "\n", "The Measurement Set v4 (MSv4) schema for radio telescope interferometric data (*Visibilities*) and single-dish data (*Spectrum*) is implemented in memory as an [`xarray.DataTree`](https://docs.xarray.dev/en/latest/generated/xarray.DataTree.html). \n", "\n", "The root node of this data tree (the measurement set `xarray.DataTree`, `ms_xdt`), is the `cor_xds` (correlated `xarray.Dataset`), which contains the Visibility or Spectrum data. It also includes data that shares the same dimensions as the Visibility/Spectrum data and serves a similar role to the *Main* table in Measurement Set v2 (MSv2).\n", "\n", "The child nodes of `ms_xdt` contain metadata such as antenna positions, field and source definitions, and other auxiliary information. Each `ms_xdt` is limited to a single observation, spectral window, polarization setup, observation mode, processor, and beam per antenna.\n", "\n", "Multiple `ms_xdt` trees can be grouped together as children of a processing set data tree (`ps_xdt`). This tree has an empty root node, with each child node representing an individual `ms_xdt`. The design of `ps_xdt` is inspired by the [Multi-MS format](https://casadocs.readthedocs.io/en/v6.2.0/notebooks/parallel-processing.html#The-Multi-MS) in MSv2.\n", "\n", "Figure 1 illustrates a simplified comparison between the Processing Set structure in MSv4 and the Multi-MS structure in MSv2. Blocks with the same color indicate similar information content. Blocks in between parenthesis are optional in their respective schemas.\n", "\n", "\n", "
\n", "
\n", " \"fig1_ps_vs_mms\"\n",\n", "
Figure 1: Schema layouts of the Processing Set (collection of MSv4s) and the \n", " Multi Measurement Set (MSv2).\n", "
\n", "
\n", "
\n" ] }, { "cell_type": "markdown", "id": "59444183", "metadata": {}, "source": [ "### Access Pattern Cheat Sheet\n", "\n", "```python\n", "import xarray as xr\n", "import xradio # Enables accessors\n", "from xradio.measurement_set import open_processing_set\n", "\n", "# Open a processing set data tree\n", "ps_xdt = open_processing_set(\"my_ps.ps.zarr\") # or xr.open_datatree(\"...\")\n", "\n", "# Access an individual Measurement Set data tree of the processing set\n", "msv4_name = \"my_msv4\"\n", "ms_xdt = ps_xdt[msv4_name]\n", "\n", "# Access the correlated dataset and antenna dataset\n", "cor_xds = ms_xdt.ds\n", "antenna_xds = ms_xdt.antenna_xds.ds\n", "```\n", "\n", "Available accessors:\n", "\n", "- ps_xdt.xr_ps (as processing set accessor)\n", "\n", " - summary # returns a data frame \n", "\n", " - get_max_dims\n", "\n", " - get_freq_axis\n", "\n", " - sel # based on summary data frame\n", "\n", " - get_combined_field_and_source_xds\n", "\n", " - plot_phase_centers \n", "\n", " - get_combined_antenna_xds\n", "\n", " - plot_antenna_positions \n", "\n", " - ...\n", "\n", "- ms_xdt.xr_ms (as measurement set accesor)\n", "\n", " - sel # allows for data group selection\n", "\n", " - get_field_and_source_xds\n", "\n", " - get_partition_info\n", "\n", "All these accessors will be used during the tutorial. Figure 2 gives an schematic overview of the PS and MS data trees.\n", "\n", "\n", "
\n", "
\n", " \"fig2_ps_ms_datatree\"\n",\n", "
Figure 2: overview of the PS and MS data trees\n", "
\n", "
\n", "
\n" ] }, { "cell_type": "markdown", "id": "dc536ba0-5317-4ef1-b3be-1b92a50be58e", "metadata": {}, "source": [ "## Preparation" ] }, { "cell_type": "markdown", "id": "604007db-1708-487d-99b5-bff82bf3d28b", "metadata": {}, "source": [ "### Import XRADIO" ] }, { "cell_type": "code", "execution_count": 1, "id": "b83acc82-3f3d-4c92-aa5d-f25bb01ff8f7", "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: xradio in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (1.1.3)\n", "Requirement already satisfied: xarray in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (from xradio) (2026.4.0)\n", "Requirement already satisfied: numpy>=1.26 in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (from xarray->xradio) (2.4.3)\n", "Requirement already satisfied: packaging>=24.2 in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (from xarray->xradio) (26.1)\n", "Requirement already satisfied: pandas>=2.2 in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (from xarray->xradio) (3.0.2)\n", "Requirement already satisfied: python-dateutil>=2.8.2 in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (from pandas>=2.2->xarray->xradio) (2.9.0.post0)\n", "Requirement already satisfied: six>=1.5 in /Users/vdesouza/miniforge3/envs/xradio-dev/lib/python3.13/site-packages (from python-dateutil>=2.8.2->pandas>=2.2->xarray->xradio) (1.17.0)\n", "Using xradio version 1.1.3\n" ] } ], "source": [ "from importlib.metadata import version\n", "import os\n", "\n", "try:\n", " os.system(\"pip install --upgrade xradio\")\n", "\n", " import xradio\n", "\n", " print(\"Using xradio version\", version(\"xradio\"))\n", "\n", "except ImportError as exc:\n", " print(f\"Could not import xradio: {exc}\")" ] }, { "cell_type": "markdown", "id": "f1466b69-66a5-429b-a3d0-f19c7bdd3bfb", "metadata": {}, "source": [ "### Download example MSv2" ] }, { "cell_type": "code", "execution_count": 2, "id": "27022146-6bc9-47fd-be7d-b3dc71b1b7ca", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\u001b[38;2;128;05;128m2026-04-20 15:21:59,999\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:22:00,000\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/tutorials/Antennae_North.cal.lsrk.split.ms \n" ] } ], "source": [ "import toolviper\n", "\n", "toolviper.utils.data.download(file=\"Antennae_North.cal.lsrk.split.ms\")" ] }, { "cell_type": "markdown", "id": "1fda9e81-c44f-4fd3-a582-82580f3b3133", "metadata": {}, "source": [ "## Processing Set" ] }, { "cell_type": "markdown", "id": "63473e60-615c-4249-b40d-f6068790b47e", "metadata": {}, "source": [ "### Convert MSv2 to Processing Set Xarray Data Tree (ps_xdt)" ] }, { "cell_type": "markdown", "id": "d0576106-11d2-44bc-a588-d55b0357afa7", "metadata": {}, "source": [ "Before running the conversion function we can get an estimate of the resources that will be needed:" ] }, { "cell_type": "code", "execution_count": 3, "id": "85c49f92-da66-4ad5-8c85-d3a75a5902ff", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,281\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" ] }, { "data": { "text/plain": [ "(0.010820237919688225, 4, 1)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from xradio.measurement_set import estimate_conversion_memory_and_cores\n", "\n", "msv2_name = \"Antennae_North.cal.lsrk.split.ms\"\n", "mem_estimate, max_reasonable_cores, suggested_cores = estimate_conversion_memory_and_cores(msv2_name)\n", "mem_estimate, max_reasonable_cores, suggested_cores" ] }, { "cell_type": "markdown", "id": "6eba83b6-5d53-46d7-8e84-bf94759fb60e", "metadata": {}, "source": [ "The function used to estimate resources gives:\n", "- an estimate of memory required in GiB,\n", "- a maximum \"reasonable\" number of cores to use when converting in parallel, which is the number of partitions or MSv4s in the output processing set,\n", "- and a suggested number of cores to use, as a rule of thumb the maximum / 4.\n", "\n", "If we want to run the conversion in parallel, using Dask, we can initialize a \"VIPER\" client. In this example we use a local Dask client with the suggested number of cores = Dask workers:" ] }, { "cell_type": "code", "execution_count": 4, "id": "7febe111-0000-4c51-bb8c-33efe13fd934", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,314\u001b[0m] \u001b[38;2;255;160;0m WARNING\u001b[0m\u001b[38;2;112;128;144m client: \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;128m2026-04-20 15:22:00,856\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m Client \n" ] } ], "source": [ "do_parallel = True\n", "if do_parallel:\n", " from toolviper import dask\n", " viper_client = toolviper.dask.local_client(cores=suggested_cores)" ] }, { "cell_type": "markdown", "id": "e87e00a3-c04d-4e5c-a9f7-b5e2ad1c9b6b", "metadata": {}, "source": [ "Convert the example MeasurementSet v2 to Processing Set:" ] }, { "cell_type": "code", "execution_count": 5, "id": "fcd710fb-c2e0-4ff6-8e03-6c11673eec09", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,905\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m Updated partition scheme used: ['DATA_DESC_ID', 'OBS_MODE', 'OBSERVATION_ID'] \n", "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,906\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m Number of partitions: 4 \n", "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,907\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m OBSERVATION_ID [0], DDI [0], STATE [23, 24, 25, 30, 31, 32, 33, 34, 37], FIELD [0, 1, 2], SCAN [9, 17, 21, 25], EPHEMERIS [None] \n", "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,907\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m OBSERVATION_ID [1], DDI [0], STATE [23, 24, 25, 30, 31, 32, 33, 34, 37], FIELD [0, 1, 2], SCAN [26, 34, 38, 42], EPHEMERIS [None] \n", "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,907\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m OBSERVATION_ID [2], DDI [0], STATE [32, 33, 34], FIELD [0, 1, 2], SCAN [43], EPHEMERIS [None] \n", "[\u001b[38;2;128;05;128m2026-04-20 15:22:00,908\u001b[0m] \u001b[38;2;50;50;205m INFO\u001b[0m\u001b[38;2;112;128;144m client: \u001b[0m OBSERVATION_ID [3], DDI [0], STATE [39, 40, 41, 46, 47, 48, 49, 50, 53], FIELD [0, 1, 2], SCAN [48, 56, 60, 64], EPHEMERIS [None] \n" ] } ], "source": [ "from xradio.measurement_set import convert_msv2_to_processing_set\n", "if do_parallel:\n", " parallel_mode = \"partition\"\n", "else:\n", " parallel_mode = \"none\"\n", "\n", "convert_out = \"Antennae_North.cal.lsrk.split.ps.zarr\"\n", "convert_msv2_to_processing_set(\n", " in_file=msv2_name,\n", " out_file=convert_out,\n", " persistence_mode='w',\n", " parallel_mode=parallel_mode,\n", ")" ] }, { "cell_type": "markdown", "id": "e69936df-63bd-4a49-adeb-8fba6bc572ff", "metadata": {}, "source": [ "### Processing Set Xarray Data Tree (ps_xdt)\n", "\n", "A `ps_xdt` (Processing Set DataTree) can be lazily opened using either [`xradio.measurement_set.open_processing_set`](https://casangi.github.io/xradio/api/xradio.measurement_set.html#xradio.measurement_set.open_processing_set) or [`xarray.open_datatree`](https://docs.xarray.dev/en/latest/generated/xarray.open_datatree.html). When lazily opened, none of the data variables within the datasets are immediately loaded into memory. Instead, they are represented by lazy Dask arrays. The `open_processing_set` function provided by `xradio.measurement_set` exists to support future storage formats that are not natively handled by xarray. For example, telescopes such as ALMA and the VLA produce data in the ASDM (Astronomical Science Data Model) format, which may require custom loading and conversion logic. By using `open_processing_set`, XRADIO ensures flexibility and extensibility for supporting complex and evolving data formats beyond the scope of standard xarray I/O. \n", "\n", "The Processing Set \"Antennae_North.cal.lsrk.split.ps.zarr\" consists of 12 Measurement Sets v4 (`ms_xdt`) which can be seen by clicking on the Groups dropdown arrow." ] }, { "cell_type": "code", "execution_count": 6, "id": "02d150f5-f513-4ab8-a2e2-9051d6c79d25", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataTree>\n",
       "Group: /\n",
       "│   Attributes:\n",
       "│       type:     processing_set\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0\n",
       "│   │   Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "│   │                                    polarization: 2, uvw_label: 3)\n",
       "│   │   Coordinates:\n",
       "│   │     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│   │       field_name                  (time) <U46 9kB dask.array<chunksize=(50,), meta=np.ndarray>\n",
       "│   │       scan_name                   (time) <U21 4kB dask.array<chunksize=(50,), meta=np.ndarray>\n",
       "│   │     * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "│   │       baseline_antenna1_name      (baseline_id) <U9 2kB dask.array<chunksize=(45,), meta=np.ndarray>\n",
       "│   │       baseline_antenna2_name      (baseline_id) <U9 2kB dask.array<chunksize=(45,), meta=np.ndarray>\n",
       "│   │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│   │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│   │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   │   Data variables:\n",
       "│   │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB dask.array<chunksize=(50, 45), meta=np.ndarray>\n",
       "│   │       FLAG                        (time, baseline_id, frequency, polarization) bool 36kB dask.array<chunksize=(50, 45, 8, 2), meta=np.ndarray>\n",
       "│   │       TIME_CENTROID               (time, baseline_id) float64 18kB dask.array<chunksize=(50, 45), meta=np.ndarray>\n",
       "│   │       UVW                         (time, baseline_id, uvw_label) float64 54kB dask.array<chunksize=(50, 45, 3), meta=np.ndarray>\n",
       "│   │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB dask.array<chunksize=(50, 45, 8, 2), meta=np.ndarray>\n",
       "│   │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB dask.array<chunksize=(50, 45, 8, 2), meta=np.ndarray>\n",
       "│   │   Attributes:\n",
       "│   │       creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "│   │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│   │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│   │       observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "│   │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│   │       schema_version:    4.0.0\n",
       "│   │       type:              visibility\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n",
       "│   │       Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "│   │                                    receptor_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "│   │           mount                   (antenna_name) <U6 240B dask.array<chunksize=(10,), meta=np.ndarray>\n",
       "│   │           station_name            (antenna_name) <U4 160B dask.array<chunksize=(10,), meta=np.ndarray>\n",
       "│   │           telescope_name          (antenna_name) <U4 160B dask.array<chunksize=(10,), 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 80B dask.array<chunksize=(10, 2), meta=np.ndarray>\n",
       "│   │       Data variables:\n",
       "│   │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B dask.array<chunksize=(10,), meta=np.ndarray>\n",
       "│   │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B dask.array<chunksize=(10, 3), meta=np.ndarray>\n",
       "│   │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B dask.array<chunksize=(10, 2), meta=np.ndarray>\n",
       "│   │       Attributes:\n",
       "│   │           overall_telescope_name:  ALMA\n",
       "│   │           relocatable_antennas:    True\n",
       "│   │           type:                    antenna\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n",
       "│   │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│   │           source_name                   (field_name) <U46 552B dask.array<chunksize=(3,), 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 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "│   │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "│   │       Attributes:\n",
       "│   │           type:     field_and_source\n",
       "│   └── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n",
       "│           Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                     cartesian_pos_label: 3)\n",
       "│           Coordinates:\n",
       "│             * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│             * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│             * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│           Data variables:\n",
       "│               DEW_POINT            (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               PRESSURE             (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               REL_HUMIDITY         (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               STATION_POSITION     (station_name, cartesian_pos_label) float64 48B dask.array<chunksize=(2, 3), meta=np.ndarray>\n",
       "│               TEMPERATURE          (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               WIND_DIRECTION       (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               WIND_SPEED           (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│           Attributes:\n",
       "│               type:     weather\n",
       "├── Group: /Antennae_North.cal.lsrk.split_1\n",
       "│   │   Dimensions:                     (time: 50, baseline_id: 55, frequency: 8,\n",
       "│   │                                    polarization: 2, uvw_label: 3)\n",
       "│   │   Coordinates:\n",
       "│   │     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│   │       field_name                  (time) <U46 9kB dask.array<chunksize=(50,), meta=np.ndarray>\n",
       "│   │       scan_name                   (time) <U21 4kB dask.array<chunksize=(50,), meta=np.ndarray>\n",
       "│   │     * baseline_id                 (baseline_id) int64 440B 0 1 2 3 ... 51 52 53 54\n",
       "│   │       baseline_antenna1_name      (baseline_id) <U9 2kB dask.array<chunksize=(55,), meta=np.ndarray>\n",
       "│   │       baseline_antenna2_name      (baseline_id) <U9 2kB dask.array<chunksize=(55,), meta=np.ndarray>\n",
       "│   │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│   │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│   │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   │   Data variables:\n",
       "│   │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 22kB dask.array<chunksize=(50, 55), meta=np.ndarray>\n",
       "│   │       FLAG                        (time, baseline_id, frequency, polarization) bool 44kB dask.array<chunksize=(50, 55, 8, 2), meta=np.ndarray>\n",
       "│   │       TIME_CENTROID               (time, baseline_id) float64 22kB dask.array<chunksize=(50, 55), meta=np.ndarray>\n",
       "│   │       UVW                         (time, baseline_id, uvw_label) float64 66kB dask.array<chunksize=(50, 55, 3), meta=np.ndarray>\n",
       "│   │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 352kB dask.array<chunksize=(50, 55, 8, 2), meta=np.ndarray>\n",
       "│   │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 176kB dask.array<chunksize=(50, 55, 8, 2), meta=np.ndarray>\n",
       "│   │   Attributes:\n",
       "│   │       creation_date:     2026-04-20T21:22:01.416058+00:00\n",
       "│   │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│   │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│   │       observation_info:  {'execution_block_UID': 'uid://A002/X207fe4/X3a', 'obs...\n",
       "│   │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│   │       schema_version:    4.0.0\n",
       "│   │       type:              visibility\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_1/antenna_xds\n",
       "│   │       Dimensions:                 (antenna_name: 11, cartesian_pos_label: 3,\n",
       "│   │                                    receptor_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * antenna_name            (antenna_name) <U9 396B 'DV02_A015' ... 'DV05_A067'\n",
       "│   │           mount                   (antenna_name) <U6 264B dask.array<chunksize=(11,), meta=np.ndarray>\n",
       "│   │           station_name            (antenna_name) <U4 176B dask.array<chunksize=(11,), meta=np.ndarray>\n",
       "│   │           telescope_name          (antenna_name) <U4 176B dask.array<chunksize=(11,), 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 88B dask.array<chunksize=(11, 2), meta=np.ndarray>\n",
       "│   │       Data variables:\n",
       "│   │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 88B dask.array<chunksize=(11,), meta=np.ndarray>\n",
       "│   │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 264B dask.array<chunksize=(11, 3), meta=np.ndarray>\n",
       "│   │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 176B dask.array<chunksize=(11, 2), meta=np.ndarray>\n",
       "│   │       Attributes:\n",
       "│   │           overall_telescope_name:  ALMA\n",
       "│   │           relocatable_antennas:    True\n",
       "│   │           type:                    antenna\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_1/field_and_source_base_xds\n",
       "│   │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│   │           source_name                   (field_name) <U46 552B dask.array<chunksize=(3,), 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 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "│   │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "│   │       Attributes:\n",
       "│   │           type:     field_and_source\n",
       "│   └── Group: /Antennae_North.cal.lsrk.split_1/weather_xds\n",
       "│           Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                     cartesian_pos_label: 3)\n",
       "│           Coordinates:\n",
       "│             * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│             * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│             * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│           Data variables:\n",
       "│               DEW_POINT            (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               PRESSURE             (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               REL_HUMIDITY         (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               STATION_POSITION     (station_name, cartesian_pos_label) float64 48B dask.array<chunksize=(2, 3), meta=np.ndarray>\n",
       "│               TEMPERATURE          (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               WIND_DIRECTION       (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               WIND_SPEED           (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│           Attributes:\n",
       "│               type:     weather\n",
       "├── Group: /Antennae_North.cal.lsrk.split_2\n",
       "│   │   Dimensions:                     (time: 15, baseline_id: 55, frequency: 8,\n",
       "│   │                                    polarization: 2, uvw_label: 3)\n",
       "│   │   Coordinates:\n",
       "│   │     * time                        (time) float64 120B 1.307e+09 ... 1.307e+09\n",
       "│   │       field_name                  (time) <U46 3kB dask.array<chunksize=(15,), meta=np.ndarray>\n",
       "│   │       scan_name                   (time) <U21 1kB dask.array<chunksize=(15,), meta=np.ndarray>\n",
       "│   │     * baseline_id                 (baseline_id) int64 440B 0 1 2 3 ... 51 52 53 54\n",
       "│   │       baseline_antenna1_name      (baseline_id) <U9 2kB dask.array<chunksize=(55,), meta=np.ndarray>\n",
       "│   │       baseline_antenna2_name      (baseline_id) <U9 2kB dask.array<chunksize=(55,), meta=np.ndarray>\n",
       "│   │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│   │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│   │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   │   Data variables:\n",
       "│   │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 7kB dask.array<chunksize=(15, 55), meta=np.ndarray>\n",
       "│   │       FLAG                        (time, baseline_id, frequency, polarization) bool 13kB dask.array<chunksize=(15, 55, 8, 2), meta=np.ndarray>\n",
       "│   │       TIME_CENTROID               (time, baseline_id) float64 7kB dask.array<chunksize=(15, 55), meta=np.ndarray>\n",
       "│   │       UVW                         (time, baseline_id, uvw_label) float64 20kB dask.array<chunksize=(15, 55, 3), meta=np.ndarray>\n",
       "│   │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 106kB dask.array<chunksize=(15, 55, 8, 2), meta=np.ndarray>\n",
       "│   │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 53kB dask.array<chunksize=(15, 55, 8, 2), meta=np.ndarray>\n",
       "│   │   Attributes:\n",
       "│   │       creation_date:     2026-04-20T21:22:01.188518+00:00\n",
       "│   │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│   │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│   │       observation_info:  {'execution_block_UID': 'uid://A002/X207fe4/X3b9', 'ob...\n",
       "│   │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│   │       schema_version:    4.0.0\n",
       "│   │       type:              visibility\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_2/antenna_xds\n",
       "│   │       Dimensions:                 (antenna_name: 11, cartesian_pos_label: 3,\n",
       "│   │                                    receptor_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * antenna_name            (antenna_name) <U9 396B 'DV02_A015' ... 'DV05_A067'\n",
       "│   │           mount                   (antenna_name) <U6 264B dask.array<chunksize=(11,), meta=np.ndarray>\n",
       "│   │           station_name            (antenna_name) <U4 176B dask.array<chunksize=(11,), meta=np.ndarray>\n",
       "│   │           telescope_name          (antenna_name) <U4 176B dask.array<chunksize=(11,), 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 88B dask.array<chunksize=(11, 2), meta=np.ndarray>\n",
       "│   │       Data variables:\n",
       "│   │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 88B dask.array<chunksize=(11,), meta=np.ndarray>\n",
       "│   │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 264B dask.array<chunksize=(11, 3), meta=np.ndarray>\n",
       "│   │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 176B dask.array<chunksize=(11, 2), meta=np.ndarray>\n",
       "│   │       Attributes:\n",
       "│   │           overall_telescope_name:  ALMA\n",
       "│   │           relocatable_antennas:    True\n",
       "│   │           type:                    antenna\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_2/field_and_source_base_xds\n",
       "│   │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│   │           source_name                   (field_name) <U46 552B dask.array<chunksize=(3,), 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 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "│   │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "│   │       Attributes:\n",
       "│   │           type:     field_and_source\n",
       "│   └── Group: /Antennae_North.cal.lsrk.split_2/weather_xds\n",
       "│           Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                     cartesian_pos_label: 3)\n",
       "│           Coordinates:\n",
       "│             * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│             * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│             * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│           Data variables:\n",
       "│               DEW_POINT            (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               PRESSURE             (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               REL_HUMIDITY         (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               STATION_POSITION     (station_name, cartesian_pos_label) float64 48B dask.array<chunksize=(2, 3), meta=np.ndarray>\n",
       "│               TEMPERATURE          (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               WIND_DIRECTION       (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│               WIND_SPEED           (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "│           Attributes:\n",
       "│               type:     weather\n",
       "└── Group: /Antennae_North.cal.lsrk.split_3\n",
       "    │   Dimensions:                     (time: 50, baseline_id: 77, frequency: 8,\n",
       "    │                                    polarization: 2, uvw_label: 3)\n",
       "    │   Coordinates:\n",
       "    │     * time                        (time) float64 400B 1.308e+09 ... 1.308e+09\n",
       "    │       field_name                  (time) <U46 9kB dask.array<chunksize=(50,), meta=np.ndarray>\n",
       "    │       scan_name                   (time) <U21 4kB dask.array<chunksize=(50,), meta=np.ndarray>\n",
       "    │     * baseline_id                 (baseline_id) int64 616B 0 1 2 3 ... 73 74 75 76\n",
       "    │       baseline_antenna1_name      (baseline_id) <U9 3kB dask.array<chunksize=(77,), meta=np.ndarray>\n",
       "    │       baseline_antenna2_name      (baseline_id) <U9 3kB dask.array<chunksize=(77,), meta=np.ndarray>\n",
       "    │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "    │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "    │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "    │   Data variables:\n",
       "    │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 31kB dask.array<chunksize=(50, 77), meta=np.ndarray>\n",
       "    │       FLAG                        (time, baseline_id, frequency, polarization) bool 62kB dask.array<chunksize=(50, 77, 8, 2), meta=np.ndarray>\n",
       "    │       TIME_CENTROID               (time, baseline_id) float64 31kB dask.array<chunksize=(50, 77), meta=np.ndarray>\n",
       "    │       UVW                         (time, baseline_id, uvw_label) float64 92kB dask.array<chunksize=(50, 77, 3), meta=np.ndarray>\n",
       "    │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 493kB dask.array<chunksize=(50, 77, 8, 2), meta=np.ndarray>\n",
       "    │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 246kB dask.array<chunksize=(50, 77, 8, 2), meta=np.ndarray>\n",
       "    │   Attributes:\n",
       "    │       creation_date:     2026-04-20T21:22:01.307587+00:00\n",
       "    │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "    │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "    │       observation_info:  {'execution_block_UID': 'uid://A002/X2181fb/X49', 'obs...\n",
       "    │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "    │       schema_version:    4.0.0\n",
       "    │       type:              visibility\n",
       "    ├── Group: /Antennae_North.cal.lsrk.split_3/antenna_xds\n",
       "    │       Dimensions:                 (antenna_name: 13, cartesian_pos_label: 3,\n",
       "    │                                    receptor_label: 2)\n",
       "    │       Coordinates:\n",
       "    │         * antenna_name            (antenna_name) <U9 468B 'DV02_A015' ... 'DV13_A075'\n",
       "    │           mount                   (antenna_name) <U6 312B dask.array<chunksize=(13,), meta=np.ndarray>\n",
       "    │           station_name            (antenna_name) <U4 208B dask.array<chunksize=(13,), meta=np.ndarray>\n",
       "    │           telescope_name          (antenna_name) <U4 208B dask.array<chunksize=(13,), 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 104B dask.array<chunksize=(13, 2), meta=np.ndarray>\n",
       "    │       Data variables:\n",
       "    │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 104B dask.array<chunksize=(13,), meta=np.ndarray>\n",
       "    │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 312B dask.array<chunksize=(13, 3), meta=np.ndarray>\n",
       "    │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 208B dask.array<chunksize=(13, 2), meta=np.ndarray>\n",
       "    │       Attributes:\n",
       "    │           overall_telescope_name:  ALMA\n",
       "    │           relocatable_antennas:    True\n",
       "    │           type:                    antenna\n",
       "    ├── Group: /Antennae_North.cal.lsrk.split_3/field_and_source_base_xds\n",
       "    │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "    │       Coordinates:\n",
       "    │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "    │           source_name                   (field_name) <U46 552B dask.array<chunksize=(3,), 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 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "    │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B dask.array<chunksize=(3, 2), meta=np.ndarray>\n",
       "    │       Attributes:\n",
       "    │           type:     field_and_source\n",
       "    └── Group: /Antennae_North.cal.lsrk.split_3/weather_xds\n",
       "            Dimensions:              (station_name: 2, time_weather: 259,\n",
       "                                      cartesian_pos_label: 3)\n",
       "            Coordinates:\n",
       "              * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "              * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "              * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "            Data variables:\n",
       "                DEW_POINT            (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "                PRESSURE             (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "                REL_HUMIDITY         (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "                STATION_POSITION     (station_name, cartesian_pos_label) float64 48B dask.array<chunksize=(2, 3), meta=np.ndarray>\n",
       "                TEMPERATURE          (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "                WIND_DIRECTION       (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "                WIND_SPEED           (station_name, time_weather) float64 4kB dask.array<chunksize=(2, 259), meta=np.ndarray>\n",
       "            Attributes:\n",
       "                type:     weather
" ], "text/plain": [ "\n", "Group: /\n", "│ Attributes:\n", "│ type: processing_set\n", "├── Group: /Antennae_North.cal.lsrk.split_0\n", "│ │ Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", "│ │ polarization: 2, uvw_label: 3)\n", "│ │ Coordinates:\n", "│ │ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ │ field_name (time) \n", "│ │ scan_name (time) \n", "│ │ * baseline_id (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n", "│ │ baseline_antenna1_name (baseline_id) \n", "│ │ baseline_antenna2_name (baseline_id) \n", "│ │ * frequency (frequency) float64 64B 3.439e+11 ... 3.44e+11\n", "│ │ * polarization (polarization) \n", "│ │ FLAG (time, baseline_id, frequency, polarization) bool 36kB dask.array\n", "│ │ TIME_CENTROID (time, baseline_id) float64 18kB dask.array\n", "│ │ UVW (time, baseline_id, uvw_label) float64 54kB dask.array\n", "│ │ VISIBILITY (time, baseline_id, frequency, polarization) complex64 288kB dask.array\n", "│ │ WEIGHT (time, baseline_id, frequency, polarization) float32 144kB dask.array\n", "│ │ Attributes:\n", "│ │ creation_date: 2026-04-20T21:22:01.520254+00:00\n", "│ │ creator: {'software_name': 'xradio', 'version': '1.1.3'}\n", "│ │ data_groups: {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n", "│ │ observation_info: {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n", "│ │ processor_info: {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n", "│ │ schema_version: 4.0.0\n", "│ │ type: visibility\n", "│ ├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n", "│ │ Dimensions: (antenna_name: 10, cartesian_pos_label: 3,\n", "│ │ receptor_label: 2)\n", "│ │ Coordinates:\n", "│ │ * antenna_name (antenna_name) \n", "│ │ station_name (antenna_name) \n", "│ │ telescope_name (antenna_name) \n", "│ │ * cartesian_pos_label (cartesian_pos_label) \n", "│ │ Data variables:\n", "│ │ ANTENNA_DISH_DIAMETER (antenna_name) float64 80B dask.array\n", "│ │ ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 240B dask.array\n", "│ │ ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 160B dask.array\n", "│ │ Attributes:\n", "│ │ overall_telescope_name: ALMA\n", "│ │ relocatable_antennas: True\n", "│ │ type: antenna\n", "│ ├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n", "│ │ Dimensions: (field_name: 3, sky_dir_label: 2)\n", "│ │ Coordinates:\n", "│ │ * field_name (field_name) \n", "│ │ * sky_dir_label (sky_dir_label) \n", "│ │ SOURCE_DIRECTION (field_name, sky_dir_label) float64 48B dask.array\n", "│ │ Attributes:\n", "│ │ type: field_and_source\n", "│ └── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n", "│ Dimensions: (station_name: 2, time_weather: 259,\n", "│ cartesian_pos_label: 3)\n", "│ Coordinates:\n", "│ * station_name (station_name) \n", "│ PRESSURE (station_name, time_weather) float64 4kB dask.array\n", "│ REL_HUMIDITY (station_name, time_weather) float64 4kB dask.array\n", "│ STATION_POSITION (station_name, cartesian_pos_label) float64 48B dask.array\n", "│ TEMPERATURE (station_name, time_weather) float64 4kB dask.array\n", "│ WIND_DIRECTION (station_name, time_weather) float64 4kB dask.array\n", "│ WIND_SPEED (station_name, time_weather) float64 4kB dask.array\n", "│ Attributes:\n", "│ type: weather\n", "├── Group: /Antennae_North.cal.lsrk.split_1\n", "│ │ Dimensions: (time: 50, baseline_id: 55, frequency: 8,\n", "│ │ polarization: 2, uvw_label: 3)\n", "│ │ Coordinates:\n", "│ │ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ │ field_name (time) \n", "│ │ scan_name (time) \n", "│ │ * baseline_id (baseline_id) int64 440B 0 1 2 3 ... 51 52 53 54\n", "│ │ baseline_antenna1_name (baseline_id) \n", "│ │ baseline_antenna2_name (baseline_id) \n", "│ │ * frequency (frequency) float64 64B 3.439e+11 ... 3.44e+11\n", "│ │ * polarization (polarization) \n", "│ │ FLAG (time, baseline_id, frequency, polarization) bool 44kB dask.array\n", "│ │ TIME_CENTROID (time, baseline_id) float64 22kB dask.array\n", "│ │ UVW (time, baseline_id, uvw_label) float64 66kB dask.array\n", "│ │ VISIBILITY (time, baseline_id, frequency, polarization) complex64 352kB dask.array\n", "│ │ WEIGHT (time, baseline_id, frequency, polarization) float32 176kB dask.array\n", "│ │ Attributes:\n", "│ │ creation_date: 2026-04-20T21:22:01.416058+00:00\n", "│ │ creator: {'software_name': 'xradio', 'version': '1.1.3'}\n", "│ │ data_groups: {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n", "│ │ observation_info: {'execution_block_UID': 'uid://A002/X207fe4/X3a', 'obs...\n", "│ │ processor_info: {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n", "│ │ schema_version: 4.0.0\n", "│ │ type: visibility\n", "│ ├── Group: /Antennae_North.cal.lsrk.split_1/antenna_xds\n", "│ │ Dimensions: (antenna_name: 11, cartesian_pos_label: 3,\n", "│ │ receptor_label: 2)\n", "│ │ Coordinates:\n", "│ │ * antenna_name (antenna_name) \n", "│ │ station_name (antenna_name) \n", "│ │ telescope_name (antenna_name) \n", "│ │ * cartesian_pos_label (cartesian_pos_label) \n", "│ │ Data variables:\n", "│ │ ANTENNA_DISH_DIAMETER (antenna_name) float64 88B dask.array\n", "│ │ ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 264B dask.array\n", "│ │ ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 176B dask.array\n", "│ │ Attributes:\n", "│ │ overall_telescope_name: ALMA\n", "│ │ relocatable_antennas: True\n", "│ │ type: antenna\n", "│ ├── Group: /Antennae_North.cal.lsrk.split_1/field_and_source_base_xds\n", "│ │ Dimensions: (field_name: 3, sky_dir_label: 2)\n", "│ │ Coordinates:\n", "│ │ * field_name (field_name) \n", "│ │ * sky_dir_label (sky_dir_label) \n", "│ │ SOURCE_DIRECTION (field_name, sky_dir_label) float64 48B dask.array\n", "│ │ Attributes:\n", "│ │ type: field_and_source\n", "│ └── Group: /Antennae_North.cal.lsrk.split_1/weather_xds\n", "│ Dimensions: (station_name: 2, time_weather: 259,\n", "│ cartesian_pos_label: 3)\n", "│ Coordinates:\n", "│ * station_name (station_name) \n", "│ PRESSURE (station_name, time_weather) float64 4kB dask.array\n", "│ REL_HUMIDITY (station_name, time_weather) float64 4kB dask.array\n", "│ STATION_POSITION (station_name, cartesian_pos_label) float64 48B dask.array\n", "│ TEMPERATURE (station_name, time_weather) float64 4kB dask.array\n", "│ WIND_DIRECTION (station_name, time_weather) float64 4kB dask.array\n", "│ WIND_SPEED (station_name, time_weather) float64 4kB dask.array\n", "│ Attributes:\n", "│ type: weather\n", "├── Group: /Antennae_North.cal.lsrk.split_2\n", "│ │ Dimensions: (time: 15, baseline_id: 55, frequency: 8,\n", "│ │ polarization: 2, uvw_label: 3)\n", "│ │ Coordinates:\n", "│ │ * time (time) float64 120B 1.307e+09 ... 1.307e+09\n", "│ │ field_name (time) \n", "│ │ scan_name (time) \n", "│ │ * baseline_id (baseline_id) int64 440B 0 1 2 3 ... 51 52 53 54\n", "│ │ baseline_antenna1_name (baseline_id) \n", "│ │ baseline_antenna2_name (baseline_id) \n", "│ │ * frequency (frequency) float64 64B 3.439e+11 ... 3.44e+11\n", "│ │ * polarization (polarization) \n", "│ │ FLAG (time, baseline_id, frequency, polarization) bool 13kB dask.array\n", "│ │ TIME_CENTROID (time, baseline_id) float64 7kB dask.array\n", "│ │ UVW (time, baseline_id, uvw_label) float64 20kB dask.array\n", "│ │ VISIBILITY (time, baseline_id, frequency, polarization) complex64 106kB dask.array\n", "│ │ WEIGHT (time, baseline_id, frequency, polarization) float32 53kB dask.array\n", "│ │ Attributes:\n", "│ │ creation_date: 2026-04-20T21:22:01.188518+00:00\n", "│ │ creator: {'software_name': 'xradio', 'version': '1.1.3'}\n", "│ │ data_groups: {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n", "│ │ observation_info: {'execution_block_UID': 'uid://A002/X207fe4/X3b9', 'ob...\n", "│ │ processor_info: {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n", "│ │ schema_version: 4.0.0\n", "│ │ type: visibility\n", "│ ├── Group: /Antennae_North.cal.lsrk.split_2/antenna_xds\n", "│ │ Dimensions: (antenna_name: 11, cartesian_pos_label: 3,\n", "│ │ receptor_label: 2)\n", "│ │ Coordinates:\n", "│ │ * antenna_name (antenna_name) \n", "│ │ station_name (antenna_name) \n", "│ │ telescope_name (antenna_name) \n", "│ │ * cartesian_pos_label (cartesian_pos_label) \n", "│ │ Data variables:\n", "│ │ ANTENNA_DISH_DIAMETER (antenna_name) float64 88B dask.array\n", "│ │ ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 264B dask.array\n", "│ │ ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 176B dask.array\n", "│ │ Attributes:\n", "│ │ overall_telescope_name: ALMA\n", "│ │ relocatable_antennas: True\n", "│ │ type: antenna\n", "│ ├── Group: /Antennae_North.cal.lsrk.split_2/field_and_source_base_xds\n", "│ │ Dimensions: (field_name: 3, sky_dir_label: 2)\n", "│ │ Coordinates:\n", "│ │ * field_name (field_name) \n", "│ │ * sky_dir_label (sky_dir_label) \n", "│ │ SOURCE_DIRECTION (field_name, sky_dir_label) float64 48B dask.array\n", "│ │ Attributes:\n", "│ │ type: field_and_source\n", "│ └── Group: /Antennae_North.cal.lsrk.split_2/weather_xds\n", "│ Dimensions: (station_name: 2, time_weather: 259,\n", "│ cartesian_pos_label: 3)\n", "│ Coordinates:\n", "│ * station_name (station_name) \n", "│ PRESSURE (station_name, time_weather) float64 4kB dask.array\n", "│ REL_HUMIDITY (station_name, time_weather) float64 4kB dask.array\n", "│ STATION_POSITION (station_name, cartesian_pos_label) float64 48B dask.array\n", "│ TEMPERATURE (station_name, time_weather) float64 4kB dask.array\n", "│ WIND_DIRECTION (station_name, time_weather) float64 4kB dask.array\n", "│ WIND_SPEED (station_name, time_weather) float64 4kB dask.array\n", "│ Attributes:\n", "│ type: weather\n", "└── Group: /Antennae_North.cal.lsrk.split_3\n", " │ Dimensions: (time: 50, baseline_id: 77, frequency: 8,\n", " │ polarization: 2, uvw_label: 3)\n", " │ Coordinates:\n", " │ * time (time) float64 400B 1.308e+09 ... 1.308e+09\n", " │ field_name (time) \n", " │ scan_name (time) \n", " │ * baseline_id (baseline_id) int64 616B 0 1 2 3 ... 73 74 75 76\n", " │ baseline_antenna1_name (baseline_id) \n", " │ baseline_antenna2_name (baseline_id) \n", " │ * frequency (frequency) float64 64B 3.439e+11 ... 3.44e+11\n", " │ * polarization (polarization) \n", " │ FLAG (time, baseline_id, frequency, polarization) bool 62kB dask.array\n", " │ TIME_CENTROID (time, baseline_id) float64 31kB dask.array\n", " │ UVW (time, baseline_id, uvw_label) float64 92kB dask.array\n", " │ VISIBILITY (time, baseline_id, frequency, polarization) complex64 493kB dask.array\n", " │ WEIGHT (time, baseline_id, frequency, polarization) float32 246kB dask.array\n", " │ Attributes:\n", " │ creation_date: 2026-04-20T21:22:01.307587+00:00\n", " │ creator: {'software_name': 'xradio', 'version': '1.1.3'}\n", " │ data_groups: {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n", " │ observation_info: {'execution_block_UID': 'uid://A002/X2181fb/X49', 'obs...\n", " │ processor_info: {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n", " │ schema_version: 4.0.0\n", " │ type: visibility\n", " ├── Group: /Antennae_North.cal.lsrk.split_3/antenna_xds\n", " │ Dimensions: (antenna_name: 13, cartesian_pos_label: 3,\n", " │ receptor_label: 2)\n", " │ Coordinates:\n", " │ * antenna_name (antenna_name) \n", " │ station_name (antenna_name) \n", " │ telescope_name (antenna_name) \n", " │ * cartesian_pos_label (cartesian_pos_label) \n", " │ Data variables:\n", " │ ANTENNA_DISH_DIAMETER (antenna_name) float64 104B dask.array\n", " │ ANTENNA_POSITION (antenna_name, cartesian_pos_label) float64 312B dask.array\n", " │ ANTENNA_RECEPTOR_ANGLE (antenna_name, receptor_label) float64 208B dask.array\n", " │ Attributes:\n", " │ overall_telescope_name: ALMA\n", " │ relocatable_antennas: True\n", " │ type: antenna\n", " ├── Group: /Antennae_North.cal.lsrk.split_3/field_and_source_base_xds\n", " │ Dimensions: (field_name: 3, sky_dir_label: 2)\n", " │ Coordinates:\n", " │ * field_name (field_name) \n", " │ * sky_dir_label (sky_dir_label) \n", " │ SOURCE_DIRECTION (field_name, sky_dir_label) float64 48B dask.array\n", " │ Attributes:\n", " │ type: field_and_source\n", " └── Group: /Antennae_North.cal.lsrk.split_3/weather_xds\n", " Dimensions: (station_name: 2, time_weather: 259,\n", " cartesian_pos_label: 3)\n", " Coordinates:\n", " * station_name (station_name) \n", " PRESSURE (station_name, time_weather) float64 4kB dask.array\n", " REL_HUMIDITY (station_name, time_weather) float64 4kB dask.array\n", " STATION_POSITION (station_name, cartesian_pos_label) float64 48B dask.array\n", " TEMPERATURE (station_name, time_weather) float64 4kB dask.array\n", " WIND_DIRECTION (station_name, time_weather) float64 4kB dask.array\n", " WIND_SPEED (station_name, time_weather) float64 4kB dask.array\n", " Attributes:\n", " type: weather" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from xradio.measurement_set import open_processing_set\n", "convert_out = \"Antennae_North.cal.lsrk.split.ps.zarr\"\n", "\n", "ps_xdt = open_processing_set(convert_out)\n", "ps_xdt" ] }, { "cell_type": "code", "execution_count": 7, "id": "c218a7d8", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataTree>\n",
       "Group: /\n",
       "│   Attributes:\n",
       "│       type:     processing_set\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0\n",
       "│   │   Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "│   │                                    polarization: 2, uvw_label: 3)\n",
       "│   │   Coordinates:\n",
       "│   │     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│   │       field_name                  (time) <U46 9kB ...\n",
       "│   │       scan_name                   (time) <U21 4kB ...\n",
       "│   │     * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "│   │       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│   │       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│   │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│   │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│   │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   │   Data variables:\n",
       "│   │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "│   │       FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "│   │       TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "│   │       UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "│   │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "│   │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "│   │   Attributes:\n",
       "│   │       creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "│   │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│   │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│   │       observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "│   │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│   │       schema_version:    4.0.0\n",
       "│   │       type:              visibility\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n",
       "│   │       Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "│   │                                    receptor_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "│   │           mount                   (antenna_name) <U6 240B ...\n",
       "│   │           station_name            (antenna_name) <U4 160B ...\n",
       "│   │           telescope_name          (antenna_name) <U4 160B ...\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 80B ...\n",
       "│   │       Data variables:\n",
       "│   │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B ...\n",
       "│   │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B ...\n",
       "│   │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B ...\n",
       "│   │       Attributes:\n",
       "│   │           overall_telescope_name:  ALMA\n",
       "│   │           relocatable_antennas:    True\n",
       "│   │           type:                    antenna\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n",
       "│   │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│   │           source_name                   (field_name) <U46 552B ...\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 48B ...\n",
       "│   │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B ...\n",
       "│   │       Attributes:\n",
       "│   │           type:     field_and_source\n",
       "│   └── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n",
       "│           Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                     cartesian_pos_label: 3)\n",
       "│           Coordinates:\n",
       "│             * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│             * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│             * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│           Data variables:\n",
       "│               DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "│               PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "│               REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "│               STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "│               TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "│               WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "│               WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "│           Attributes:\n",
       "│               type:     weather\n",
       "├── Group: /Antennae_North.cal.lsrk.split_1\n",
       "│   │   Dimensions:                     (time: 50, baseline_id: 55, frequency: 8,\n",
       "│   │                                    polarization: 2, uvw_label: 3)\n",
       "│   │   Coordinates:\n",
       "│   │     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│   │       field_name                  (time) <U46 9kB ...\n",
       "│   │       scan_name                   (time) <U21 4kB ...\n",
       "│   │     * baseline_id                 (baseline_id) int64 440B 0 1 2 3 ... 51 52 53 54\n",
       "│   │       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│   │       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│   │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│   │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│   │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   │   Data variables:\n",
       "│   │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 22kB ...\n",
       "│   │       FLAG                        (time, baseline_id, frequency, polarization) bool 44kB ...\n",
       "│   │       TIME_CENTROID               (time, baseline_id) float64 22kB ...\n",
       "│   │       UVW                         (time, baseline_id, uvw_label) float64 66kB ...\n",
       "│   │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 352kB ...\n",
       "│   │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 176kB ...\n",
       "│   │   Attributes:\n",
       "│   │       creation_date:     2026-04-20T21:22:01.416058+00:00\n",
       "│   │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│   │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│   │       observation_info:  {'execution_block_UID': 'uid://A002/X207fe4/X3a', 'obs...\n",
       "│   │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│   │       schema_version:    4.0.0\n",
       "│   │       type:              visibility\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_1/antenna_xds\n",
       "│   │       Dimensions:                 (antenna_name: 11, cartesian_pos_label: 3,\n",
       "│   │                                    receptor_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * antenna_name            (antenna_name) <U9 396B 'DV02_A015' ... 'DV05_A067'\n",
       "│   │           mount                   (antenna_name) <U6 264B ...\n",
       "│   │           station_name            (antenna_name) <U4 176B ...\n",
       "│   │           telescope_name          (antenna_name) <U4 176B ...\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 88B ...\n",
       "│   │       Data variables:\n",
       "│   │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 88B ...\n",
       "│   │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 264B ...\n",
       "│   │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 176B ...\n",
       "│   │       Attributes:\n",
       "│   │           overall_telescope_name:  ALMA\n",
       "│   │           relocatable_antennas:    True\n",
       "│   │           type:                    antenna\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_1/field_and_source_base_xds\n",
       "│   │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│   │           source_name                   (field_name) <U46 552B ...\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 48B ...\n",
       "│   │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B ...\n",
       "│   │       Attributes:\n",
       "│   │           type:     field_and_source\n",
       "│   └── Group: /Antennae_North.cal.lsrk.split_1/weather_xds\n",
       "│           Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                     cartesian_pos_label: 3)\n",
       "│           Coordinates:\n",
       "│             * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│             * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│             * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│           Data variables:\n",
       "│               DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "│               PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "│               REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "│               STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "│               TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "│               WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "│               WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "│           Attributes:\n",
       "│               type:     weather\n",
       "├── Group: /Antennae_North.cal.lsrk.split_2\n",
       "│   │   Dimensions:                     (time: 15, baseline_id: 55, frequency: 8,\n",
       "│   │                                    polarization: 2, uvw_label: 3)\n",
       "│   │   Coordinates:\n",
       "│   │     * time                        (time) float64 120B 1.307e+09 ... 1.307e+09\n",
       "│   │       field_name                  (time) <U46 3kB ...\n",
       "│   │       scan_name                   (time) <U21 1kB ...\n",
       "│   │     * baseline_id                 (baseline_id) int64 440B 0 1 2 3 ... 51 52 53 54\n",
       "│   │       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│   │       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│   │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│   │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│   │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   │   Data variables:\n",
       "│   │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 7kB ...\n",
       "│   │       FLAG                        (time, baseline_id, frequency, polarization) bool 13kB ...\n",
       "│   │       TIME_CENTROID               (time, baseline_id) float64 7kB ...\n",
       "│   │       UVW                         (time, baseline_id, uvw_label) float64 20kB ...\n",
       "│   │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 106kB ...\n",
       "│   │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 53kB ...\n",
       "│   │   Attributes:\n",
       "│   │       creation_date:     2026-04-20T21:22:01.188518+00:00\n",
       "│   │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│   │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│   │       observation_info:  {'execution_block_UID': 'uid://A002/X207fe4/X3b9', 'ob...\n",
       "│   │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│   │       schema_version:    4.0.0\n",
       "│   │       type:              visibility\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_2/antenna_xds\n",
       "│   │       Dimensions:                 (antenna_name: 11, cartesian_pos_label: 3,\n",
       "│   │                                    receptor_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * antenna_name            (antenna_name) <U9 396B 'DV02_A015' ... 'DV05_A067'\n",
       "│   │           mount                   (antenna_name) <U6 264B ...\n",
       "│   │           station_name            (antenna_name) <U4 176B ...\n",
       "│   │           telescope_name          (antenna_name) <U4 176B ...\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 88B ...\n",
       "│   │       Data variables:\n",
       "│   │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 88B ...\n",
       "│   │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 264B ...\n",
       "│   │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 176B ...\n",
       "│   │       Attributes:\n",
       "│   │           overall_telescope_name:  ALMA\n",
       "│   │           relocatable_antennas:    True\n",
       "│   │           type:                    antenna\n",
       "│   ├── Group: /Antennae_North.cal.lsrk.split_2/field_and_source_base_xds\n",
       "│   │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│   │       Coordinates:\n",
       "│   │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│   │           source_name                   (field_name) <U46 552B ...\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 48B ...\n",
       "│   │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B ...\n",
       "│   │       Attributes:\n",
       "│   │           type:     field_and_source\n",
       "│   └── Group: /Antennae_North.cal.lsrk.split_2/weather_xds\n",
       "│           Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                     cartesian_pos_label: 3)\n",
       "│           Coordinates:\n",
       "│             * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│             * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│             * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│           Data variables:\n",
       "│               DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "│               PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "│               REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "│               STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "│               TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "│               WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "│               WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "│           Attributes:\n",
       "│               type:     weather\n",
       "└── Group: /Antennae_North.cal.lsrk.split_3\n",
       "    │   Dimensions:                     (time: 50, baseline_id: 77, frequency: 8,\n",
       "    │                                    polarization: 2, uvw_label: 3)\n",
       "    │   Coordinates:\n",
       "    │     * time                        (time) float64 400B 1.308e+09 ... 1.308e+09\n",
       "    │       field_name                  (time) <U46 9kB ...\n",
       "    │       scan_name                   (time) <U21 4kB ...\n",
       "    │     * baseline_id                 (baseline_id) int64 616B 0 1 2 3 ... 73 74 75 76\n",
       "    │       baseline_antenna1_name      (baseline_id) <U9 3kB ...\n",
       "    │       baseline_antenna2_name      (baseline_id) <U9 3kB ...\n",
       "    │     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "    │     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "    │     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "    │   Data variables:\n",
       "    │       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 31kB ...\n",
       "    │       FLAG                        (time, baseline_id, frequency, polarization) bool 62kB ...\n",
       "    │       TIME_CENTROID               (time, baseline_id) float64 31kB ...\n",
       "    │       UVW                         (time, baseline_id, uvw_label) float64 92kB ...\n",
       "    │       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 493kB ...\n",
       "    │       WEIGHT                      (time, baseline_id, frequency, polarization) float32 246kB ...\n",
       "    │   Attributes:\n",
       "    │       creation_date:     2026-04-20T21:22:01.307587+00:00\n",
       "    │       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "    │       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "    │       observation_info:  {'execution_block_UID': 'uid://A002/X2181fb/X49', 'obs...\n",
       "    │       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "    │       schema_version:    4.0.0\n",
       "    │       type:              visibility\n",
       "    ├── Group: /Antennae_North.cal.lsrk.split_3/antenna_xds\n",
       "    │       Dimensions:                 (antenna_name: 13, cartesian_pos_label: 3,\n",
       "    │                                    receptor_label: 2)\n",
       "    │       Coordinates:\n",
       "    │         * antenna_name            (antenna_name) <U9 468B 'DV02_A015' ... 'DV13_A075'\n",
       "    │           mount                   (antenna_name) <U6 312B ...\n",
       "    │           station_name            (antenna_name) <U4 208B ...\n",
       "    │           telescope_name          (antenna_name) <U4 208B ...\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 104B ...\n",
       "    │       Data variables:\n",
       "    │           ANTENNA_DISH_DIAMETER   (antenna_name) float64 104B ...\n",
       "    │           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 312B ...\n",
       "    │           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 208B ...\n",
       "    │       Attributes:\n",
       "    │           overall_telescope_name:  ALMA\n",
       "    │           relocatable_antennas:    True\n",
       "    │           type:                    antenna\n",
       "    ├── Group: /Antennae_North.cal.lsrk.split_3/field_and_source_base_xds\n",
       "    │       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "    │       Coordinates:\n",
       "    │         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "    │           source_name                   (field_name) <U46 552B ...\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 48B ...\n",
       "    │           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B ...\n",
       "    │       Attributes:\n",
       "    │           type:     field_and_source\n",
       "    └── Group: /Antennae_North.cal.lsrk.split_3/weather_xds\n",
       "            Dimensions:              (station_name: 2, time_weather: 259,\n",
       "                                      cartesian_pos_label: 3)\n",
       "            Coordinates:\n",
       "              * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "              * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "              * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "            Data variables:\n",
       "                DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "                PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "                REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "                STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "                TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "                WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "                WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "            Attributes:\n",
       "                type:     weather
" ], "text/plain": [ "\n", "Group: /\n", "│ Attributes:\n", "│ type: processing_set\n", "├── Group: /Antennae_North.cal.lsrk.split_0\n", "│ │ Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", "│ │ polarization: 2, uvw_label: 3)\n", "│ │ Coordinates:\n", "│ │ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ │ field_name (time) \n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \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
0Antennae_North.cal.lsrk.split_0[OBSERVE_TARGET#ON_SOURCE](50, 45, 8, 2)uid://A002/X1ff7b0/Xb[XX, YY][17, 21, 25, 9]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
1Antennae_North.cal.lsrk.split_1[OBSERVE_TARGET#ON_SOURCE](50, 55, 8, 2)uid://A002/X207fe4/X3a[XX, YY][26, 34, 38, 42]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
2Antennae_North.cal.lsrk.split_2[OBSERVE_TARGET#ON_SOURCE](15, 55, 8, 2)uid://A002/X207fe4/X3b9[XX, YY][43]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
3Antennae_North.cal.lsrk.split_3[OBSERVE_TARGET#ON_SOURCE, CALIBRATE_WVR#ON_SO...(50, 77, 8, 2)uid://A002/X2181fb/X49[XX, YY][48, 56, 60, 64]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
\n", "" ], "text/plain": [ " name \\\n", "0 Antennae_North.cal.lsrk.split_0 \n", "1 Antennae_North.cal.lsrk.split_1 \n", "2 Antennae_North.cal.lsrk.split_2 \n", "3 Antennae_North.cal.lsrk.split_3 \n", "\n", " scan_intents shape \\\n", "0 [OBSERVE_TARGET#ON_SOURCE] (50, 45, 8, 2) \n", "1 [OBSERVE_TARGET#ON_SOURCE] (50, 55, 8, 2) \n", "2 [OBSERVE_TARGET#ON_SOURCE] (15, 55, 8, 2) \n", "3 [OBSERVE_TARGET#ON_SOURCE, CALIBRATE_WVR#ON_SO... (50, 77, 8, 2) \n", "\n", " execution_block_UID polarization scan_name spw_name \\\n", "0 uid://A002/X1ff7b0/Xb [XX, YY] [17, 21, 25, 9] spw_0 \n", "1 uid://A002/X207fe4/X3a [XX, YY] [26, 34, 38, 42] spw_0 \n", "2 uid://A002/X207fe4/X3b9 [XX, YY] [43] spw_0 \n", "3 uid://A002/X2181fb/X49 [XX, YY] [48, 56, 60, 64] spw_0 \n", "\n", " spw_intents field_name \\\n", "0 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "1 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "2 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "3 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "\n", " source_name line_name field_coords \\\n", "0 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "1 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "2 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "3 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "\n", " session_reference_UID scheduling_block_UID project_UID start_frequency \\\n", "0 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "1 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "2 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "3 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "\n", " end_frequency \n", "0 3.440067e+11 \n", "1 3.440067e+11 \n", "2 3.440067e+11 \n", "3 3.440067e+11 " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ps_xdt.xr_ps.summary()" ] }, { "cell_type": "code", "execution_count": 9, "id": "af42ab83", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'time': 50,\n", " 'baseline_id': 77,\n", " 'frequency': 8,\n", " 'polarization': 2,\n", " 'uvw_label': 3}" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ps_xdt.xr_ps.get_max_dims()" ] }, { "cell_type": "code", "execution_count": 10, "id": "923aaa2c", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'frequency' (frequency: 8)> Size: 64B\n",
       "array([3.439281e+11, 3.439393e+11, 3.439506e+11, 3.439618e+11, 3.439730e+11,\n",
       "       3.439843e+11, 3.439955e+11, 3.440067e+11])\n",
       "Coordinates:\n",
       "  * frequency  (frequency) float64 64B 3.439e+11 3.439e+11 ... 3.44e+11 3.44e+11\n",
       "Attributes:\n",
       "    channel_width:            {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n",
       "    observer:                 lsrk\n",
       "    reference_frequency:      {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n",
       "    spectral_window_intents:  ['UNSPECIFIED']\n",
       "    spectral_window_name:     spw_0\n",
       "    type:                     spectral_coord\n",
       "    units:                    Hz
" ], "text/plain": [ " Size: 64B\n", "array([3.439281e+11, 3.439393e+11, 3.439506e+11, 3.439618e+11, 3.439730e+11,\n", " 3.439843e+11, 3.439955e+11, 3.440067e+11])\n", "Coordinates:\n", " * frequency (frequency) float64 64B 3.439e+11 3.439e+11 ... 3.44e+11 3.44e+11\n", "Attributes:\n", " channel_width: {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n", " observer: lsrk\n", " reference_frequency: {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n", " spectral_window_intents: ['UNSPECIFIED']\n", " spectral_window_name: spw_0\n", " type: spectral_coord\n", " units: Hz" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ps_xdt.xr_ps.get_freq_axis()" ] }, { "cell_type": "code", "execution_count": 11, "id": "9dcec340", "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", "
namescan_intentsshapeexecution_block_UIDpolarizationscan_namespw_namespw_intentsfield_namesource_nameline_namefield_coordssession_reference_UIDscheduling_block_UIDproject_UIDstart_frequencyend_frequency
0Antennae_North.cal.lsrk.split_0[OBSERVE_TARGET#ON_SOURCE](50, 45, 8, 2)uid://A002/X1ff7b0/Xb[XX, YY][17, 21, 25, 9]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
\n", "
" ], "text/plain": [ " name scan_intents \\\n", "0 Antennae_North.cal.lsrk.split_0 [OBSERVE_TARGET#ON_SOURCE] \n", "\n", " shape execution_block_UID polarization scan_name \\\n", "0 (50, 45, 8, 2) uid://A002/X1ff7b0/Xb [XX, YY] [17, 21, 25, 9] \n", "\n", " spw_name spw_intents field_name \\\n", "0 spw_0 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "\n", " source_name line_name field_coords \\\n", "0 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "\n", " session_reference_UID scheduling_block_UID project_UID start_frequency \\\n", "0 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "\n", " end_frequency \n", "0 3.440067e+11 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sub_ps_xdt = ps_xdt.xr_ps.query(\n", " field_name=[\"NGC4038 - Antennae North_0\", \"NGC4038 - Antennae North_1\"],\n", " scan_name = [\"17\"]\n", ")\n", "sub_ps_xdt.xr_ps.summary()\n" ] }, { "cell_type": "code", "execution_count": 12, "id": "b8054714", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 3kB\n",
       "Dimensions:                       (field_name: 3, sky_dir_label: 2,\n",
       "                                   baseline_id: 77, frequency: 8,\n",
       "                                   polarization: 2, time: 165, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "    source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "  * sky_dir_label                 (sky_dir_label) <U3 24B 'ra' 'dec'\n",
       "  * baseline_id                   (baseline_id) int64 616B 0 1 2 3 ... 74 75 76\n",
       "  * frequency                     (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization                  (polarization) <U2 16B 'XX' 'YY'\n",
       "  * time                          (time) float64 1kB 1.307e+09 ... 1.308e+09\n",
       "  * uvw_label                     (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    FIELD_PHASE_CENTER_DIRECTION  (field_name, sky_dir_label) float64 48B 3.1...\n",
       "    SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 3.1...\n",
       "    MEAN_PHASE_CENTER_DIRECTION   (sky_dir_label) float64 16B 3.15 -0.3293\n",
       "Attributes:\n",
       "    type:               field_and_source\n",
       "    center_field_name:  NGC4038 - Antennae North_1
" ], "text/plain": [ " Size: 3kB\n", "Dimensions: (field_name: 3, sky_dir_label: 2,\n", " baseline_id: 77, frequency: 8,\n", " polarization: 2, time: 165, uvw_label: 3)\n", "Coordinates:\n", " * field_name (field_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset> Size: 3kB\n",
       "Dimensions:                       (field_name: 3, sky_dir_label: 2,\n",
       "                                   baseline_id: 77, frequency: 8,\n",
       "                                   polarization: 2, time: 165, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "    source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "  * sky_dir_label                 (sky_dir_label) <U3 24B 'ra' 'dec'\n",
       "  * baseline_id                   (baseline_id) int64 616B 0 1 2 3 ... 74 75 76\n",
       "  * frequency                     (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization                  (polarization) <U2 16B 'XX' 'YY'\n",
       "  * time                          (time) float64 1kB 1.307e+09 ... 1.308e+09\n",
       "  * uvw_label                     (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    FIELD_PHASE_CENTER_DIRECTION  (field_name, sky_dir_label) float64 48B 3.1...\n",
       "    SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 3.1...\n",
       "    MEAN_PHASE_CENTER_DIRECTION   (sky_dir_label) float64 16B 3.15 -0.3293\n",
       "Attributes:\n",
       "    type:               field_and_source\n",
       "    center_field_name:  NGC4038 - Antennae North_1
" ], "text/plain": [ " Size: 3kB\n", "Dimensions: (field_name: 3, sky_dir_label: 2,\n", " baseline_id: 77, frequency: 8,\n", " polarization: 2, time: 165, uvw_label: 3)\n", "Coordinates:\n", " * field_name (field_name) " ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ps_xdt.xr_ps.query(scan_intents=\"OBSERVE_TARGET#ON_SOURCE\").xr_ps.plot_phase_centers()" ] }, { "cell_type": "code", "execution_count": 15, "id": "66bafbbc", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABEYAAANoCAYAAADNue/dAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA36FJREFUeJzs3Qm8jOX7x/Hr2LfsWbMrhKxl+ZWyk9KikgglSz+iaKFkaaGUFqWSslRKKVSKFrTaipQkIVJZKxzJfub/+t79n/nNHHOYw1nmnOfzfr2ezpl5nvPMPXMmZ+Y7133dcYFAIGAAAAAAAAA+lCW9BwAAAAAAAJBeCEYAAAAAAIBvEYwAAAAAAADfIhgBAAAAAAC+RTACAAAAAAB8i2AEAAAAAAD4FsEIAAAAAADwLYIRAAAAAADgWwQjAAAAAADAtwhGAAAAMogpU6ZYXFycbdq06YTHfvLJJ+5YfQUAAEkjGAEAIAU988wz7s1ogwYNkjxG+/v163fc81x00UXuuDPPPDPi/o8++sjt1/bmm2+e9FhO5LzzznPnePbZZ+1UjRo1ymbPnm2Zifd78rbChQvbueeea5MmTbKEhIQ0GYN+zwpMAADAySEYAQAgBU2bNs3Kly9vy5Yts/Xr15/SuXLlyuXOoXNFuh3tT82xrFu3zr766it3Dp3rVGXGYETOOOMMe/nll91277332pEjR6xHjx529913p/htXX/99bZ//34rV67cCYORJk2auGP1FQAAJI1gBACAFLJx40ZbtGiRPfbYY3b66aefcphQqVIlq1Klir322mth1x84cMBmzZpl7dq1S9WxvPLKK1asWDEbO3asO1c00zf8qECBAtalSxe33Xbbbfbll1+6sOTpp5+2w4cPp+htZc2a1QViqk45kSxZsrhj9RUAACSNv5QAAKQQhQ+FChVygcVVV12VIlUWnTp1stdffz1sWsa7775r//zzj11zzTWpOpZXX33V/ewll1zi3vzrcmIjRoxwb9JVkdK9e3crWLCgO/aGG25wY/TomH379tnUqVOD0050vOf333+3G2+80YoXL245c+a06tWru+kokXpmvPHGG/bggw+68EFv/Js3b35MRYymuNSoUcN++OEHa9q0qeXJk8dKly5tY8aMCTvu0KFDNmzYMKtXr54bd968ee2CCy6whQsX2snSbTVs2NDd3507d7rrfv75Z7v66qvdVBtv/3vvvXfMzz711FPuvusY/f7q168f9rgn7jGiap7Vq1fbp59+Gnxcdd+P12NkxowZ7v7mzp3bihYt6gIdPf6h9LvJly+fu/7yyy933ytgu/322+3o0aNhx06fPt2d77TTTrP8+fNbzZo17cknnzzpxw8AgLRGMAIAQApR+HDllVdajhw5XKDhTUU5Fdddd51t3bo17M2t3igrDFA1R2qNZenSpS5s0M/qHDrX8cIVhTR79+610aNHu+/1Bn7kyJHB/ZpmosBDoYM37aR3795u3/bt211Q8PHHH7veK3pTXblyZTcd5Yknnjjmth566CFXMaM36UOGDLElS5ZY586djzlu165d1qZNG6tVq5areqlatardddddNnfu3OAx8fHx9sILL7gw4eGHH3ZBj8KM1q1b28qVK+1kKQhRdYeCIt2/xo0b2wcffGD//e9/Xaijqp/27du7++GZOHGi9e/f384++2x3v/X41a5d2/0ukqLjFBDpvnmP6z333JPk8fq96Pejsel31bNnT5s5c6adf/75tnv37rBjFYDocShSpIg9+uijduGFF7rH8fnnnw/rdaPniEIcPX763eixVNUMAAAZRgAAAJyyr7/+OqA/qx999JG7nJCQEDjjjDMCAwYMOOZYHde3b9/jnu/CCy8MVK9e3X1fv379QI8ePdz3u3btCuTIkSMwderUwMKFC925ZsyYcdJjSUq/fv0CZcqUcT8rH374oTvnN998E3bc8OHD3fU33nhj2PVXXHFFoEiRImHX5c2bN9CtW7djbkv3rWTJkoE//vgj7Pprr702UKBAgcA///zjLnv3t1q1aoGDBw8Gj3vyySfd9atWrQp7/HTdSy+9FLxOP1OiRIlAhw4dgtcdOXIk7FzeY1y8ePFj7lMkup2qVasGdu7c6bY1a9YE+vfv72770ksvdcfceuut7vLnn38e/Lm9e/cGKlSoEChfvnzg6NGj7rrLLrss+DtPyuTJk925Nm7cGLxOP6NxJOY9Xvoqhw4dChQrVixQo0aNwP79+4PHzZkzxx03bNiw4HX6Pem6++67L+ycderUCdSrVy94Wc+p/Pnzu8cRAICMiooRAABSgKopNA1E0zZEUxg6duzophkknnpwMlUj+lRf0z60Ao0+7b/iiitSbSxqHqrpO/oZr5dFs2bNXIVKUlUj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0EPJHivSF8EIAAAAAOC42rRpY1u3brVNmzbZ3LlzrWnTpjZgwAC75JJLrFatWm5TUJKYjl+4cKH16NHDXd63b587dvz48Une1llnnWVPP/20rVq1yr744gsXPrRq1cp27twZ9W/pn3/+senTp9udd94ZcVyLFi2yTp06uXF98803dvnll7vt+++/Dx6j+xu66TwKPjp06BB2rvvuuy/suFtuuSXqcSI2xAUCgUB6DyKziY+PtwIFCtiePXssf/786T0cAAAAADilipHdu3cfU92xYMECVw0yceJE279/vw0dOtQFA3ny5Amr/tD+zZs3u+qNUAoZZs2a5QKJaN5fffzxx+72ojF16lR77rnnbN68ea465ccff7QyZcoE93fs2NGFNHPmzAle17BhQ6tdu7b7uUg0zr1799r8+fOD1ym0ufXWW93mV/GZ4P0vFSMAAAAAgGRr1qyZq/6YOXOmde7c2Q4ePGhvvvlmcL8+g1dAoWAlcSgSrUOHDtnzzz/v3njrtqL14osvWpcuXdzPtW3b1qZMmRK2f/HixW6KTqjWrVu76yPZvn27vffee8HKl1CaOlOkSBGrU6eOm2Zz5MiRqMeJ2EAwAgAAAAA4KerRoekyhQsXtiuuuCJs2oqm0GjfDTfckOzzqpIjX758rv/H448/bh999JEVLVo0qp9dt26d63eiqhBRQDJ58mQX1Hi2bdvmeqWE0mVdH4kCntNOOy3YK8XTv39/N2VH91U9TUaNGuWm7yBjIRgBAAAAAJwUhQ2aEiM33nija666YcMGd1khyYUXXmiVK1dO9nnVw2TlypWuF4j6m1xzzTW2Y8eOqH5Wt6vqDy9Iufjii900D039OVk6p6piFNSEGjhwoF100UV2zjnnWJ8+fWzs2LH21FNPueoZZBwEIwAAAACAk7JmzRqrUKGC+179P8qWLeumrajvhKbYRJp6Eg2tSKNARX0/NC0mW7Zs7uuJHD161FV3aNqLfkabep789ddfYdUsJUqUcNNjQumyrk/s888/t7Vr19pNN910wttv0KCBm0qjShlkHNnSewAAAAAAgIxHFRhaOea2225zl7NkyeKmzSjAKF26tOXIkcOuuuqqFLktLQscTRWGltxVg1StNBPa10SrzWhsaiJbsGBBa9SokWuiGto0VdN1dH1iuj/16tWLqseJqlz0OBQrVixZ9w/p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adOmNmDAALvkkkusVq1ablNQkpiOX7hwofXo0cNdfv31123gwIE2fPhwW7Fihfu51q1b244dO8JCEd1eq1atXGjy1VdfWb9+/SxLluO/5O3YsaMbo7c1atTIevbsGXZdmTJlbObMmWHXff/995Y1a1a7+uqrg+caM2aMjRs3zp577jlbunSpC2g0zgMHDhxzu3feeaeVKlXqFB9hAMCpigso1kaKio+PtwIFCtiePXvcJxUAAAB+rRjZvXu3zZ49O+z6BQsWuGqQiRMnumqOoUOHuqAhT548wWNGjBjh9m/evNmFD6oQOffcc+3pp592+1VxorDilltuscGDB7vrGjZs6CpS7r///lMatypDVMnxxBNPHPc47Vd1iMauAEQvqxV0DBo0yG6//XZ3jF4PqlJGVSnXXntt8GcVEinoeeutt6x69er2zTffuNsEgIwmPhO8/6ViBAAAAGlKU11U8aEKjM6dO7spJW+++WZwvwKGqVOnumBFocihQ4fctBtNS/GoCkSXVSUiqhxRhUaxYsWscePGLoy48MIL7Ysvvki1+/Hiiy+6sEOhiGzcuNG2bdsWNk69WVCo441Ttm/f7ipSXn755bAwCACQPghGAAAAkOaqVq3qpssULlzYrrjiirDpNJpCo3033HCDu/zHH3/Y0aNHXdgRSpcVRMjPP/8crDRR6DBv3jyrW7euq0xJqsfHqdBUHU2luemmm4LXeWM53jgV+ijw6dOnj9WvXz/FxwUASD6CEQAAAKQ5BQRqOio33nijffbZZ7ZhwwZ3WSGJqj0qV64c9fk0tUZ69+7tApU6derY448/blWqVInYwyQlqkVq1qxp5513XrJ+7qmnnrK9e/fakCFDUnxMAICTQzACAACANLdmzRqrUKGC+15VHWXLlnV9ODRXXVNsvKarUrRoUTelRlNQQulyiRIl3PdaBUbOPvvssGOqVavm+pSkpH379tn06dPDxijeWI43TvVX0bSanDlzWrZs2YLhj6pHunXrlqLjBABEh2AEAAAAaUrhwKpVq6xDhw7/viDNksVVeaivyKuvvmo5cuSwq666Kni8LterV8/mz58fViGiy1pBRrSMrxqfrl27Nuy2fvrpJytXrlyKjn/GjBmuL0qXLl3CrlfQowAkdJwKetT7xBunVqz59ttv3fK82t5///3gqjsPPvhgio4TABCdbFEe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a9GihS1btizZ437ttdcsa9as1rdv34j7TzSO1atXW4cOHax8+fLuPjzxxBPHnMPbl3hL6jYBABCCEQAAgAymTZs2tnXrVlu3bp0NGjTIRowYYY888khw/2mnnWazZs0K+5kXX3zRypYtG3ZdfHy8tWrVysqVK2fLly9359C5nn/++eAxCls6depkCxcutMWLF7vQQj/z+++/J2vMuv0777zTBSSJQ5toxvHPP/9YxYoV7aGHHrISJUpEvA2FP3pcvO2jjz5y11999dXJGisAwF8IRgAAADKYnDlzunBAQcLNN9/sqjjeeeed4P5u3brZpEmTgpf3799v06dPd9eHmjZtmh06dMgdW716dbv22mutf//+9thjj4Ud89///tdq165tVatWtRdeeMESEhJs/vz5UY9348aNtmjRIhs8eLCdddZZNnPmzGSP49xzz3WBifbp/kdy+umnu8fF2+bMmWOVKlWyCy+8MOqxAgD8h2AEAAAgg8udO7cLFjzXX3+9ff7557Z582Z3+a233nLTTOrWrRv2c6oAadKkiZuS42ndurWtXbvWdu3aFfG2VLlx+PBhK1y4cNTjmzx5srVr184KFChgXbp0cdUjpzqOE9Hj8corr9iNN954zPQhAABCEYwAAIA0742RPXt2K168uLVs2dJVCagCQVMotG/JkiURf7558+Z25ZVXBi+PHz/evdlXT4oGDRoc0/diw4YNdsUVV7gqgvz589s111xj27dvT/a4e/fu7XpjzJgxI+J+Xa9KCo2jZs2a9v7774ftDwQCNmzYMCtZsqQLMFTdoSkwoX766Se77LLLrGjRom6s559/vpu6ciI698cff2wffPCBNWvWLHh9sWLFrG3btjZlyhR3WY+xAoLEtm3b5n4PobzL2hfJXXfdZaVKlXL3Ixr63WocCkREFR9ffPGFqyI5lXGcyOzZs2337t3ueQcAwPEQjAAAgDTvjbFp0yabO3euNW3a1AYMGGCXXHKJ1apVy22hU0A8Ol5BQY8ePdzl119/3QYOHGjDhw+3FStWuJ9ThcGOHTvc/n379rmeFQpaFixYYF9++aWrILj00kvdG/VoqTpCU1DUGyPSuDQ9RP03NK5vvvnGLr/8crd9//33wWPURHTcuHH23HPP2dKlSy1v3rxurKF9NnT/1TxVY1VApPuj65IKBTRFJF++fC6MUQDS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ERiBHTx40JYsWWLbt2+nNcysQ4cOtnbtWtrCzHr37m2bN2+mLQAA+BuMGDGC8ZbH5syZk+hfAScRrtFOLAIjnnnmmWds79697vnhw4ftgQcesLx581rlypXtlFNOsY4dO7qd0AcLFy6M+hg9erR98803Kd/7YMeOHUc9FCjr27evLVu2LOU1H6j/9+jRwypUqGAXXnihDRs2LGL7hg0bLEuWLOaLjRs32qRJk1IG8vr7dRzp37+/fffdd+Yj7RMjR460AQMG2LPPPmv/+c9/vNk/QlavXh0RNP3f//5nt9xyi11yySXWunVrmzVrlvlE59Xp06fbjz/+eNS2ffv2uf7ig+7du7u+gNhuv/1272++7N6924YPH26PPfaYDR482LZs2eJNl7ngggvc+OLpp5/2vh+Izp979uxJ9H9LhsA1WgYQwCuZM2cONmzY4J4/++yzQaFChYJhw4YFP/zwQ/Dmm28GxYoVCwYMGBD4IFOmTK499DXtI/S6vvpAf2e0h49t0bNnz6B48eJu/3jssceCAgUKBLfffnvK9vXr17v28MHkyZODPHnyuL+3RIkSwfz584MyZcoEFStWDCpVqhTkyJEj+PzzzwNf7Nq1K2jevHnEcULtkiVLliBv3rzB4MGDA19ceOGFwfjx493zcePGubZo2rRp8NBDDwXXXXddkC1btpTtyW7x4sXBqaeemtInLr300mDt2rURxwxfjp+hNtAxon///sG6desCX2l8Fe2hNtJ5JfS9D84666xgy5Yt7vmqVauC8uXLuza44IILgsKFC7ux57JlywIf6P//tttuc39z1qxZgyZNmgQffPBBcOjQocBHao/8+fO7Nvnqq68Cn3GNlngERjw8AIUCI+edd17w6quvRmxXcKRq1aqBD84991x3Qlq0aFGwYsUK91i+fLk7UU2YMCHlNR+ULl3atcWkSZOCKVOmuIcuinXBN3z48JTXfFChQoWIC7olS5a419q3bx8cOXLEq4ucunXrBt26dQt27tzpAkXqJ/o+5IEHHgguuuiiwBcKkF188cXBd9995/qFgiQ9evQIdu/eHbz++utB7ty5g9GjRwc+UMAsdCFTq1YtdxEcbtCgQe4c44NmzZq54+emTZtcv9Dz0047LVi5cqXb7tMxQ2OMiRMnBnfffXdwyimnuACZAmY6ph4+fDjwiYKl6gsjRoxIeeh8qvNq3759U17zbex5yy23uPPGtm3b3Pc6vzRo0CBo2bJl4FNbHDx4MHjvvfeCxo0buz6hGzI6nyjQ6hO1R58+fdz5Qs91DfLCCy8EmzdvDnzDNVriERjxcKfbuHGje16kSBE3wA+nga4G9z7Yv3+/G7xVqVIlmDt3bsrrCowog8YnupOjwf3ll18erF692uu2yJUrlwuQhVObnHnmmW5At2bNGm8ucnQX55dffnHPNYhTf5g3b17K9p9//tnd9fOFLvRmz56d8v3WrVuDnDlzusCIKGOkevXqgQ/0/75gwQL3XHc+Q89D1G98OZfo71+4cGHK9wqg3nHHHUG5cuWCpUuXehcYCV0AHzhwIBg7dmxw9dVXuwu/UqVKBY8++qgLHvlAf6cyItq2besu/n0+r4b3i9NPPz344osvIrbPmDEjKFu2bOBbW4SPMRQcUNvoWHHJJZcEvghvD51fu3TpEhQsWNBlpN54441H9ZVkxjVa4lFjxEOvvfaavfzyy5Y9e3bbunVrxLadO3dajhw5zAf6+1988UV77rnnrGnTptavXz87cuSI+ahw4cL2wQcf2I033ujqarz99tvmqxIlStjSpUsjXitdurRNnjzZvv32W2vfvr35QvuI6iPIgQMH3P4R+j5UVyFbtmzmi0OHDln+/PlTvld9Jr2m+fJy1VVX2U8//WQ+qFevXspx4rzzzrMpU6ZEbNf+ov3GB9oPsmbNmvJ9pkyZ7F//+pddc801rp1+/vln85GODTfddJN99tlnri7Pbbfd5mp4VapUyXygOhIzZ85055Tq1avbjBkzzGfaL0TnkJIlS0Zs07Fi06ZN5lM7pP37/+///s+NPb744gsrW7as+ahGjRr2yiuv2Lp169y1ivpEw4YN7bTTTjNfcI2WWKlncnihXLlybqcTBUDmzp1rl156acRg1pdBS0ijRo1s9uzZbjWaTz/91HzWpUsXN5Bv1aqVjR8/3nxUv359e+utt+yKK66IeL1UqVKuCOlll11mvrj44ovt4Ycfdg8Vjzz//PPtqaeesrFjx7rB3ZNPPmk1a9Y0n4rmvfTSS65YoOh50aJF3UN27drlgiU+UPFdFVrVCl5169Z1RRQVODzrrLNs8eLFro8MGTLEfKDi5TqH6G8PF+onCrz7TmOPXr16Wc+ePW3ixInmCwXMVKT56quvdudVFSiOdmHsA51T1R4qVK1jxNlnn52ybeXKlVakSBHzgbL1j9VOaccfySza/pAzZ05r06aNe/zyyy+uUK8PuEZLPAIjnlmxYkW622vVqhURKPFF8eLF7ZNPPnGZNDo5h98V9k2VKlXcqjy6GNbAJVeuXOYT3bWJdddfd3WmTp1qEyZMMB9oxZUmTZq4C2Bd/Onv7tq1qxUsWNBtL1SokLsb7AsFA6688kpXRV/ZNOvXr7c33ngjZbvuDjdu3Nh8oCDA119/bY8//rirpK+sGWUD6MJHAaQxY8ZYs2bNzAfXXXedy57RID4tBUeUaeVLkOjUU09Nd9UuXQRpH/Ix4K4bUcqayZMnj1crm4kCYuHSBpB1I0bnGR/oBqSydHF8gSJlXmmFRB9wjZZ4bmmFRP8SAICMS0spht/N+/LLL930gTp16nhzly9EKb4fffSR7d+/313sKJDoOw0jtKyzAgBa9t2n6VUAgD9P2ULKlPA1kwoZC4ERRPjtt99c5L5t27ZetIzqJowbN85mzZrl7v6K5gNfdNFFdu2117q7wj5Rpki0ttAdYF8MHDjQmjdv7u58AsAfpaCZ+FKvC+nT+VTZVaHzquprqJaXzq++8nkf0d+eOXPmlACy6ooMGzbMVq1a5cYdnTp18qqmBiLHnzfccIOVL1+eZkkQAiOIsGDBAldH4PDhw0nfMpq3qHm/miOvKUSaTiMbNmxwg5gyZcq4miNK40t2uturg7GKwylyH94WOlmr1oSmDxQrVsySnQYselx++eV26623ujR53wJk4Qge0h5/xq+//urS5zXg94Gmmb3wwgsusKwaCqIpmcqquu+++6xBgwaJ/hUzBF0EajqJ6jUlO00v69y5s5tWprvhoekTKnqvLKuWLVvaq6++arlz5zYfsI/8TnXK7rzzTncDRmMu1RNRbT9NT1ShZtVfUR0eHTt8sWjRIvvqq6/c36xpu5rOrBpeCiK1bt3aZWf6gPFn4hEY8UxowBbLwoULXfFNHwIjmuesub4qKpm2pojaSVkzmi7w+eefW7LTCVoBIhW4Slt8Vyfpjh07uuKj7777rvlwYtLFnDKJVHdGfUMnZgVJwovF+YDgIe3xZ/kUZFedGR0fdBxVsD08sKwVJt577z17/fXXo9Yg8Y1P/UJ9Ytq0aTZo0CAXGAvVFdHfrumI3bt3dzXdQgXxkxn7SKoCBQq4Ys0VK1Z0QRLtD88//3xEnTPVIZk+fbr5QHXKlKGtujN79uxxKyRq/H3uuee66Zmq66bjqA/BEcafiUdgxDPa6dKbx6e7GNruw6BFd2k0dSTWxe53333nMkl0oE52+fLlcwM4LbsZzZw5c9wJXMs5+7CPKOVZ2THKpBkxYoQLGOlOjpaS093Om2++2bVZsiN4SHvE8uGHH6bbd7Q86/333+/FueTMM8+0u+++27p16xZ1u5afVDbJkiVLLNmpgHl61qxZY88995wX/ULFqT/++GM3HTUaZQv84x//cFOYkx37SCoFABQYUWaEplPp5puCAOFZVVre2Yfxlmj/UNBDK94pu0oF3rVCYqjg6iOPPOLGoAqOJDvGn4lHYMQzilRrWUVd8EejgZtSP30YtCgD4t///rcbmESjWitqC2VSJDsVTNRUGWULRTNlyhR3N3Tz5s3m04kp3P/+9z9311d3f0NLsyY7goe0x7GC7OnVb/clyK6lJZUJEWupe2Xd6UJHGYg+9AvV0Ig1/VBT83R89aFfaLylzJBYS5preWtlkmzfvt2SHftIKk2dadiwoT344INumrLGmeF1/TQW0/Q7FSX1gfYTBT40bV0ZIqo7o5uWoRt133//vdtPQjV6khnjz8RjuV7PKGVPYl0AaxlOXxYqUpqrTkZKW9SJKjz9WYMZRa+V6uqDFi1aWLt27dxdTbVFaGqRphSpLXSS1nxoH8TKqNJSgnrojujYsWPNBzoeaPm4WFlV2hZautcHtEcqXfwqE0Ip0NHMnz/fZVj5oGrVqi5oqmWLo9HUPF9WL1LxyAEDBthNN91kvvcL3XS5/fbbXd9Im405b948d1f8mmuuMR+wj6TS2LJRo0auBo3GVcqs001J1RhREFVjDGVJ+CQ07lJgQEE0BUtClJ3rQ/BQGH8mHoERz7Rq1Srdu1ZK60u73nyy6tOnj6sx8uyzz7oTU+iApMCQ2uGhhx6yHj16mA80v1WRek0ROXToUMrdPt3dy5o1q6uSrvRnHxwrMKigkabT+IDgIe0Riy5udZcvVmDkWNkkybaSgC6CNVdedzbTBtk1rUhTKnzqF7ECIz71i8GDB7sxl9pE02pCWYiaorlt2zZXj0bv8QH7SCoVGFVhf91wUqF/CU0bUSZzr1693NQ8X2gFFgWGzjjjDPe9ClhrEYAQLQCgQLwPGH8mHlNpADNbvnx5xBK1vi6VpgwRzX3VgD7UFhrUpS1OC3/o7q+qw2v/SBs8vOeee7wJHobQHqlTy3THUynh0WibjiWxshOTjbKn/vWvf7mVFcLPJboIuuOOO7xZfvHHH390dbliTR85ePCgm57q03LoWmFDF3tp+4VqTPiEfeRomzZtcoFT3ZjSxb8vx4lwQ4YMsbJly1qTJk2ibn/00UddMHHo0KEn/HeDfwiMAACOSYO38ICZr8HDENoDAAAgeRAY8ZAKaGrOc9o7GKoM3b59eytatKj5QHN7le6roqK5cuUy39EvIu96KsU52l2+O++805t6AcDx2r9/v/uqwnk+HjtVwBqRVBcg/PgZXjfAR8q0UyFzLYOu7ABNpcmWLZv5TBlEPrZBrPGWxhgdOnTwZhyOozH+TKzMCf58nGCqgq5l01TcSYOUSy+91D30XK8ptVPpzz7QnO+OHTu6AYqKoGletK/oF6k091eF8lQcT/UTnnjiCffQc608oQLGWl7Pp5O0ls9Tm2hf0UPP9Zq2+Yb2SDVhwgRr3Lixq5+gFYz00HO9NnHiRPOFaoqoaPVbb72VEiDymVLeFTwuXLiw+xr+XIVIfaH9IFQ0cuvWre6iV/1EKwPqfFKtWjU3lcIH77zzjqtZFqIbD5pOpUKbCiqq5psv0htvDRo0yKtx+PHQ8sVaztcHjD8Tj4wRz9SuXdutl645fWmrH+tuhuZCL1y40EWxk52qX2sZMK2Nrsj9Dz/8YOecc44rOHnLLbe4Ab4v6BeptH9o0BproKbCaO+//77bT3w4STdr1swFg3R3M7yopC6KFUz873//67b5gPZI9cYbb7hjpTLu0vYNHVO1rLUugtu0aWM+nEvUBpMmTXIFvXX+UMFqLdHrGxUz1zHyrrvuitovdDGo7Q888ID5tPSmAslTp061jz76yE1DXL16tTu2XnDBBa42TbLLkiWLrVu3zrXF8OHDXXuoPlWtWrXcTYh+/frZiy++6I4pyY7x1h8TuiHlwxLfjD8Tj8CIZzRlRCehWEW/VCRMd4PTW7kmWdcL17rpGshrKVbd2dCgRSdpHyLV9IvIttCSkpUqVYraVlpOTxc8PuwjnKRpj1h0x1MrJ3Tr1i3qdi3lq+W/tdqAL+cSfVXASIF2nUt1nAgF2n0pYK0sAAVHYq1Ko/Prgw8+6Faa8GmMoTGXlnNu2rRpynatWKQVzlSvyKe2UDBEAVX1gxAFh1577TWbO3euJTvGW5EULE3PmjVr3KqIPgRGGH8mHlNpPKM5jAoAxKJtoTs8vrnwwgvt1VdfdRXzNaj/9ddf7corrzQf0C9SqSp8ektrapsvKyr8/PPP7qIulpYtW3px4RtCe6TSha2Wpo1FUwZ0V9wnmhKgpd+VfTh9+nQXGNGy75p+1rZtW/OBVo9Q5mUs2qb6Cr4IZeb+9ttvKcuRhlSoUMGNN3xrCwWCrrrqqoht+l61V3zAeCuSVrfTam8KpEd7vPnmm+YLxp+JlzXRvwBOLKWv3n777S4FXgPX8DRX3b1QxF6RWZ9pnryK0OqhCyEf0C9SaQpNq1atXJE8Xfil3Uc+++wzV0vAp5N0rOwZn4JEQnukqlq1qsuw013waJQ14UuR4rTTUkX1JPTQ3dAxY8a49vCBpob079/f9Y2sWSOHmLrjqwsgvccXGkeoILGKjC5fvtztNyHKoChYsKD5QudO1dFQXREt6Rxu3759UfejZMR4K5LGEDouxMoyUwZvjRo1zAeMPxOPwIhnlPasu1qKwiorIpSapvmfOvCMGDEi5sEp2dSrV8+yZ89+zHRxH9AvUt14441WunRpd0EzcODAoyrGK2Cirz7gJE17xKJ94x//+Ie72IkWQNRd4fQyr5KJ6nPFopojqjeihw9UVFO1RXS8VEHJ8H4xbdo0d85VrREftGvXLuW56lalDQb85z//8aoOTXh7qB5P+Hn0q6++OiqjJlkx3oqkaw/drI117aGAWXrH2GTC+DPxqDHiMd3BCKW0Klji25JpSgUvW7asN3cpjpfv/QKRZs6c6YJE0ZYVVI0JX4JEIbRHqhUrVrjaALqoSds3VMhbGTY+UF2Rm2++2culiqPZuXOnS3+P1i+UjedLvZVj2b17t7sppQwK36korcYavhTyDmG89ftKbwoa1qxZM2YbacqZT9mpSBwCI0ihiKzu/ikFVisK+FQlHbH51i/Ss2PHDhs9erRrC5bTA9KnjEQdZ33IrFJ6vKZh4ti0dK2W7wUQifEWYmH8eWIwlQZu3qvmP2sazaZNm9ItqJdMfEnN+7N87RfRTJ482bWFlunVHOnrrrvOfMdJmvaIRbWZhg4daqNGjXLB52TXu3dvlyFDYCR9mkKjfjF+/HgvVvW67777jvke1WFRNo1qvmkVsGR1PMvbh9rCx6AZ463oGGcw/jzRCIx4av/+/e7uv+58q3q+7uyp6KrmQfuU5so0mkj0i8gl4hQUGj58uG3bts2tKqCiq5oH63O/IUhEe0SjVGgtxaoAoqZdKS36eC4MkwFB9thWrlzp+oSmG+kY2qhRIxs5cqT5YN68ecd8z5EjR9xKPlq6dtCgQda1a1dLRqqlcjy1IvQeBYjUR84++2xLZoy3YvN9nMH4M3GYSuMZFThSMOTtt992S8W1adPGWrRoYWXKlLEFCxZ4s4qAZM6c2a3Qc6y7fM8//7wlO/pFZEE87SMqFKhBfOvWrd1XFVH0bR8J4SRNe8SiOhLKAnj33XetXLlytmjRIjeoveSSS8ync4mKixYtWjTRv0qGcODAAXdBo34xY8YMl2346aefukBBekv5+kyBI03JWrp0qSVrgOx4gkTaj5599ln3VTftkhHjregYZzD+zAjIGPFMrVq1rHv37m4wG2sJTp9899136a5M40tmAP0ilQKFDz30kLv7nS9fPvNZ2iCRViIJBYl0gePL/hFCe6RSX9Adve3bt1vLli1dH9GdXhVQLFKkiPlGK5gda39QbY1kp/GFbrxUrFjRBZV1HFV/UL/wod7Mn9W4cWPr2LGjW83p9NNPt2RzvIUzTzvtNLd0a+XKlV0ReBWATzaMtyJxXk3F+DPxCIx4RvNYdaGj1E1li6gCuG8XN+E++OADiq/SLyJoOtk///lPtyxvKKOqUKFC5iNO0rRHLAoe6qG73Fzw/l5nRCnfvtMqReoXDz/8sPeB5T9C2UbUqEkNjuTKlcvVl0jGwAjj8EiMM1Ix/ky8zIn+BXBiff755/bDDz+4bJEuXbpYyZIl3ZKb4luAxLe/Nz30i1SvvvqqKxipaVa686l95Nprr3Vzo5Xq6+NJumHDhjZkyBBXI8BntEeqJ5980k2f0UWMLoS///5785mW623Xrl26Dx+o4O4333zjjpu64NEyrKphBhyvZA+0Mt6KxHk1FePPxCMw4qGyZcvaE0884apgaxCjFUdUDVwXf48++qjNnTvXfEDBvEj0i1S6W6ULmalTp7rpVlWrVrXixYvbxRdfbK1atXLz533ASZr2iOWRRx5xq8/oHLJ+/XqXHq6pNDqu+hZAI8ieStOqJkyY4I6bmg7RrVs3t9KIgso//vhjAv+XgIyD8VYqxhmRGH8mFsVX4Wgg++abb7o541pWzYc7PCp2prt8OXLkOK73N2nSxBWT050wX/jYL2LRwP7jjz92U9FUSFAV5X2zZMkSt0qP9p1du3a5faJ58+Z2/fXXm49oj1Q7d+50qzbpWKHighdeeKHrGz6sTKPiqwoOFStW7Ljev3r1aitVqpT7d8lOgTIt06vj5ocffuimRuh48fLLLyf6V8twVNNKBb6TscbIH+VjWzDe+h3n1aMx/jxxCIzgKMoYOf/8891zLR2nOeTJOM/zj/LxRB2OfpFKNXpCF0E+Bsw4SdMe6VG2gC6EFSjRvoJI+fPnt/nz53t3LlHxWS3DquCqzqWI5Gu/iIbxFuNwxhnR+T7+jDcCI0gXJ+pUvp+ow9EvUvneLzhJ0x6xHDx40K1GIlrF6JNPPnEp5L7z/ZgRjnNJKvoFbcE+Eh3jjOg4Zvz9kj+PE38JdThAv0B6wqcPaMnWvXv3et1gtEeqUFBEVqxY4QIlQDjGGKk0RbN06dJ0EDO31LOCZmAf4byKE4nACAAAAPA3UyHanj172qRJk1KCx40aNbL69eu7KUXh6tate9w1z5KF2mHlypVRl31mCjeAEy3rCf9EAAAAIImpcHmHDh2sWrVq9vzzz9ugQYPs3nvvdUWJVT/hjjvucKnw+j7ZqfBuNAoUaUnn0BS7pk2bnuDfDABSERgBAAA4QVje1w8DBw50j7vuusu+/PJLu+aaa6xv374uOCJVqlSxF1980YvASLNmzVy/jzZ1qnv37u6rtvu88h2AxGMqDXCcHn30UStcuDDtBQD406ir4UeQSMuOKhgiV1xxhR06dMh9DdGKEj/99JP54Oqrr3ZTiLSstbJlQo8sWbLY999/754TFAGQaARG4G0BrP3790cUA1y6dKk99thj1qZNG3v88cdt+fLlEe9/5JFHrGDBggn4TTOeZO4XfxQBMwB/xI8//minnnoqjZbkQSIVHz5w4EDK96ofkjdv3ojvfSlWrcKyCgrVrFnTTZ3B8WO8hVgYf/79CIx4StH5WK+vWrXKiwJYuoPx3//+1z2fMWOGVa1a1Z2wFSzRspJnn322zZo1y3zwn//8x/bs2XPc70/mfiFaSnPYsGG2bNky9/0PP/xgXbt2dXPCP//884j3EjBLxUk6Eu2R6tVXX7XixYubjxR0V5HJENVT0J1yJPdKLBUqVIjICFmzZo2ddtppEf2iTJky5gtNIVKtkYceesg6d+78h8YcyU434lSoV9kzvo23/qhkP69u2bLFJk+ebFu3bnXfb9682QYMGGB9+vSxRYsWRbyX8effL1OQzOF6HGXHjh1266232vjx490df52cVDE9NEjbsGGDlSpVyouUxgIFCtjs2bOtYsWKdtlll9n555/vCqSF/N///Z87OE2fPt2SXebMmV0RuBYtWlinTp2sVq1a5qv333/fbrrpJpcdpKyiDz74wG688UZ3p0v7ycSJE23kyJHWqlUr84VWVNB+sG7dOtdXTj/9dFckT/uOb3QHeNy4cS5oqrRwKVGihF100UV27bXXWvbs2RP9K2YIOpcoGPLEE0+Y7xRo1fnFh/Oq6Dihmhq6eGnQoEHEPrF7925Xd8OHfqFzR5EiRezSSy+Nur1///6uPZ588knzibJkFCTReUU3HxYuXOjqrfhCN1meeeYZlz2ktlCWsvqKLsc0taxevXougBSeXeSz3377zV2ztG3b1pLdN998Y1dddZW7VtMYVMEyjT+zZs3qblyvXbvWjcV0PkF8EBjxzN13322fffaZKwC2bds2e+qpp1xmhC4GNXjRYLZkyZIxM0qSiU46CoxUrlzZXdgoE+Dcc8+NuJtTvXp127lzpyU7Xez27t3bnZznz5/vBikKoOmErYGdT2rUqGHXX3+9m1Y1ZswY69Kli913330uUCYa1Gu1gXnz5lmy27hxo5sjr/1EfUTHhfPOO8/d+dy0aZNrFw3wfPHLL7+4TDMNThQ8DGVA6Lj59ddfu7u/ugOuO8W+8ykY8PLLL6e7XfvLc88950VbfPvtt25gr2OFsi+VDaJAojIyfbv5gvTp4l83n3TXu1ixYt40l26wKHiov1nZD6NGjXI3W3RO0biiXbt27mK4X79+if5VMwSfziVXXnmllS9f3t2k1Y2Fl156yRo2bGivvfaa296xY0cXKNJYHfFBYMQzmtf8xhtvuAyJUIqWCoApMqmTlIIlvgxaNN9VB5wHH3zQLr74Ypc9Ex6R1vQSXfitXLnSkp0uenX3WyfqOXPm2Ouvv25vv/22u5uhzIDbbrvNHbB9oICZ0ll1ctIdHM0DV5ucc845brvucCmA5kPA7Oabb3ZZMzpmqB0eeOABdydD3+tunzJrFDBSwNUH2gfy5MnjBrFpa+yoXXT80D6TdrpVMtJd3vRoCkHLli29OJfo+KkbCrGyhZRlpOOrD22hfURThYYOHeqyITRt4p133nF3PhVU9TUwsn379ogMM2Wswk/h4y2NKxQc0bEyRGNxjUsXL15sPtC581jnGmXR+HDMUJadpvafddZZLrCcM2dOl5164YUXuu1z5851Y/LVq1cn+ldNXppKA3/kypUrWLZsWcRrO3bsCOrUqRPUr1/fbcucOXPgg5kzZwYFChQIevbsGQwaNCg45ZRTgscffzwYPXp08MQTTwQFCxYMBgwYEPggU6ZMwYYNGyJe27t3bzBy5Mjgsssuc32ifPnygQ9KlCgRzJ492z3funWra5vJkyenbP/mm2/ce3yQP3/+4Pvvv0/5fteuXUG2bNmC7du3u+9HjRoVVKpUKfDp+Pndd9/F3L5w4UL3Hh9ov9BxQV/TPkKv+3Iu0bFx7NixMbfPmzfPm7YoVKhQsHjx4ojX+vXr517XsXP9+vXetIW89tprwVlnneX+5vCHXhs6dGjgk02bNrkxVbNmzYLatWu7h54/88wzwcaNGwNf6NgY+ns17gw/x8qKFSu8OY9I6FwR6+HTuSRPnjzB8uXLU77PmzdvsHTp0pTvV65cGeTMmTNBv50fsiY6MIMTq1y5cq54T3gBMNWW+OKLL1z663XXXefNf0mdOnVc2ruyQpQGL5piJLqj1atXL2/uhEdbMlGRak2l0UNTCIYPH24+0Jz4bt26Wffu3W3s2LFuv1Cqr/5+tZPu5NStW9d8oCyR8L6hO126a6NlJ0V1NVasWGG+UGad/l5NP4xG23xZuUp3tjSNKnz50XAqWBxaqtSH6XfKKlMGVTTah3wq57Zv376I7x9++GE3R17HUhW19sWzzz7rxhF33XWXm4IXPvVOYy6NL5QWr0w8H6ZYqQ1y587tzrFnnnlmSltoKprqrSjTTrW8fKBMS7WFzqmamhmaahYqvqnMRF/oGkRTl2PVttOy18ro9oGy7ZSVrIxl0XRuZSOGaAoWhXjji8CIZzQw0QVe48aNj5o+oJOSL9MlwoMjSlNTvQQdjDQvWgeh0EHJF8catKtmQiholOxUC0DBIK1AoylWCo5o+WbVXdEFzhlnnOGmGvlAASAVSdTUGU0TUMqvCq+GKsJrvylUqJD5QnV3NF1Gg1oFBMIvdFRsUjWbFFDzJRigAX2sZWc1LdOXYIBWC0hvhQ0dO9Iu/56sFDScOXOmVatWLeJ1Xfzr/Bo+ZSDZDR482I230gbMlCav6cyakqlAuw+BER0XVTdjyJAhR92I0XFC51u9x4eVAFWMNzRNRseGtNO1tSpieKAk2YUKiWq6TDS62eDLuUTTl1XbLUSlDsJpmlVoWg3igxojntHdibTR6XCqm6A5bLEOUEhOOjErmyha5gh+p8CZLn5UrFd3P335mxVMVf9Q39BdrHfffdfd8ZMRI0a4AZ5PReK0bJ4KommOeGh/0aBNdQPuuece69Gjh/lAxd9UQ6J169YxzzUaxKmQIPyh2iJTp051BSVj7T+6OPYhUJQrVy43nlIgJJoff/zRZUj4sGyt2kKFRXX+jFWTSDVoVKPJdzrv6kaEL0s5q7Co/t+VWRWNbjzomKEVNH2nY4WK9yqbF/FBYAReU/FZpfamXXpTmSQdOnSwokWLJvpXBBJ+ItbycCogWbt2bdI4/z9d2IUfM8KnJ8JfFNlEeGaAjgvKMEwbTNeURK0woel3CiQlO7WDVr6LteSqClorO9GnqZkAMh4CIx6KFQxQvYD27dt7EwxIO+c1bVq8Lgh9mvNKv6AtAPz5TAktsZh2JYlKlSrZ/fffb506dfKuaX0PEmk1DY0xtLqEgiThY4xp06a5rADVGolVsyiZ/POf/3T7gWpFRJuGqKwBTWPt2rWr+YDxFv6MX3/91WXO+FSr6UQjMOIZggGpdPdbc3zTm/OqgY0Pc17pF7RFLAzgjh+DFj/b4lhFNlVcUtt9qCUhBIkipye/+eab9tVXXx2VldqqVaujlv1OZqrX9cILL7hCxaGlVzUtQPWKVAQ/VvHiZMN462iMM47PggULXE0WH5YuThQCI54hGJCKOa/0C/aR9DGA+2MYtPjZFipAq+BIrAs7XRCqyOaqVass2REkwrEog0YXwqIVNrJly+ZVozEOj8Q4I5Xqch2r/owyr3w4ryYKgRHPEAxIxZxX+gX7SPoYwEVi0EJbxDpmUGTzdwSJEE3z5s3dql7KqPK9yDvj8EiMM1Jp+eZjLe+u7QRG4sePpRWQQimc33zzTczK4NoWSgNOdkprvv32211aZ3pzXn1Av6AtYt3118oz0Qayeu3ee+91Kwn4olmzZsc1aPEBbZHqggsusP79+8cssqmVWPQeH2ipyXPOOSfmdm0LZQskO00TOR4+XORolSotPVqqVClX2F717LT0u48Yb0VinJGqZMmS9sorr9i1114bte/Mnz/fTT1D/BAY8QzBgFTdunVzaZya86oDUdo5r7og9GXOK/2CtoiGAVwkBi20RTSDBw92d8K1v6RXZNMHBIlSKYCqDBotWe1TADka3WzSsu/Dhw93K9D07dvX6tWr57JIbrjhBq+WH2W8FYlxRipde+hmbazAyLFuzOCvYyqNhyiAdTTf57wK/YK2SIuVBCI1bdrUqlevbn369Il550sXQEeOHInLPpqR0BaRKLL5O1ZiSTV79myXRTRmzBg3dVfL895yyy1WqFAh892kSZNcYeYPPvjABUVatmzp2seXu+GMt1Ixzkj1v//9z3bv3m0NGzaM2m+0TccVBRURHwRGPOZ7MIA5r9H53i/C0RYM4MIxaKEtcGwEiSLt27fP3nvvPZctodVprrnmGrd885VXXul9d1Jfeeutt+zRRx91yzsfOnTIqzZhjPE7AkXIKAiMeIZgQCrVFZkyZQpzXukX7CPHgQEcAPw1y5cvd0GRqVOn2qZNm6xw4cJet4WmLOuxZs0aa9CggX322WeW7BiHx+b7OIO+kXiZE/0LIDEFsMqVK2dPPPGEW/rJ5zmv+vs1SHnzzTetYsWKVr9+fXf3Yv/+/eYT+gVtEeskrYGq5rRqgKIaG3r4NliJ1h6+oy1SqS7V8Tzgr9WrV9tTTz3lskR++uknt3xz/vz5zTfKntF4S2MtjblUb0RjMAVJfAiKCOOtSIwz6BsZCRkjHgovgKXnvhbASsv3Oa/0C9oiLbKqaI9Y6BuRSyweT5HNWAX1kgkrsaQ6cOCAG0+ozoim4TVq1MiNKfTVt0CZVjzU+EpTJhQcue6661xb6Djiy0pe4RhvpeJcQt/ISAiMeM73YEA0vs95FfoFbRHCAC4S7UFbpEWRzVQEiVIVKVLE8uXL5wJmbdq0sWLFikU93/qQOaJ+ce6557rsEArQRmK8xXk1FvpGAgRAEAQ7duwIhgwZEhQuXDjIkiWLt22ybNmy4IknngjKlSvn2uHqq68OfEa/oC3Cffnll8Ett9wS5M6dOyhUqFDQtWvXYPbs2YGvaA/aItzevXuDUaNGBfXr13f7SIsWLYIvvvgi8Mm3334b3HHHHUHBggWD8847Lxg0aFCwdevWwEeZMmVKeWTOnPmoR+h1H8yZMyc4dOhQ8PrrrwdNmjQJqlatGpx99tnBNddcE7zxxhvBkSNHAt8x3vod51X6RiKRMQJvC2ClrRivzJlp06ZZ2bJlrUOHDu6h577yvV+Eoy0ikVVFe8RC30g9ZvhcZJOVWMz93x8PH5beVF0mrcbzySefuMyRypUru9cWLVpk3333nVv+e9y4ceYrxhhH41xC30iIhIZlkPA7W5dffrnLjChfvnzQu3fvYNWqVd78r3z99ddB586d3Z2tnDlzBi1btgwmTJjg9Z0L+gVtcSxkVdEe9I3Yfv311+DJJ58MzjjjjKBkyZLBQw89FBw8eDDw/ZihsYayI7Zs2RL4QhkS/fv3Dy666KKgZs2ari/s2bMn8NGwYcOCfPnyBZMmTYqaIaBtyhzxCeOt2HwfZ9A3EofAiGcIBqRSGmv16tW9TvUNoV/QFunhJE170Ddi279/fzBmzJjgyiuvdEH26667Lhg/fry7MPaZ70GiPn36uGDQVVddFVx77bWub3To0CHwkfaNfv36xdzet29f104+YLwVHeMM+kZGQGDEMwQDUjHnlX7BPpI+BnC0B33j2FSb69RTT3V3OJcsWRJs37496sMHBIlSVahQwdVuC1FGavbs2YPDhw8HvilevHgwb968mNvnzp3r3uMDxuGRGGfQNzISaox4Zu7cuW5+5xtvvGHvv/++rVixwi2Vdtppp7m1xFU53Zel05jzmop+QVtEw0oCtEcs9I3ItgiJdv7UuUavHz582JIdK7Gk0kp/v/zyS0Stspw5c7rXypQpYz7Jnj27W9GrZMmSUbevXbvWjUP3799vyY7xViTOJfSNjITAiGcIBqQaPny43X333fbf//7XLr/88qOWyGrWrJkNHjzY2rZta8mOfkFbRMMAjvaIhb6RiiKbqQgSpcqSJYutX7/eihYtmvKalu9duHChCwL4JFpbhNuwYYOVKlXKi+Ah461InEvoGxkJgRHPEAxIddVVV1n9+vXt4YcfjtpWTz/9tBvwfv7555bs6Be0RTQM4GiPWOgbqXQx99xzz9mHH35oBw4csCuuuMJ69uxpuXLlMt8QJIoMEjVq1MhljoSMHz/ejTvy5MmT8pqyd31si3DKFNGqdz4ERhhvReJcQt/ISAiMeIZgQKoSJUq4E3H16tWjttW8efPciVx3OZId/YK2iIYBHO0RC30j1ZNPPmm9evVyS5orGKJgesuWLd0S8L4hSJSqQ4cOx70vJTvaIhXjrUicS+gbGUqii5zgxKIAVqps2bIFa9eujdlWa9ascYXSfEC/oC2iYSUB2iMW+kYqimymYiUWgPHWH8G5hPFnRpJaMQxe2Lp1qxUvXjzmdm377bffzJc7W1mzZk13TuyhQ4fMB/QL2iIazYVv2LBhzH6jjKoFCxaYL2gP2iKaVatWWePGjVO+V+aIiq2qoKRvRo4caa+88orLmhk3bpybOjJ69Gg7cuRIon81IENgvBWJ8yp9IyOJfVWIpEQwIHJeY/v27dOd8+oL+gVtEQ0DONojFvpGKgXQtdpIuGzZstnBgwfNN+kFiXxbiQWIhvFWJM4l9I2MhMCIZwgGpGrXrt0x28uHFWmEfkFbRMMAjvaIhb6R/jFj3759dscdd3hXZJMgEZA+xluROJfQNzISAiOeIRjgV8Gz40W/oC2iYQBHe8RC30j/mNG6dWvzEUEiIH2Mt459zPA1e5u+kXisSgMAiIqVBGiPWOgboF8A+Ks4lyAjITACAAAAAAC8xao0AAAAAADAWwRGAAAAAACAtwiMAAAAAAAAbxEYAQAAAAAA3iIwAgAA4m7WrFmWJUsWa9KkyR/+t7169bLq1avH5fcCAAAgMAIAAOLu9ddft+7du9u0adNs7dq1tDgAAMgwCIwAAIC42rVrl40dO9a6dOniMkZGjBiRsm3KlCmWKVMm+/LLL61mzZqWO3duu+iii2zx4sVuu97bu3dvW7BggXufHqF/v23bNrv11lutaNGilj9/fqtfv757X9pMk1GjRln58uWtQIECdvPNN9vOnTtT3nPZZZfZXXfdZT169LDChQtbiRIl3L8L9/zzz9s555xjefLksbJly1rXrl3d3wQAAJIDgREAABBX77zzjlWuXNkqVapkrVu3tmHDhlkQBBHveeyxx2zgwIE2e/Zsy5o1q3Xs2NG93qJFC7v//vutatWqtm7dOvfQa3LjjTfaxo0b7dNPP7U5c+bY+eefb1dccYVt3bo15ecuXbrUxo0bZx999JF7TJ061fr37x/x2W+88YYLenz99df2zDPPWJ8+fWzChAkp2zNnzmwvv/yy/fDDD+69kyZNcoEUAACQHAiMAACAuE+jUUBEGjZsaNu3b3cBinB9+/a1evXqWZUqVezhhx+2mTNn2r59+yxXrlyWN29eFyxRNoceem369On2zTff2LvvvusyTSpWrGjPPfecFSxY0N57772Un3vkyBGXYXL22WfbJZdcYm3atHHZKeGqVatmPXv2dD+jbdu27ueFv+eee+6xyy+/3GWdKCvlqaeecsEeAACQHAiMAACAuNGUGAUwWrZs6b5XgEMZHwqWpA1OhJQsWdJ9VTZILJoyo+ksRYoUcYGT0GP58uUuSyREwYx8+fJF/Oy0Pzf8s6O9Z+LEiS4TpXTp0u5nKbiyZcsW27Nnz59oEQAAkNFkTfQvAAAAkpcCIIcOHbJSpUqlvKZpNDly5LDBgwenvJYtW7aU56ojEsr2iEVBEQUwVKMkLWWNRPu5oZ+d9uem954VK1bYP/7xD1cfRVktqkOibJVOnTrZgQMHXE0UAABwciMwAgAA4kIBkZEjR7raIVdddVXEtmbNmtnbb7/tao8cS/bs2e3w4cMRr6meyPr1610GirJC4kW1SxQk0d+gWiPCNBoAAJILU2kAAEBcqNjpb7/95rIrVOMj/HHDDTccNZ0mFgU+NEVm/vz5tnnzZtu/f781aNDA6tSp4wIsX3zxhcvsUF0SFXFVAde/S4UKFezgwYM2aNAgW7ZsmVvhZsiQIX/bzwcAAIlHYAQAAMSFAh8KYGiZ3LQUGFEAY+HChcf8OXqviraqAKqW5lWmiaa7fPLJJ3bppZdahw4d7Mwzz3RL8a5cudKKFy/+t/0N5557rluud8CAAS6gM3r0aOvXr9/f9vMBAEDiZQrSrpcHAAAAAADgCTJGAAAAAACAtwiMAAAAAAAAbxEYAQAAAAAA3iIwAgAAAAAAvEVgBAAAAAAAeIvACAAAAAAA8BaBEQAAAAAA4C0CIwAAAAAAwFsERgAAAAAAgLcIjAAAAAAAAG8RGAEAAAAAAN4iMAIAAAAAAMxX/w+ajPFnPm5zoQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "ps_xdt.xr_ps.plot_antenna_positions_2d()" ] }, { "cell_type": "markdown", "id": "0653e557-c381-4a4d-b864-a7fef8c2c44c", "metadata": {}, "source": [ "### Measurement Set Data Tree (ms_xdt)\n", "\n", "An individual `ms_xdt` can be accessed by using its name (from the `xr_ps.summary()` name column) as a dictionary key:" ] }, { "cell_type": "code", "execution_count": 16, "id": "34111f48", "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", "
namescan_intentsshapeexecution_block_UIDpolarizationscan_namespw_namespw_intentsfield_namesource_nameline_namefield_coordssession_reference_UIDscheduling_block_UIDproject_UIDstart_frequencyend_frequency
0Antennae_North.cal.lsrk.split_0[OBSERVE_TARGET#ON_SOURCE](50, 45, 8, 2)uid://A002/X1ff7b0/Xb[XX, YY][17, 21, 25, 9]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
1Antennae_North.cal.lsrk.split_1[OBSERVE_TARGET#ON_SOURCE](50, 55, 8, 2)uid://A002/X207fe4/X3a[XX, YY][26, 34, 38, 42]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
2Antennae_North.cal.lsrk.split_2[OBSERVE_TARGET#ON_SOURCE](15, 55, 8, 2)uid://A002/X207fe4/X3b9[XX, YY][43]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
3Antennae_North.cal.lsrk.split_3[OBSERVE_TARGET#ON_SOURCE, CALIBRATE_WVR#ON_SO...(50, 77, 8, 2)uid://A002/X2181fb/X49[XX, YY][48, 56, 60, 64]spw_0[UNSPECIFIED][NGC4038 - Antennae North_0, NGC4038 - Antenna...[NGC4038 - Antennae North_0][]Multi-Phase-Center---uid://A002/X1fd4e7/X64dT.B.D.3.439281e+113.440067e+11
\n", "
" ], "text/plain": [ " name \\\n", "0 Antennae_North.cal.lsrk.split_0 \n", "1 Antennae_North.cal.lsrk.split_1 \n", "2 Antennae_North.cal.lsrk.split_2 \n", "3 Antennae_North.cal.lsrk.split_3 \n", "\n", " scan_intents shape \\\n", "0 [OBSERVE_TARGET#ON_SOURCE] (50, 45, 8, 2) \n", "1 [OBSERVE_TARGET#ON_SOURCE] (50, 55, 8, 2) \n", "2 [OBSERVE_TARGET#ON_SOURCE] (15, 55, 8, 2) \n", "3 [OBSERVE_TARGET#ON_SOURCE, CALIBRATE_WVR#ON_SO... (50, 77, 8, 2) \n", "\n", " execution_block_UID polarization scan_name spw_name \\\n", "0 uid://A002/X1ff7b0/Xb [XX, YY] [17, 21, 25, 9] spw_0 \n", "1 uid://A002/X207fe4/X3a [XX, YY] [26, 34, 38, 42] spw_0 \n", "2 uid://A002/X207fe4/X3b9 [XX, YY] [43] spw_0 \n", "3 uid://A002/X2181fb/X49 [XX, YY] [48, 56, 60, 64] spw_0 \n", "\n", " spw_intents field_name \\\n", "0 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "1 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "2 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "3 [UNSPECIFIED] [NGC4038 - Antennae North_0, NGC4038 - Antenna... \n", "\n", " source_name line_name field_coords \\\n", "0 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "1 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "2 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "3 [NGC4038 - Antennae North_0] [] Multi-Phase-Center \n", "\n", " session_reference_UID scheduling_block_UID project_UID start_frequency \\\n", "0 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "1 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "2 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "3 --- uid://A002/X1fd4e7/X64d T.B.D. 3.439281e+11 \n", "\n", " end_frequency \n", "0 3.440067e+11 \n", "1 3.440067e+11 \n", "2 3.440067e+11 \n", "3 3.440067e+11 " ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ps_xdt.xr_ps.summary()" ] }, { "cell_type": "code", "execution_count": 17, "id": "e2ae55eb", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataTree 'Antennae_North.cal.lsrk.split_0'>\n",
       "Group: /Antennae_North.cal.lsrk.split_0\n",
       "│   Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "│                                    polarization: 2, uvw_label: 3)\n",
       "│   Coordinates:\n",
       "│     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│       field_name                  (time) <U46 9kB ...\n",
       "│       scan_name                   (time) <U21 4kB '9' '9' '9' ... '25' '25' '25'\n",
       "│     * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "│       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   Data variables:\n",
       "│       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "│       FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "│       TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "│       UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "│       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "│       WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "│   Attributes:\n",
       "│       creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "│       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│       observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "│       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│       schema_version:    4.0.0\n",
       "│       type:              visibility\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n",
       "│       Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "│                                    receptor_label: 2)\n",
       "│       Coordinates:\n",
       "│         * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "│           mount                   (antenna_name) <U6 240B ...\n",
       "│           station_name            (antenna_name) <U4 160B ...\n",
       "│           telescope_name          (antenna_name) <U4 160B ...\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 80B ...\n",
       "│       Data variables:\n",
       "│           ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B ...\n",
       "│           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B ...\n",
       "│           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B ...\n",
       "│       Attributes:\n",
       "│           overall_telescope_name:  ALMA\n",
       "│           relocatable_antennas:    True\n",
       "│           type:                    antenna\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n",
       "│       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│       Coordinates:\n",
       "│         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│           source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\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 48B ...\n",
       "│           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B ...\n",
       "│       Attributes:\n",
       "│           type:     field_and_source\n",
       "└── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n",
       "        Dimensions:              (station_name: 2, time_weather: 259,\n",
       "                                  cartesian_pos_label: 3)\n",
       "        Coordinates:\n",
       "          * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "          * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "          * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "        Data variables:\n",
       "            DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "            PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "            REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "            STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "            TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "            WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "            WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "        Attributes:\n",
       "            type:     weather
" ], "text/plain": [ "\n", "Group: /Antennae_North.cal.lsrk.split_0\n", "│ Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", "│ polarization: 2, uvw_label: 3)\n", "│ Coordinates:\n", "│ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 575kB\n",
       "Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "                                 polarization: 2, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "    field_name                  (time) <U46 9kB ...\n",
       "    scan_name                   (time) <U21 4kB '9' '9' '9' ... '25' '25' '25'\n",
       "  * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "    baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "    baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "  * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "  * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "    FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "    TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "    UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "    VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "    WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "Attributes:\n",
       "    creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "    creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "    data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "    observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "    processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "    schema_version:    4.0.0\n",
       "    type:              visibility
" ], "text/plain": [ " Size: 575kB\n", "Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", " polarization: 2, uvw_label: 3)\n", "Coordinates:\n", " * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", " field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataTree 'Antennae_North.cal.lsrk.split_0'>\n",
       "Group: /Antennae_North.cal.lsrk.split_0\n",
       "│   Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "│                                    polarization: 2, uvw_label: 3)\n",
       "│   Coordinates:\n",
       "│     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│       field_name                  (time) <U46 9kB ...\n",
       "│       scan_name                   (time) <U21 4kB '9' '9' '9' ... '25' '25' '25'\n",
       "│     * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "│       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   Data variables:\n",
       "│       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "│       FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "│       TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "│       UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "│       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "│       WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "│   Attributes:\n",
       "│       creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "│       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│       observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "│       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│       schema_version:    4.0.0\n",
       "│       type:              visibility\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n",
       "│       Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "│                                    receptor_label: 2)\n",
       "│       Coordinates:\n",
       "│         * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "│           mount                   (antenna_name) <U6 240B ...\n",
       "│           station_name            (antenna_name) <U4 160B ...\n",
       "│           telescope_name          (antenna_name) <U4 160B ...\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 80B ...\n",
       "│       Data variables:\n",
       "│           ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B ...\n",
       "│           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B ...\n",
       "│           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B ...\n",
       "│       Attributes:\n",
       "│           overall_telescope_name:  ALMA\n",
       "│           relocatable_antennas:    True\n",
       "│           type:                    antenna\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n",
       "│       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│       Coordinates:\n",
       "│         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│           source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\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 48B ...\n",
       "│           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B ...\n",
       "│       Attributes:\n",
       "│           type:     field_and_source\n",
       "└── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n",
       "        Dimensions:              (station_name: 2, time_weather: 259,\n",
       "                                  cartesian_pos_label: 3)\n",
       "        Coordinates:\n",
       "          * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "          * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "          * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "        Data variables:\n",
       "            DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "            PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "            REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "            STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "            TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "            WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "            WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "        Attributes:\n",
       "            type:     weather
" ], "text/plain": [ "\n", "Group: /Antennae_North.cal.lsrk.split_0\n", "│ Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", "│ polarization: 2, uvw_label: 3)\n", "│ Coordinates:\n", "│ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataTree 'Antennae_North.cal.lsrk.split_0'>\n",
       "Group: /Antennae_North.cal.lsrk.split_0\n",
       "│   Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "│                                    polarization: 2, uvw_label: 3)\n",
       "│   Coordinates:\n",
       "│     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│       field_name                  (time) <U46 9kB ...\n",
       "│       scan_name                   (time) <U21 4kB '9' '9' '9' ... '25' '25' '25'\n",
       "│     * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "│       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   Data variables:\n",
       "│       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "│       FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "│       TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "│       UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "│       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "│       WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "│       VISIBILITY_CORRECTED        (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "│       WEIGHT_IMAGING              (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "│   Attributes:\n",
       "│       creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "│       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│       observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "│       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│       schema_version:    4.0.0\n",
       "│       type:              visibility\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n",
       "│       Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "│                                    receptor_label: 2)\n",
       "│       Coordinates:\n",
       "│         * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "│           mount                   (antenna_name) <U6 240B ...\n",
       "│           station_name            (antenna_name) <U4 160B ...\n",
       "│           telescope_name          (antenna_name) <U4 160B ...\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 80B ...\n",
       "│       Data variables:\n",
       "│           ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B ...\n",
       "│           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B ...\n",
       "│           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B ...\n",
       "│       Attributes:\n",
       "│           overall_telescope_name:  ALMA\n",
       "│           relocatable_antennas:    True\n",
       "│           type:                    antenna\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n",
       "│       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│       Coordinates:\n",
       "│         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│           source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\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 48B 3.1...\n",
       "│           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 3.1...\n",
       "│       Attributes:\n",
       "│           type:     field_and_source\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n",
       "│       Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                 cartesian_pos_label: 3)\n",
       "│       Coordinates:\n",
       "│         * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│         * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│         * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│       Data variables:\n",
       "│           DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "│           PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "│           REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "│           STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "│           TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "│           WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "│           WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "│       Attributes:\n",
       "│           type:     weather\n",
       "└── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_corrected_xds\n",
       "        Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "        Coordinates:\n",
       "          * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "            source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\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 48B 132...\n",
       "            SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 132...\n",
       "        Attributes:\n",
       "            type:     field_and_source
" ], "text/plain": [ "\n", "Group: /Antennae_North.cal.lsrk.split_0\n", "│ Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", "│ polarization: 2, uvw_label: 3)\n", "│ Coordinates:\n", "│ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataTree 'Antennae_North.cal.lsrk.split_0'>\n",
       "Group: /Antennae_North.cal.lsrk.split_0\n",
       "│   Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "│                                    polarization: 2, uvw_label: 3)\n",
       "│   Coordinates:\n",
       "│     * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "│       field_name                  (time) <U46 9kB ...\n",
       "│       scan_name                   (time) <U21 4kB '9' '9' '9' ... '25' '25' '25'\n",
       "│     * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "│       baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "│       baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "│     * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "│     * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "│     * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "│   Data variables:\n",
       "│       EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "│       FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "│       TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "│       UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "│       VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "│       WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "│   Attributes:\n",
       "│       creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "│       creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "│       data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "│       observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "│       processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "│       schema_version:    4.0.0\n",
       "│       type:              visibility\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/antenna_xds\n",
       "│       Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "│                                    receptor_label: 2)\n",
       "│       Coordinates:\n",
       "│         * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "│           mount                   (antenna_name) <U6 240B ...\n",
       "│           station_name            (antenna_name) <U4 160B ...\n",
       "│           telescope_name          (antenna_name) <U4 160B ...\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 80B ...\n",
       "│       Data variables:\n",
       "│           ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B ...\n",
       "│           ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B ...\n",
       "│           ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B ...\n",
       "│       Attributes:\n",
       "│           overall_telescope_name:  ALMA\n",
       "│           relocatable_antennas:    True\n",
       "│           type:                    antenna\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_base_xds\n",
       "│       Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "│       Coordinates:\n",
       "│         * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "│           source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\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 48B 3.1...\n",
       "│           SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 3.1...\n",
       "│       Attributes:\n",
       "│           type:     field_and_source\n",
       "├── Group: /Antennae_North.cal.lsrk.split_0/weather_xds\n",
       "│       Dimensions:              (station_name: 2, time_weather: 259,\n",
       "│                                 cartesian_pos_label: 3)\n",
       "│       Coordinates:\n",
       "│         * station_name         (station_name) <U10 80B 'Station_11' 'Station_12'\n",
       "│         * time_weather         (time_weather) float64 2kB 1.307e+09 ... 1.307e+09\n",
       "│         * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "│       Data variables:\n",
       "│           DEW_POINT            (station_name, time_weather) float64 4kB ...\n",
       "│           PRESSURE             (station_name, time_weather) float64 4kB ...\n",
       "│           REL_HUMIDITY         (station_name, time_weather) float64 4kB ...\n",
       "│           STATION_POSITION     (station_name, cartesian_pos_label) float64 48B ...\n",
       "│           TEMPERATURE          (station_name, time_weather) float64 4kB ...\n",
       "│           WIND_DIRECTION       (station_name, time_weather) float64 4kB ...\n",
       "│           WIND_SPEED           (station_name, time_weather) float64 4kB ...\n",
       "│       Attributes:\n",
       "│           type:     weather\n",
       "└── Group: /Antennae_North.cal.lsrk.split_0/field_and_source_corrected_xds\n",
       "        Dimensions:                       (field_name: 3, sky_dir_label: 2)\n",
       "        Coordinates:\n",
       "          * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "            source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\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 48B 132...\n",
       "            SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 132...\n",
       "        Attributes:\n",
       "            type:     field_and_source
" ], "text/plain": [ "\n", "Group: /Antennae_North.cal.lsrk.split_0\n", "│ Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", "│ polarization: 2, uvw_label: 3)\n", "│ Coordinates:\n", "│ * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", "│ field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 2kB\n",
       "Dimensions:                       (field_name: 3, sky_dir_label: 2,\n",
       "                                   baseline_id: 45, frequency: 8,\n",
       "                                   polarization: 2, time: 50, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "    source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "  * sky_dir_label                 (sky_dir_label) <U3 24B 'ra' 'dec'\n",
       "  * baseline_id                   (baseline_id) int64 360B 0 1 2 3 ... 42 43 44\n",
       "  * frequency                     (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization                  (polarization) <U2 16B 'XX' 'YY'\n",
       "  * time                          (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "  * uvw_label                     (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    FIELD_PHASE_CENTER_DIRECTION  (field_name, sky_dir_label) float64 48B 3.1...\n",
       "    SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 3.1...\n",
       "Attributes:\n",
       "    type:     field_and_source
" ], "text/plain": [ " Size: 2kB\n", "Dimensions: (field_name: 3, sky_dir_label: 2,\n", " baseline_id: 45, frequency: 8,\n", " polarization: 2, time: 50, uvw_label: 3)\n", "Coordinates:\n", " * field_name (field_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 575kB\n",
       "Dimensions:                     (time: 50, baseline_id: 45, frequency: 8,\n",
       "                                 polarization: 2, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * time                        (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "    field_name                  (time) <U46 9kB ...\n",
       "    scan_name                   (time) <U21 4kB '9' '9' '9' ... '25' '25' '25'\n",
       "  * baseline_id                 (baseline_id) int64 360B 0 1 2 3 ... 41 42 43 44\n",
       "    baseline_antenna1_name      (baseline_id) <U9 2kB ...\n",
       "    baseline_antenna2_name      (baseline_id) <U9 2kB ...\n",
       "  * frequency                   (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization                (polarization) <U2 16B 'XX' 'YY'\n",
       "  * uvw_label                   (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    EFFECTIVE_INTEGRATION_TIME  (time, baseline_id) float64 18kB ...\n",
       "    FLAG                        (time, baseline_id, frequency, polarization) bool 36kB ...\n",
       "    TIME_CENTROID               (time, baseline_id) float64 18kB ...\n",
       "    UVW                         (time, baseline_id, uvw_label) float64 54kB ...\n",
       "    VISIBILITY                  (time, baseline_id, frequency, polarization) complex64 288kB ...\n",
       "    WEIGHT                      (time, baseline_id, frequency, polarization) float32 144kB ...\n",
       "Attributes:\n",
       "    creation_date:     2026-04-20T21:22:01.520254+00:00\n",
       "    creator:           {'software_name': 'xradio', 'version': '1.1.3'}\n",
       "    data_groups:       {'base': {'correlated_data': 'VISIBILITY', 'date': '20...\n",
       "    observation_info:  {'execution_block_UID': 'uid://A002/X1ff7b0/Xb', 'obse...\n",
       "    processor_info:    {'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELAT...\n",
       "    schema_version:    4.0.0\n",
       "    type:              visibility
" ], "text/plain": [ " Size: 575kB\n", "Dimensions: (time: 50, baseline_id: 45, frequency: 8,\n", " polarization: 2, uvw_label: 3)\n", "Coordinates:\n", " * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", " field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'polarization' (polarization: 2)> Size: 16B\n",
       "array(['XX', 'YY'], dtype='<U2')\n",
       "Coordinates:\n",
       "  * polarization  (polarization) <U2 16B 'XX' 'YY'
" ], "text/plain": [ " Size: 16B\n", "array(['XX', 'YY'], dtype='\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'uvw_label' (uvw_label: 3)> Size: 12B\n",
       "array(['u', 'v', 'w'], dtype='<U1')\n",
       "Coordinates:\n",
       "  * uvw_label  (uvw_label) <U1 12B 'u' 'v' 'w'
" ], "text/plain": [ " Size: 12B\n", "array(['u', 'v', 'w'], dtype='\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'baseline_id' (baseline_id: 45)> Size: 360B\n",
       "array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 13, 14, 15, 16, 17,\n",
       "       18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n",
       "       36, 37, 38, 39, 40, 41, 42, 43, 44])\n",
       "Coordinates:\n",
       "  * baseline_id             (baseline_id) int64 360B 0 1 2 3 4 ... 41 42 43 44\n",
       "    baseline_antenna1_name  (baseline_id) <U9 2kB ...\n",
       "    baseline_antenna2_name  (baseline_id) <U9 2kB ...
" ], "text/plain": [ " Size: 360B\n", "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,\n", " 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35,\n", " 36, 37, 38, 39, 40, 41, 42, 43, 44])\n", "Coordinates:\n", " * baseline_id (baseline_id) int64 360B 0 1 2 3 4 ... 41 42 43 44\n", " baseline_antenna1_name (baseline_id) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'time' (time: 50)> Size: 400B\n",
       "array([1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n",
       "       1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n",
       "       1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n",
       "       1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n",
       "       1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n",
       "       1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n",
       "       1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n",
       "       1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n",
       "       1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n",
       "       1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09])\n",
       "Coordinates:\n",
       "  * time        (time) float64 400B 1.307e+09 1.307e+09 ... 1.307e+09 1.307e+09\n",
       "    field_name  (time) <U46 9kB ...\n",
       "    scan_name   (time) <U21 4kB '9' '9' '9' '9' '9' ... '25' '25' '25' '25' '25'\n",
       "Attributes:\n",
       "    format:            unix\n",
       "    integration_time:  {'attrs': {'type': 'quantity', 'units': 's'}, 'data': ...\n",
       "    scale:             utc\n",
       "    type:              time\n",
       "    units:             s
" ], "text/plain": [ " Size: 400B\n", "array([1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n", " 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n", " 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n", " 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n", " 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n", " 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n", " 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n", " 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n", " 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n", " 1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09])\n", "Coordinates:\n", " * time (time) float64 400B 1.307e+09 1.307e+09 ... 1.307e+09 1.307e+09\n", " field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'VISIBILITY' (time: 50, baseline_id: 45, frequency: 8,\n",
       "                                polarization: 2)> Size: 288kB\n",
       "array([[[[ 0.269382-0.254866j, -0.044234-0.050127j],\n",
       "         ...,\n",
       "         [-1.009038-0.527602j, -0.030134-0.753943j]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.384126+0.222491j, -0.815531-0.617437j],\n",
       "         ...,\n",
       "         [ 0.947552+0.087211j,  0.103122+0.387794j]]],\n",
       "\n",
       "\n",
       "       ...,\n",
       "\n",
       "\n",
       "       [[[ 1.350539-0.155882j, -1.342354-0.712565j],\n",
       "         ...,\n",
       "         [ 0.181522-0.215411j,  1.145939+0.266635j]],\n",
       "\n",
       "        ...,\n",
       "\n",
       "        [[ 0.342312-0.677212j,  0.049855+0.078528j],\n",
       "         ...,\n",
       "         [-0.525983+0.780548j,  0.61932 +0.577454j]]]],\n",
       "      shape=(50, 45, 8, 2), dtype=complex64)\n",
       "Coordinates:\n",
       "  * time                    (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "    field_name              (time) <U46 9kB ...\n",
       "    scan_name               (time) <U21 4kB '9' '9' '9' '9' ... '25' '25' '25'\n",
       "  * baseline_id             (baseline_id) int64 360B 0 1 2 3 4 ... 41 42 43 44\n",
       "    baseline_antenna1_name  (baseline_id) <U9 2kB ...\n",
       "    baseline_antenna2_name  (baseline_id) <U9 2kB ...\n",
       "  * frequency               (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization            (polarization) <U2 16B 'XX' 'YY'\n",
       "Attributes:\n",
       "    type:     quanta\n",
       "    units:    unkown
" ], "text/plain": [ " Size: 288kB\n", "array([[[[ 0.269382-0.254866j, -0.044234-0.050127j],\n", " ...,\n", " [-1.009038-0.527602j, -0.030134-0.753943j]],\n", "\n", " ...,\n", "\n", " [[ 0.384126+0.222491j, -0.815531-0.617437j],\n", " ...,\n", " [ 0.947552+0.087211j, 0.103122+0.387794j]]],\n", "\n", "\n", " ...,\n", "\n", "\n", " [[[ 1.350539-0.155882j, -1.342354-0.712565j],\n", " ...,\n", " [ 0.181522-0.215411j, 1.145939+0.266635j]],\n", "\n", " ...,\n", "\n", " [[ 0.342312-0.677212j, 0.049855+0.078528j],\n", " ...,\n", " [-0.525983+0.780548j, 0.61932 +0.577454j]]]],\n", " shape=(50, 45, 8, 2), dtype=complex64)\n", "Coordinates:\n", " * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", " field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'FLAG' (time: 50, baseline_id: 45, frequency: 8,\n",
       "                          polarization: 2)> Size: 36kB\n",
       "[36000 values with dtype=bool]\n",
       "Coordinates:\n",
       "  * time                    (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "    field_name              (time) <U46 9kB ...\n",
       "    scan_name               (time) <U21 4kB '9' '9' '9' '9' ... '25' '25' '25'\n",
       "  * baseline_id             (baseline_id) int64 360B 0 1 2 3 4 ... 41 42 43 44\n",
       "    baseline_antenna1_name  (baseline_id) <U9 2kB ...\n",
       "    baseline_antenna2_name  (baseline_id) <U9 2kB ...\n",
       "  * frequency               (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization            (polarization) <U2 16B 'XX' 'YY'
" ], "text/plain": [ " Size: 36kB\n", "[36000 values with dtype=bool]\n", "Coordinates:\n", " * time (time) float64 400B 1.307e+09 ... 1.307e+09\n", " field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'VISIBILITY' ()> Size: 8B\n",
       "array(7.853105+9.024941j, dtype=complex64)\n",
       "Attributes:\n",
       "    type:     quanta\n",
       "    units:    unkown
" ], "text/plain": [ " Size: 8B\n", "array(7.853105+9.024941j, dtype=complex64)\n", "Attributes:\n", " type: quanta\n", " units: unkown" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ms_xdt.VISIBILITY.max()" ] }, { "cell_type": "code", "execution_count": 34, "id": "70946745-4ae3-4190-a603-c11fb198c0db", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'VISIBILITY' ()> Size: 8B\n",
       "array(7.853105+9.024941j, dtype=complex64)\n",
       "Attributes:\n",
       "    type:     quanta\n",
       "    units:    unkown
" ], "text/plain": [ " Size: 8B\n", "array(7.853105+9.024941j, dtype=complex64)\n", "Attributes:\n", " type: quanta\n", " units: unkown" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ms_xdt.VISIBILITY.max().compute()\n", "# ms_xdt.VISIBILITY.max().values" ] }, { "cell_type": "markdown", "id": "f3e03085-d965-4367-9643-0d74f1f8d53c", "metadata": {}, "source": [ "### Meta-data" ] }, { "cell_type": "markdown", "id": "b3693545-f26a-44a2-93d4-6cfb547cd05c", "metadata": {}, "source": [ "#### Meta-data Datasets " ] }, { "cell_type": "markdown", "id": "d00df667-65e0-44f3-adce-91b2358bf828", "metadata": {}, "source": [ "The meta-data datasets are stored in children nodes of the ms_xdt." ] }, { "cell_type": "code", "execution_count": 35, "id": "c6ca5dbd-dd9c-4057-ac32-cafac4364404", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 2kB\n",
       "Dimensions:                 (antenna_name: 10, cartesian_pos_label: 3,\n",
       "                             receptor_label: 2, baseline_id: 45, frequency: 8,\n",
       "                             polarization: 2, time: 50, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * antenna_name            (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "    mount                   (antenna_name) <U6 240B ...\n",
       "    station_name            (antenna_name) <U4 160B ...\n",
       "    telescope_name          (antenna_name) <U4 160B ...\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 80B ...\n",
       "  * baseline_id             (baseline_id) int64 360B 0 1 2 3 4 ... 41 42 43 44\n",
       "  * frequency               (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization            (polarization) <U2 16B 'XX' 'YY'\n",
       "  * time                    (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "  * uvw_label               (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    ANTENNA_DISH_DIAMETER   (antenna_name) float64 80B ...\n",
       "    ANTENNA_POSITION        (antenna_name, cartesian_pos_label) float64 240B ...\n",
       "    ANTENNA_RECEPTOR_ANGLE  (antenna_name, receptor_label) float64 160B ...\n",
       "Attributes:\n",
       "    overall_telescope_name:  ALMA\n",
       "    relocatable_antennas:    True\n",
       "    type:                    antenna
" ], "text/plain": [ " Size: 2kB\n", "Dimensions: (antenna_name: 10, cartesian_pos_label: 3,\n", " receptor_label: 2, baseline_id: 45, frequency: 8,\n", " polarization: 2, time: 50, uvw_label: 3)\n", "Coordinates:\n", " * antenna_name (antenna_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'ANTENNA_POSITION' (antenna_name: 10, cartesian_pos_label: 3)> Size: 240B\n",
       "array([[ 2225116.51436519, -5440062.8208869 , -2481625.08587685],\n",
       "       [ 2225110.431677  , -5440116.42635   , -2481514.811072  ],\n",
       "       [ 2225092.18094923, -5440046.02555079, -2481684.35928372],\n",
       "       [ 2225196.812703  , -5440052.19132   , -2481569.079809  ],\n",
       "       [ 2225111.267858  , -5440053.340209  , -2481650.399284  ],\n",
       "       [ 2225096.8413    , -5440069.063138  , -2481629.022813  ],\n",
       "       [ 2225091.352114  , -5440084.136991  , -2481601.581944  ],\n",
       "       [ 2225039.66023   , -5440119.11878   , -2481571.98053   ],\n",
       "       [ 2225096.729523  , -5440060.569471  , -2481648.625402  ],\n",
       "       [ 2225086.822689  , -5440113.374706  , -2481542.478537  ]])\n",
       "Coordinates:\n",
       "  * antenna_name         (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "    mount                (antenna_name) <U6 240B 'ALT-AZ' 'ALT-AZ' ... 'ALT-AZ'\n",
       "    station_name         (antenna_name) <U4 160B 'A015' 'T704' ... 'A017' 'J504'\n",
       "    telescope_name       (antenna_name) <U4 160B 'ALMA' 'ALMA' ... 'ALMA' 'ALMA'\n",
       "  * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "Attributes:\n",
       "    coordinate_system:   geocentric\n",
       "    frame:               ITRS\n",
       "    origin_object_name:  earth\n",
       "    type:                location\n",
       "    units:               m
" ], "text/plain": [ " Size: 240B\n", "array([[ 2225116.51436519, -5440062.8208869 , -2481625.08587685],\n", " [ 2225110.431677 , -5440116.42635 , -2481514.811072 ],\n", " [ 2225092.18094923, -5440046.02555079, -2481684.35928372],\n", " [ 2225196.812703 , -5440052.19132 , -2481569.079809 ],\n", " [ 2225111.267858 , -5440053.340209 , -2481650.399284 ],\n", " [ 2225096.8413 , -5440069.063138 , -2481629.022813 ],\n", " [ 2225091.352114 , -5440084.136991 , -2481601.581944 ],\n", " [ 2225039.66023 , -5440119.11878 , -2481571.98053 ],\n", " [ 2225096.729523 , -5440060.569471 , -2481648.625402 ],\n", " [ 2225086.822689 , -5440113.374706 , -2481542.478537 ]])\n", "Coordinates:\n", " * antenna_name (antenna_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'ANTENNA_POSITION' (antenna_name: 10, cartesian_pos_label: 3)> Size: 240B\n",
       "array([[ 2225116.51436519, -5440062.8208869 , -2481625.08587685],\n",
       "       [ 2225110.431677  , -5440116.42635   , -2481514.811072  ],\n",
       "       [ 2225092.18094923, -5440046.02555079, -2481684.35928372],\n",
       "       [ 2225196.812703  , -5440052.19132   , -2481569.079809  ],\n",
       "       [ 2225111.267858  , -5440053.340209  , -2481650.399284  ],\n",
       "       [ 2225096.8413    , -5440069.063138  , -2481629.022813  ],\n",
       "       [ 2225091.352114  , -5440084.136991  , -2481601.581944  ],\n",
       "       [ 2225039.66023   , -5440119.11878   , -2481571.98053   ],\n",
       "       [ 2225096.729523  , -5440060.569471  , -2481648.625402  ],\n",
       "       [ 2225086.822689  , -5440113.374706  , -2481542.478537  ]])\n",
       "Coordinates:\n",
       "  * antenna_name         (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "    mount                (antenna_name) <U6 240B 'ALT-AZ' 'ALT-AZ' ... 'ALT-AZ'\n",
       "    station_name         (antenna_name) <U4 160B 'A015' 'T704' ... 'A017' 'J504'\n",
       "    telescope_name       (antenna_name) <U4 160B 'ALMA' 'ALMA' ... 'ALMA' 'ALMA'\n",
       "  * cartesian_pos_label  (cartesian_pos_label) <U1 12B 'x' 'y' 'z'\n",
       "Attributes:\n",
       "    coordinate_system:   geocentric\n",
       "    frame:               ITRS\n",
       "    origin_object_name:  earth\n",
       "    type:                location\n",
       "    units:               m
" ], "text/plain": [ " Size: 240B\n", "array([[ 2225116.51436519, -5440062.8208869 , -2481625.08587685],\n", " [ 2225110.431677 , -5440116.42635 , -2481514.811072 ],\n", " [ 2225092.18094923, -5440046.02555079, -2481684.35928372],\n", " [ 2225196.812703 , -5440052.19132 , -2481569.079809 ],\n", " [ 2225111.267858 , -5440053.340209 , -2481650.399284 ],\n", " [ 2225096.8413 , -5440069.063138 , -2481629.022813 ],\n", " [ 2225091.352114 , -5440084.136991 , -2481601.581944 ],\n", " [ 2225039.66023 , -5440119.11878 , -2481571.98053 ],\n", " [ 2225096.729523 , -5440060.569471 , -2481648.625402 ],\n", " [ 2225086.822689 , -5440113.374706 , -2481542.478537 ]])\n", "Coordinates:\n", " * antenna_name (antenna_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'ANTENNA_DISH_DIAMETER' (antenna_name: 10)> Size: 80B\n",
       "array([12., 12., 12., 12., 12., 12., 12., 12., 12., 12.])\n",
       "Coordinates:\n",
       "  * antenna_name    (antenna_name) <U9 360B 'DV02_A015' ... 'PM03_J504'\n",
       "    mount           (antenna_name) <U6 240B 'ALT-AZ' 'ALT-AZ' ... 'ALT-AZ'\n",
       "    station_name    (antenna_name) <U4 160B 'A015' 'T704' ... 'A017' 'J504'\n",
       "    telescope_name  (antenna_name) <U4 160B 'ALMA' 'ALMA' ... 'ALMA' 'ALMA'\n",
       "Attributes:\n",
       "    type:     quantity\n",
       "    units:    m
" ], "text/plain": [ " Size: 80B\n", "array([12., 12., 12., 12., 12., 12., 12., 12., 12., 12.])\n", "Coordinates:\n", " * antenna_name (antenna_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'time' (time: 50)> Size: 400B\n",
       "array([1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n",
       "       1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n",
       "       1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n",
       "       1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n",
       "       1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n",
       "       1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n",
       "       1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n",
       "       1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n",
       "       1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n",
       "       1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09])\n",
       "Coordinates:\n",
       "  * time        (time) float64 400B 1.307e+09 1.307e+09 ... 1.307e+09 1.307e+09\n",
       "    field_name  (time) <U46 9kB ...\n",
       "    scan_name   (time) <U21 4kB '9' '9' '9' '9' '9' ... '25' '25' '25' '25' '25'\n",
       "Attributes:\n",
       "    format:            unix\n",
       "    integration_time:  {'attrs': {'type': 'quantity', 'units': 's'}, 'data': ...\n",
       "    scale:             utc\n",
       "    type:              time\n",
       "    units:             s
" ], "text/plain": [ " Size: 400B\n", "array([1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n", " 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n", " 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09, 1.306547e+09,\n", " 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n", " 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n", " 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09, 1.306549e+09,\n", " 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n", " 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n", " 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09, 1.306550e+09,\n", " 1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09, 1.306551e+09])\n", "Coordinates:\n", " * time (time) float64 400B 1.307e+09 1.307e+09 ... 1.307e+09 1.307e+09\n", " field_name (time) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'frequency' (frequency: 8)> Size: 64B\n",
       "array([3.439281e+11, 3.439393e+11, 3.439506e+11, 3.439618e+11, 3.439730e+11,\n",
       "       3.439843e+11, 3.439955e+11, 3.440067e+11])\n",
       "Coordinates:\n",
       "  * frequency  (frequency) float64 64B 3.439e+11 3.439e+11 ... 3.44e+11 3.44e+11\n",
       "Attributes:\n",
       "    channel_width:            {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n",
       "    observer:                 lsrk\n",
       "    reference_frequency:      {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n",
       "    spectral_window_intents:  ['UNSPECIFIED']\n",
       "    spectral_window_name:     spw_0\n",
       "    type:                     spectral_coord\n",
       "    units:                    Hz
" ], "text/plain": [ " Size: 64B\n", "array([3.439281e+11, 3.439393e+11, 3.439506e+11, 3.439618e+11, 3.439730e+11,\n", " 3.439843e+11, 3.439955e+11, 3.440067e+11])\n", "Coordinates:\n", " * frequency (frequency) float64 64B 3.439e+11 3.439e+11 ... 3.44e+11 3.44e+11\n", "Attributes:\n", " channel_width: {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n", " observer: lsrk\n", " reference_frequency: {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n", " spectral_window_intents: ['UNSPECIFIED']\n", " spectral_window_name: spw_0\n", " type: spectral_coord\n", " units: Hz" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ms_xdt.frequency" ] }, { "cell_type": "markdown", "id": "0dc866fc-01c0-4e7f-ab42-6fd63b2a7fae", "metadata": {}, "source": [ "In the frequency coordinate we have example of:\n", "- quantity given as a dict: `channel_width`\n", "- measure given as a dict: `reference_frequency` (a `spectral_coord` ~= casacore/frequency)" ] }, { "cell_type": "code", "execution_count": 43, "id": "01ed6e85-d6dc-40d4-8154-88fb3dc05ab5", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{'channel_width': {'attrs': {'type': 'quantity', 'units': 'Hz'},\n", " 'data': 11231488.981445312,\n", " 'dims': []},\n", " 'observer': 'lsrk',\n", " 'reference_frequency': {'attrs': {'observer': 'lsrk',\n", " 'type': 'spectral_coord',\n", " 'units': 'Hz'},\n", " 'data': 343928096685.9587,\n", " 'dims': []},\n", " 'spectral_window_intents': ['UNSPECIFIED'],\n", " 'spectral_window_name': 'spw_0',\n", " 'type': 'spectral_coord',\n", " 'units': 'Hz'}\n" ] } ], "source": [ "pprint.pprint(ms_xdt.frequency.attrs)" ] }, { "cell_type": "markdown", "id": "55e5e1cf-ca02-4e66-878d-82f3a405e8c4", "metadata": {}, "source": [ "#### Metadata in dicts. Observation, processor and partition info." ] }, { "cell_type": "markdown", "id": "32524972-24da-47c5-abfe-721cdbdec9af", "metadata": {}, "source": [ "The MSv4 also allows for info dictionaries in the attribute section of the dataset. This is used when no n-dimensional data is required. The relevant measures metadata is included, similarly as with coordinates and data variables (when non-id) in xarray datasets.\n", "\n", "An MSv4 has observation and processor info dicts, for example:" ] }, { "cell_type": "code", "execution_count": 44, "id": "441dcb4a-6aa3-4cf4-9717-caa27691c846", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'execution_block_UID': 'uid://A002/X1ff7b0/Xb',\n", " 'observer': ['Unknown'],\n", " 'observing_log': \"['']\",\n", " 'project_UID': 'T.B.D.',\n", " 'release_date': '1858-11-17T00:00:00',\n", " 'scheduling_block_UID': 'uid://A002/X1fd4e7/X64d'}" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ms_xdt.observation_info" ] }, { "cell_type": "code", "execution_count": 45, "id": "ec44b4e6-5443-4e0b-843c-3b980a8a6829", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'sub_type': 'ALMA_CORRELATOR_MODE', 'type': 'CORRELATOR'}" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ms_xdt.processor_info" ] }, { "cell_type": "markdown", "id": "fe9c4e05-73cc-45de-baac-8c974ce1ce6e", "metadata": {}, "source": [ "Another example is the `partition_info` dict, which describes the partition of the original MSv2 that is included in the `ms_xdt`:" ] }, { "cell_type": "code", "execution_count": 46, "id": "1d792596-ad61-434f-89f6-2d511af14859", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'spectral_window_name': 'spw_0',\n", " 'spectral_window_intents': ['UNSPECIFIED'],\n", " 'field_name': ['NGC4038 - Antennae North_0',\n", " 'NGC4038 - Antennae North_1',\n", " 'NGC4038 - Antennae North_2'],\n", " 'polarization_setup': ['XX', 'YY'],\n", " 'scan_name': ['17', '21', '25', '9'],\n", " 'source_name': ['NGC4038 - Antennae North_0'],\n", " 'scan_intents': ['OBSERVE_TARGET#ON_SOURCE'],\n", " 'line_name': [],\n", " 'data_group_name': 'base'}" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ms_xdt.xr_ms.get_partition_info()" ] }, { "cell_type": "markdown", "id": "878d9129-2aa2-4004-ad9c-2d00939dfa57", "metadata": {}, "source": [ "#### Metadata in sub-xds. Field_and_source sub-dataset." ] }, { "cell_type": "markdown", "id": "d702cedf-7334-485d-ac32-74b7c46e6323", "metadata": {}, "source": [ "A special example of sub-xds is the `field_and_source_*_xds` which is referenced from the data_groups dictionary. There can a base field and source dataset, `field_and_source_base_xds` and an arbitrary set of additional field and source datasets with different names. This way, transformations applied on the visibilities can be reflected in variables such as the field phase center or the source direction. Here data variables such as `FIELD_PHASE_CENTER` or `SOURCE_DIRECTION` are stored as `sky_coord` measures (their attributes contain the following keys: `type`, `units`, `frame`).\n", "\n", "A particular field and source dataset can be retrieved by name using the accessor `xr_ms`, function `get_field_and_source_xds()`:" ] }, { "cell_type": "code", "execution_count": 47, "id": "b6425b49-15b9-48c1-8cfd-d8e7f4ebfb69", "metadata": {}, "outputs": [], "source": [ "field_and_source_xds = ms_xdt.xr_ms.get_field_and_source_xds(data_group_name=\"base\")" ] }, { "cell_type": "code", "execution_count": 48, "id": "988a77a6-77aa-48ea-8181-f472c5d8889e", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DatasetView> Size: 2kB\n",
       "Dimensions:                       (field_name: 3, sky_dir_label: 2,\n",
       "                                   baseline_id: 45, frequency: 8,\n",
       "                                   polarization: 2, time: 50, uvw_label: 3)\n",
       "Coordinates:\n",
       "  * field_name                    (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "    source_name                   (field_name) <U46 552B 'NGC4038 - Antennae ...\n",
       "  * sky_dir_label                 (sky_dir_label) <U3 24B 'ra' 'dec'\n",
       "  * baseline_id                   (baseline_id) int64 360B 0 1 2 3 ... 42 43 44\n",
       "  * frequency                     (frequency) float64 64B 3.439e+11 ... 3.44e+11\n",
       "  * polarization                  (polarization) <U2 16B 'XX' 'YY'\n",
       "  * time                          (time) float64 400B 1.307e+09 ... 1.307e+09\n",
       "  * uvw_label                     (uvw_label) <U1 12B 'u' 'v' 'w'\n",
       "Data variables:\n",
       "    FIELD_PHASE_CENTER_DIRECTION  (field_name, sky_dir_label) float64 48B 3.1...\n",
       "    SOURCE_DIRECTION              (field_name, sky_dir_label) float64 48B 3.1...\n",
       "Attributes:\n",
       "    type:     field_and_source
" ], "text/plain": [ " Size: 2kB\n", "Dimensions: (field_name: 3, sky_dir_label: 2,\n", " baseline_id: 45, frequency: 8,\n", " polarization: 2, time: 50, uvw_label: 3)\n", "Coordinates:\n", " * field_name (field_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'FIELD_PHASE_CENTER_DIRECTION' (field_name: 3,\n",
       "                                                  sky_dir_label: 2)> Size: 48B\n",
       "array([[ 3.149769, -0.3293  ],\n",
       "       [ 3.149807, -0.3293  ],\n",
       "       [ 3.149846, -0.3293  ]])\n",
       "Coordinates:\n",
       "  * field_name     (field_name) <U46 552B 'NGC4038 - Antennae North_0' ... 'N...\n",
       "    source_name    (field_name) <U46 552B 'NGC4038 - Antennae North_0' ... 'N...\n",
       "  * sky_dir_label  (sky_dir_label) <U3 24B 'ra' 'dec'\n",
       "Attributes:\n",
       "    frame:    fk5\n",
       "    type:     sky_coord\n",
       "    units:    rad
" ], "text/plain": [ " Size: 48B\n", "array([[ 3.149769, -0.3293 ],\n", " [ 3.149807, -0.3293 ],\n", " [ 3.149846, -0.3293 ]])\n", "Coordinates:\n", " * field_name (field_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'SOURCE_DIRECTION' (field_name: 3, sky_dir_label: 2)> Size: 48B\n",
       "array([[ 3.149823, -0.329469],\n",
       "       [ 3.149823, -0.329469],\n",
       "       [ 3.149823, -0.329469]])\n",
       "Coordinates:\n",
       "  * field_name     (field_name) <U46 552B 'NGC4038 - Antennae North_0' ... 'N...\n",
       "    source_name    (field_name) <U46 552B 'NGC4038 - Antennae North_0' ... 'N...\n",
       "  * sky_dir_label  (sky_dir_label) <U3 24B 'ra' 'dec'\n",
       "Attributes:\n",
       "    frame:    fk5\n",
       "    type:     sky_coord\n",
       "    units:    rad
" ], "text/plain": [ " Size: 48B\n", "array([[ 3.149823, -0.329469],\n", " [ 3.149823, -0.329469],\n", " [ 3.149823, -0.329469]])\n", "Coordinates:\n", " * field_name (field_name) \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'frequency' (frequency: 3)> Size: 24B\n",
       "array([3.439393e+11, 3.439506e+11, 3.439618e+11])\n",
       "Coordinates:\n",
       "  * frequency  (frequency) float64 24B 3.439e+11 3.44e+11 3.44e+11\n",
       "Attributes:\n",
       "    channel_width:            {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n",
       "    observer:                 lsrk\n",
       "    reference_frequency:      {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n",
       "    spectral_window_intents:  ['UNSPECIFIED']\n",
       "    spectral_window_name:     spw_0\n",
       "    type:                     spectral_coord\n",
       "    units:                    Hz
" ], "text/plain": [ " Size: 24B\n", "array([3.439393e+11, 3.439506e+11, 3.439618e+11])\n", "Coordinates:\n", " * frequency (frequency) float64 24B 3.439e+11 3.44e+11 3.44e+11\n", "Attributes:\n", " channel_width: {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n", " observer: lsrk\n", " reference_frequency: {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n", " spectral_window_intents: ['UNSPECIFIED']\n", " spectral_window_name: spw_0\n", " type: spectral_coord\n", " units: Hz" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sel_xds = ms_xdt.sel(frequency=slice(3.43939e11, 3.4397e11))\n", "sel_xds.frequency" ] }, { "cell_type": "markdown", "id": "0099ee48-bbd0-4863-8159-c5103ec2c6fc", "metadata": {}, "source": [ "Or selection by indices, `isel()`" ] }, { "cell_type": "code", "execution_count": 52, "id": "49702c97-e726-4aff-b3cf-694b61b00869", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'frequency' (frequency: 3)> Size: 24B\n",
       "array([3.439393e+11, 3.439506e+11, 3.439618e+11])\n",
       "Coordinates:\n",
       "  * frequency  (frequency) float64 24B 3.439e+11 3.44e+11 3.44e+11\n",
       "Attributes:\n",
       "    channel_width:            {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n",
       "    observer:                 lsrk\n",
       "    reference_frequency:      {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n",
       "    spectral_window_intents:  ['UNSPECIFIED']\n",
       "    spectral_window_name:     spw_0\n",
       "    type:                     spectral_coord\n",
       "    units:                    Hz
" ], "text/plain": [ " Size: 24B\n", "array([3.439393e+11, 3.439506e+11, 3.439618e+11])\n", "Coordinates:\n", " * frequency (frequency) float64 24B 3.439e+11 3.44e+11 3.44e+11\n", "Attributes:\n", " channel_width: {'attrs': {'type': 'quantity', 'units': 'Hz'}, ...\n", " observer: lsrk\n", " reference_frequency: {'attrs': {'observer': 'lsrk', 'type': 'spectra...\n", " spectral_window_intents: ['UNSPECIFIED']\n", " spectral_window_name: spw_0\n", " type: spectral_coord\n", " units: Hz" ] }, "execution_count": 52, "metadata": {}, "output_type": "execute_result" } ], "source": [ "isel_xds = ms_xdt.isel(frequency=slice(1, 4))\n", "isel_xds.frequency" ] }, { "cell_type": "code", "execution_count": 53, "id": "8090b7ef-f91e-4b1d-b143-8c3093992761", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 53, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sel_xds.equals(isel_xds)" ] }, { "cell_type": "code", "execution_count": 54, "id": "12b8db37-1782-4c5a-9e57-d8a49d8580aa", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "True" ] }, "execution_count": 54, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sel_xds.identical(isel_xds)" ] }, { "cell_type": "code", "execution_count": 55, "id": "abcfb23a", "metadata": {}, "outputs": [], "source": [ "viper_client.close()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.13" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "56cc15cdb1b845c5ad96362bd1ba201b": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": {} }, "96e49bf91c3947989780f18568708f69": { "model_module": "@jupyter-widgets/output", "model_module_version": "1.0.0", "model_name": "OutputModel", "state": { "layout": "IPY_MODEL_c91747d23089445d8964dbb4f3c9672a", "outputs": [ { "data": { "text/html": "
\n",
          "text/plain": ""
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ]
      }
     },
     "c91747d23089445d8964dbb4f3c9672a": {
      "model_module": "@jupyter-widgets/base",
      "model_module_version": "2.0.0",
      "model_name": "LayoutModel",
      "state": {}
     },
     "f7874171f3ba493b869d1b3dec9533b7": {
      "model_module": "@jupyter-widgets/output",
      "model_module_version": "1.0.0",
      "model_name": "OutputModel",
      "state": {
       "layout": "IPY_MODEL_56cc15cdb1b845c5ad96362bd1ba201b",
       "outputs": [
        {
         "data": {
          "text/html": "
\n",
          "text/plain": ""
         },
         "metadata": {},
         "output_type": "display_data"
        }
       ]
      }
     }
    },
    "version_major": 2,
    "version_minor": 0
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}