Changelog#

X.Y.Z (DD-MM-YYYY)#

  • Bump the minimum arcae version to 0.5.8 (PR196).

  • Expose the SIGMA_SPECTRUM variable on the correlated dataset, read from MAIN::SIGMA_SPECTRUM or, if it is missing, broadcast from MAIN::SIGMA over frequency, as WEIGHT is. Fix integer selections, e.g. isel(baseline_id=1), on broadcast variables (PR195).

  • Re-introduce the simulator’s phased_array option, so that the PHASED_ARRAY sub-table is only simulated on request and no longer clutters the documentation (PR194).

  • Re-enable the documentation’s navigation sidebar, listing every page, and narrow both sidebars to give more space to the page content (GH20, PR193).

  • Fix IndexError when selecting correlated data with arrays along both time and baseline_id, e.g. isel(time=[0, 2], baseline_id=[0, 1]) (PR191).

  • List each antenna once in antenna_xds, using its first FEED row, when the FEED table has multiple rows per antenna, e.g. one per feed or time. Emit a HeterogeneousFeedWarning if RECEPTOR_ANGLE, POLARIZATION_TYPE or FOCUS_LENGTH differ between these rows. Prefer FEED rows matching the partition’s SPECTRAL_WINDOW_ID over global (-1) rows (GH186, PR187).

  • Check that secondary columns have a single row shape in linear time, instead of sorting all row shapes with np.unique, and only read the first row’s shape of fixed shape columns. This reduces the time to open a 4.6 million row MeerKAT Measurement Set with three secondary columns by about 14 seconds.

  • Reduce CI minutes: test multiple python versions per runner with uv and pytest-xdist, test a reduced matrix on PRs, cancel superseded PR runs and fix the matrix OS being ignored. Make MSv4 test corpus downloads atomic (PR181).

  • Add pointing_xds support, from the POINTING sub-table. POINTING rows overlapping each partition’s time span are presented on their native time_pointing axis, or on the correlated time axis when interpolate="pointing" is passed to open_datatree. Only the indexing columns of POINTING are read in full and POINTING data is read lazily. POINTING rows sharing a (TIME, ANTENNA_ID) key cannot be gridded: a DuplicateSubtableRowWarning is emitted and the pointing_xds is omitted, rather than failing to open (PR185).

  • Add system_calibration_xds and weather_xds support, from the SYSCAL and WEATHER sub-tables, also accepting interpolate="sys_cal" and interpolate="weather". Weather stations are identified by NS_WX_STATION_ID, where present and populated, and otherwise by ANTENNA_ID. Only stations with rows relevant to the partition are included. Sub-table rows with intervals less than a tenth of their antenna’s sampling cadence are considered instantaneous samples, valid until the next sample (PR190).

0.5.12 (02-10-2026)#

  • Require zarr >= 3 for tests and roundtrip Zarr v3 consolidated metadata (PR180).

  • Upgrade to rarg-python-patterns 0.0.5 (PR179).

  • Add phased_array_xds support, from the optional PHASED_ARRAY sub-table (PR176, PR178).

0.5.11 (22-09-2026)#

  • Add an AGENTS.MD (PR175).

  • Upgrade to arcae 0.5.5 (PR174) which supports:

    • The MSV3_PHASED_ARRAY sub-table descriptor .

    • A fix for deadlocks that could occur when closing arcae Tables.

0.5.9 (14-09-2026)#

  • Fix arcae.Table file descriptor leaks (PR172).

0.5.8 (23-07-2026)#

  • Upgrade to arcae 0.5.4, which bounds the previously unbounded tiled storage-manager caches (PR169)

  • Add driver and driver_kwargs arguments to open_dataset and open_datatree. driver_kwargs defaults to {"cache_size": 256}, bounding the caches of the main table and all subtables (including large subtables such as POINTING), with per-table overrides under the reserved "table_overrides" key (PR169)

  • Deprecate the ninstances argument in favour of driver_kwargs={"table_overrides": {"MAIN": {"ninstances": N}}}. It is still respected for now but will not be in a future release (PR169)

0.5.7 (21-07-2026)#

  • Default epoch to “” to avoid re-initialisation of MSv2Structures on every xarray.open_datatree call (PR167)

0.5.6 (26-06-2026)#

  • Resolve file:// URIs to local filesystem paths (PR164)

  • Introduce pytest != 9.1.0 version restriction (PR162)

0.5.5 (12-06-2026)#

  • Upgrade to arcae 0.5.2 (PR161)

  • Documentation fixes (PR160)

  • Replace xarray_ms.multiton.Multiton with rarg-python-patterns.multiton.Multiton (PR159)

  • Move development dependencies in dependency groups (PR158)

  • Remove *kwargs from MSv2EntryPoint methods (PR156)

  • Revert: Allow unsupported arguments in entrypoint methods (#154) (PR155)

0.5.4 (20-05-2026)#

  • Allow unsupported arguments in entrypoint methods (PR154)

0.5.3 (11-05-2026)#

  • Expand standard msv2 columns supported during reads (PR153)

  • Handle duplicate antenna name (PR151)

  • Deprecate python 3.10 support (PR150)

  • Add python 3.14 to CI testing matrix (PR150)

  • Test more comprehensively in pull requests (PR150)

  • Depend on arcae >= 0.5.1, < 0.6.0 (PR149)

0.5.1 (06-03-2026)#

  • Correct BroadcastMSv2Array initialisation of MSv2Array base class which resulted in unpickleable BroadcastMSv2Array instances. (PR147)

  • Depend on xradio to test xarray-ms MSv4 Datatree compliance (PR148)

0.5.0 (02-03-2026)#

  • Fix VisibilityCoder typo (PR145)

  • Raise an exception if no MSv4 Frame Type is available in EpochCoder.decode (PR145)

  • Replace an assert with an InvalidMeasurementSet exception if the number of TabRefTypes doesn’t match the TabRefCodes (PR145)

  • Guard frame inference in a dictionary with a KeyError (PR145)

0.3.9 (18-02-2026)#

  • Define and use an OnMissingLiteralType (PR144)

  • Correct exception name from ComplexMeasuremetSet to ComplexMeasurementSet (PR143)

  • Remove poetry-specific installation documentation (PR140)

0.3.8 (17-10-2025)#

  • Synchronise with v4.0.0 schema version (PR139)

  • Remove correlated_xds.scan_number coordinate (PR139)

  • Remove correlated_xds.sub_scan_number coordinate (PR139)

  • Add correlated_xds.scan_name coordinate (PR139)

  • Add correlated_xds.frequency.spectral_window_intents coordinate attribute (PR139)

  • Remove correlated_xds.observation_info["intents"] (PR139)

  • Rename correlated_xds.observation_info["project"] to "project_UID" (PR139)

  • Fix construction of field_and_source_xds to use unique partition field id values (PR138)

  • Formalise measures handling (PR138)

  • Remove xarray version restriction (PR137)

0.3.7 (03-10-2025)#

  • Documentation updates (PR134)

  • Add MsV2EntryPoint.supports_groups=True (PR136)

  • Temporarily restrict xarray to < 2025.9.1 (PR136) until xarray#10808 is resolved.

  • Restrict arcae to < 0.4.0 to prevent API-breaking write support changes (PR136)

  • Provide a physically realistic SPECTRAL_WINDOW::REF_FREQUENCY in simulated data (PR133)

0.3.6 (22-09-2025)#

  • Document Partitioning Strategies and Irregular Grid Handling (PR132)

  • Document MSv4 compliance and roadmap (PR131)

0.3.5 (17-09-2025)#

  • Remove deploy to test-pypi (PR130)

0.3.4 (17-09-2025)#

  • Add user-agent headers to urlib.request.urlopen (PR129)

0.3.3 (17-09-2025)#

  • Support non-standard columns (PR126)

  • Test on macos-15 (PR127)

  • Correct MSv4 schema issues (PR125)

  • Support TAI Measure encoding in time data (PR124)

  • Distinguish between time, baseline and channel irregularity (PR123)

  • Test xarray-ms against the full MSv4 Test Corpus (PR120)

  • Handle negative SOURCE_IDs in the FIELD subtable (PR122)

  • Cleanup Dataset Factories (PR118)

  • Add field_and_source_xds (PR114, PR119, PR122)

  • Fix integer selection (PR117)

  • Correct clamp of the slice stop to be min(shape[d], s.stop) (PR115)

  • Rename deprecated repository_url to repository-url (PR112)

  • Use trusted publishing when publishing to pypi (PR111)

  • Update pre-commit hooks (PR110)

  • Implement PEP 621 in pyproject.toml (PR109)

0.3.2 (21-06-2025)#

  • Upgrade to arcae 0.3.0 (PR108)

  • Call MSv2Array.__getitem__ rather than MSv2Array._getitem which is not guaranteed to be present (PR107)

0.3.1 (11-06-2025)#

  • Fix low-resolution broadcasting (PR106)

0.3.0 (10-06-2025)#

  • Upgrade to arcae 0.2.9 to elide selection checks on ignored rows (PR105)

0.2.9 (02-06-2025)#

  • Handle negative foreign keys during imputation of subtables (PR102)

  • Fix documentation typo (PR99)

  • Update Work in Progress documentation (PR98)

  • Remove stray test case print (PR97)

0.2.8 (01-04-2025)#

  • Update copyright to reflect NRF and RATT in both the BSD3 license and documentation (PR96)

0.2.7 (01-04-2025)#

  • Fix changelog formatting (PR95)

  • Add PROCESSOR_ID to the default partitioning columns (PR94)

  • Support processor_info on the correlated dataset (PR94)

0.2.6 (31-03-2025)#

  • Allow some jitter in the INTERVAL column when setting time.integration_time (PR93)

  • Impute missing FIELD, STATE and OBSERVATION subtable data (PR92)

  • Increase MSv2Structure cache timeout from 1 to 5 minutes (PR91)

  • Check for TIME and INTEGRATION_TIME in the case of multiple INTERVAL values (PR90)

0.2.5 (24-03-2025)#

  • Support field_name, scan_number and sub_scan_number coordinates on the Correlated Dataset (PR88)

  • Support fallback to WEIGHT if WEIGHT_SPECTRUM is not present (PR87)

0.2.4 (19-03-2025)#

  • Fix no-autocorrelation case when constructing partition row maps (PR85)

  • Default auto correlations to False (PR85)

  • Refactor dataset factories into factories subpackage (PR83, PR86)

  • Use a CommonStoreArgs class to default initialise common store arguments (PR83)

  • Release resources when datasets or datatrees are closed (PR81)

  • Use creator attribute to record xarray-ms version (PR80)

  • Generalise the TableFactory class into a Multiton class (PR79)

  • Refactor partitioning logic to be more robust (PR78)

  • The set of antennas related to a partition in the FEED table is used to create the antenna dataset for that partition (PR78)

  • Metadata extraction moved to dataset factories (PR78)

  • Extend the antenna dataset implementation (PR77)

  • Fix MSv2Store._partition_key typing (PR76)

  • Add observation_info attribute (PR74)

  • Add ANTENNA_DISH_DIAMETER variable to antenna dataset (PR73)

  • Add cartesian_pos_label labels to antenna dataset (PR72)

  • Allow fallback to string values in partition keys (PR71)

  • Report irregular channel widths with an IrregularGridWarning (PR70)

  • Tighten SOURCE_ID partitioning checks (PR69)

  • Check that each partition has a unique feed index pair (PR68)

  • Remove unused and commented out test cases (PR67)

0.2.3 (28-02-2025)#

  • Remove superfluous hollow DataTree node containing the Measurement Set name. Visibility partition structure changes to msname_partition_000. (PR66)

0.2.2 (27-02-2025)#

  • Add u, v and w labels to the uvw_label coordinate (PR65)

  • Remove ellipsoid_pos_label from ANTENNA_POSITION component coordinate (PR64)

  • Move README content into the Documentation (PR62)

  • Allow varying intervals in the last timestep of a partition (PR61)

  • Rename ANTENNA dataset to antenna_xds (PR60)

  • Depend on arcae ^0.2.7 (PR59)

  • Fix test cases that succeeded after attributes changed (PR57)

  • Make MSv2Array transform a property (PR56)

  • Further partitioning improvement and alignment with MSv4 (PR55)

  • Use epoch to distinguish multiple instances of the same dataset (PR54)

  • Use np.logical_or.reduce for generating diffs over more than 2 partitioning arrays (PR53)

  • Improve Missing Column error (PR52)

  • Fix open_datatree instructions in the README (PR51)

  • Skip test case that segfaults on numpy 2.2.2 (PR50)

  • Upgrade to xarray 2025.1.1 (PR49)

  • Add documentation link to MSv2EntryPoint class (PR47)

  • Change visibility partition structure to msname/partition-001 (PR46)

  • Rename baseline dimension to baseline_id (PR44)

  • Loosen xarray version requirement to >= 2024.9.0 (PR44)

  • Change partition_chunks to preferred_chunks (PR44)

  • Allow arcae to vary in the 0.2.x range (PR42)

  • Pin xarray to 2024.9.0 (PR42)

  • Add test case for irregular grids (PR39, PR40, PR41)

  • Rename MSv2PartitionEntryPoint to MSv2EntryPoint (PR38)

  • Move chunks kwarg functionality in MSv2PartitionEntryPoint.open_datatree to partition_chunks (PR37)

  • Set MSv4 version to 4.0.0 (PR34)

  • Fix changelog highlighting in install instructions (PR33)

  • Add basic read tests (PR32)

  • Fix Dataset and DataTree equivalence checks in test cases (PR31)

0.2.1 (04-10-2024)#

  • Parallelise row partitioning (PR28, PR30)

  • Upgrade to arcae 0.2.5 (PR29)

  • Rename antenna{1,2}_name to baseline_antenna{1,2}_name (PR26)

  • Update Cloud Storage write documentation (PR25, PR27)

  • Use datatree as the primary representation (PR24)

  • Remove unnecessary coordinate attributes (PR23)

  • Disable navigation sidebars (PR19)

  • Add Github Issue and PR templates (PR17)

  • Improve key resolution (PR15)

  • Add a basic tutorial (PR13)

0.2.0 (11-09-2024)#

  • Initial release