This package present an xarray view over observations in the MeerKAT archive.
Required Reading
You’ll need some familiarity with xarray. In particular:
Opening a dataset
Use xarray.open_datatree with engine="xarray-kat" (or let xarray infer the engine automatically from the URL). The call returns a xarray.DataTree whose children are the individual scans of the observation.
import xarray_kat # registers the "xarray-kat" engine
import xarray
token = "eyFILLMEIN"
capture_block_id = 1234567890
url = (
f"https://archive-gw-1.kat.ac.za/{capture_block_id}"
f"/{capture_block_id}_sdp_l0.full.rdb?token={token}"
)
dt = xarray.open_datatree(url, engine="xarray-kat", chunked_array_type="xarray-kat", chunks={})
Each child node is keyed "<capture_block_id>_<stream_name>/<scan_index>" and exposes the MSv4-style data variables:
VISIBILITY — complex correlator data, shape (time, baseline_id, frequency, polarization)
WEIGHT — per-sample weights, same shape as VISIBILITY
FLAG — per-sample flags, same shape as VISIBILITY
UVW — baseline UVW coordinates, shape (time, baseline_id, uvw)
Parameters
All keyword arguments below are passed through xarray.open_datatree.
- applycalstr or list of str, default ""
Calibration products to apply. Use "all" to apply every available product, an explicit list such as ["l1.G", "l1.B"] to apply specific products, or "" to skip calibration entirely.
- scan_statesiterable of str, default ("scan", "track")
Only scans whose activity-sensor state appears in this collection are included in the tree. Pass e.g. ("track",) to keep only tracking scans.
- uvw_sign_convention"casa" or "fourier", default "casa"
Sign convention for UVW coordinates. "casa" follows the antenna2 - antenna1 convention used by CASA and most radio-astronomy software. "fourier" uses the opposite sign.
- van_vleck"off" or "autocorr", default "off"
Van Vleck correction for the MeerKAT F-engine quantisation distortion. "autocorr" corrects autocorrelation amplitudes using the built-in lookup table; "off" leaves the data unchanged.
- preferred_chunksdict, optional
Preferred chunk sizes along named dimensions, e.g. {"time": 4, "frequency": 512}. These are hints; the engine uses the natural archive chunking where possible.
- capture_block_idstr, optional
Override the capture-block ID inferred from the RDB file. Rarely needed in normal use; useful when the ID embedded in the file differs from the one in the URL.
- stream_namestr, optional
Override the data-stream name inferred from the RDB file (e.g. "sdp_l0"). Useful when an observation contains multiple streams and you want to open a specific one.
Example Usage
Load a small observation entirely into memory:
import xarray_kat
import xarray
token = "eyFILLMEIN"
capture_block_id = 1234567890
url = (
f"https://archive-gw-1.kat.ac.za/{capture_block_id}"
f"/{capture_block_id}_sdp_l0.full.rdb?token={token}"
)
dt = xarray.open_datatree(url, chunked_array_type="xarray-kat", chunks={})
dt.load()
Select a subset of the data before loading:
ds = dt[f"{capture_block_id}_sdp_l0/0"].ds
ds = ds.isel(
time=slice(10, 20),
baseline_id=[1, 20, 30, 31, 32, 50],
frequency=slice(256, 768),
)
ds.load()
Apply calibration solutions and Van Vleck correction:
dt = xarray.open_datatree(
url,
chunked_array_type="xarray-kat",
chunks={},
applycal="all",
van_vleck="autocorr",
)
If dask is installed, request dask-backed chunks along specific dimensions:
# Natural (archive) chunking — most efficient
dt = xarray.open_datatree(url, chunks={})
dt = dt.compute()
# Custom chunking — may cause repeated archive requests for overlapping chunks;
# prefer rechunking on top of natural chunks, or use a cache pool
dt = xarray.open_datatree(
url, chunks={"time": 20, "baseline_id": 155, "frequency": 256}
)
dt = dt.compute()
Metadata
Release files for xarray-kat 0.0.6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| xarray_kat-0.0.6.tar.gz | 94.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| xarray_kat-0.0.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 208.3 kB
Release files / xarray_kat-0.0.6.tar.gz
| Download URL | xarray_kat-0.0.6.tar.gz |
|---|---|
| Size | 94.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
22a5b9ce9e59548d64fc2f1f049e5f9e125c3c18ac75674f49ca6a0deda13047
|
|
BLAKE2b-256 checksum How to use checksums |
08ea1f926cc23aafabe0d8151701a1fa271669719ab502e30dcc9e9d2825a990
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 29, 2026.
Transparency logRelease files / xarray_kat-0.0.6-py3-none-any.whl
| Download URL | xarray_kat-0.0.6-py3-none-any.whl |
|---|---|
| Size | 113.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3d6c6b1340897979af18a44630d0955877640d4f294c06916ebe9fee7f0f1b01
|
|
BLAKE2b-256 checksum How to use checksums |
7454882d6424018186cb50b180ba417931c6d4f8bfcb2b4a11e8c6f318c385e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on May 29, 2026.
Transparency log