xradio 0.0.51__py3-none-any.whl → 0.0.53__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,10 +1,11 @@
1
1
  import toolviper.utils.logger as logger
2
2
  import os
3
3
  import time
4
- from typing import Tuple, Union
4
+ from typing import Optional, Tuple, Union
5
5
 
6
6
  import numpy as np
7
7
  import xarray as xr
8
+ from numpy.typing import ArrayLike
8
9
 
9
10
  from xradio._utils.coord_math import convert_to_si_units
10
11
  from xradio._utils.schema import (
@@ -741,3 +742,117 @@ def create_system_calibration_xds(
741
742
  sys_cal_xds[data_var] = sys_cal_xds[data_var].astype(np.float64)
742
743
 
743
744
  return sys_cal_xds
745
+
746
+
747
+ def create_phased_array_xds(
748
+ in_file: str,
749
+ antenna_names: list[str],
750
+ receptor_label: list[str],
751
+ polarization_type: ArrayLike,
752
+ ) -> Optional[xr.Dataset]:
753
+ """
754
+ Create an Xarray Dataset containing phased array information.
755
+
756
+ Parameters
757
+ ----------
758
+ in_file : str
759
+ Path to the input MSv2.
760
+ antenna_names: DataArray or Sequence[str]
761
+ Content of the antenna_name coordinate of the antenna_xds.
762
+ receptor_label: DataArray or Sequence[str]
763
+ Content of the receptor_label coordinate of the antenna_xds. Used to
764
+ label the corresponding axis of ELEMENT_FLAG.
765
+ polarization_type: DataArray or ArrayLike
766
+ Contents of the polarization_type coordinate of the antenna_xds.
767
+ Array-like of shape (num_antennas, 2) containing the polarization
768
+ hands for each antenna.
769
+
770
+ Returns
771
+ ----------
772
+ xr.Dataset or None: If the input MS contains a PHASED_ARRAY table,
773
+ returns the Xarray Dataset containing the phased array information.
774
+ Otherwise, return None.
775
+ """
776
+
777
+ def extract_data(dataarray_or_sequence):
778
+ if hasattr(dataarray_or_sequence, "data"):
779
+ return dataarray_or_sequence.data.tolist()
780
+ return dataarray_or_sequence
781
+
782
+ antenna_names = extract_data(antenna_names)
783
+ receptor_label = extract_data(receptor_label)
784
+ polarization_type = extract_data(polarization_type)
785
+
786
+ # NOTE: We cannot use the dimension renaming option of `load_generic_table`
787
+ # here, because it leads to a dimension name collision. This is caused by
788
+ # the presence of two dimensions of size 3 in multiple arrays.
789
+ # Instead, we do the renaming manually below.
790
+ try:
791
+ raw_xds = load_generic_table(
792
+ in_file,
793
+ "PHASED_ARRAY",
794
+ # Some MSes carry COORDINATE_SYSTEM as a copy of COORDINATE_AXES
795
+ # due to a past ambiguity on the PHASED_ARRAY schema
796
+ ignore=["COORDINATE_SYSTEM", "ANTENNA_ID"],
797
+ )
798
+ except ValueError:
799
+ return None
800
+
801
+ # Defend against empty PHASED_ARRAY table.
802
+ # The test MS "AA2-Mid-sim_00000.ms" has that problem.
803
+ required_keys = {"COORDINATE_AXES", "ELEMENT_OFFSET", "ELEMENT_FLAG"}
804
+ if not all(k in raw_xds for k in required_keys):
805
+ return None
806
+
807
+ def msv4_measure(raw_name: str) -> dict:
808
+ coldesc = raw_xds.attrs["other"]["msv2"]["ctds_attrs"]["column_descriptions"]
809
+ return column_description_casacore_to_msv4_measure(coldesc[raw_name])
810
+
811
+ def make_data_variable(raw_name: str, dim_names: list[str]) -> xr.DataArray:
812
+ da = raw_xds[raw_name]
813
+ da = xr.DataArray(da.data, dims=tuple(dim_names))
814
+ return da.assign_attrs(msv4_measure(raw_name))
815
+
816
+ raw_datavar_names_and_dims = [
817
+ (
818
+ "COORDINATE_AXES",
819
+ ("antenna_name", "cartesian_pos_label_local", "cartesian_pos_label"),
820
+ ),
821
+ ("ELEMENT_OFFSET", ("antenna_name", "cartesian_pos_label_local", "element_id")),
822
+ ("ELEMENT_FLAG", ("antenna_name", "receptor_label", "element_id")),
823
+ ]
824
+
825
+ data_vars = {
826
+ name: make_data_variable(name, dims)
827
+ for name, dims in raw_datavar_names_and_dims
828
+ }
829
+ data_vars["COORDINATE_AXES"].attrs = {
830
+ "type": "rotation_matrix",
831
+ "units": ["undimensioned", "undimensioned", "undimensioned"],
832
+ }
833
+ # Remove the "frame" attribute if it exists, because ELEMENT_OFFSET is
834
+ # defined in a station-local frame for which no standard name exists
835
+ data_vars["ELEMENT_OFFSET"].attrs.pop("frame", None)
836
+ data_vars["ELEMENT_OFFSET"].attrs.update(
837
+ {
838
+ "coordinate_system": "topocentric",
839
+ "origin": "ANTENNA_POSITION",
840
+ }
841
+ )
842
+
843
+ num_elements = data_vars["ELEMENT_OFFSET"].sizes["element_id"]
844
+
845
+ data_vars = {"PHASED_ARRAY_" + key: val for key, val in data_vars.items()}
846
+ coords = {
847
+ "antenna_name": antenna_names,
848
+ "element_id": np.arange(num_elements),
849
+ "receptor_label": receptor_label,
850
+ "polarization_type": (
851
+ ("antenna_name", "receptor_label"),
852
+ polarization_type,
853
+ ),
854
+ "cartesian_pos_label": ["x", "y", "z"],
855
+ "cartesian_pos_label_local": ["p", "q", "r"],
856
+ }
857
+ attrs = {"type": "phased_array"}
858
+ return xr.Dataset(data_vars, coords, attrs)
@@ -26,6 +26,8 @@ TimeWeather = Literal["time_weather"]
26
26
  """ time dimension of weather dataset (when not interpolated to main time) """
27
27
  AntennaName = Literal["antenna_name"]
28
28
  """ Antenna name dimension """
29
+ ElementId = Literal["element_id"]
30
+ """ Element Id dimension of phased_array_xds"""
29
31
  StationName = Literal["station_name"]
30
32
  """ Station name dimension """
31
33
  ReceptorLabel = Literal["receptor_label"]
@@ -56,6 +58,8 @@ EllipsoidPosLabel = Literal["ellipsoid_pos_label"]
56
58
  """ Coordinate labels of geodetic earth location data (typically shape 3 and 'lon', 'lat', 'height')"""
57
59
  CartesianPosLabel = Literal["cartesian_pos_label"]
58
60
  """ Coordinate labels of geocentric earth location data (typically shape 3 and 'x', 'y', 'z')"""
61
+ CartesianPosLabelLocal = Literal["cartesian_pos_label_local"]
62
+ """ Coordinate labels for phased array elements positions relative to their parent station position; defined in a station-local frame (typically shape 3 and 'p', 'q', 'r')"""
59
63
  nPolynomial = Literal["n_polynomial"]
60
64
  """ For data that is represented as variable in time using Taylor expansion """
61
65
  PolyTerm = Literal["poly_term"]
@@ -76,9 +80,12 @@ SkyCoord = Literal["sky_coord"]
76
80
  SpectralCoord = Literal["spectral_coord"]
77
81
  Location = Literal["location"]
78
82
  Doppler = Literal["doppler"]
79
-
83
+ RotationMatrix = Literal["rotation_matrix"]
80
84
 
81
85
  # Units of quantities and measures
86
+ UnitsUndimensioned = list[
87
+ Literal["undimensioned"]
88
+ ] # name consistent with casacore measures
82
89
  UnitsSeconds = list[Literal["s"]]
83
90
  UnitsHertz = list[Literal["Hz"]]
84
91
  UnitsMeters = list[Literal["m"]]
@@ -562,6 +569,7 @@ AllowedLocationCoordinateSystems = Literal[
562
569
  "geodetic",
563
570
  "planetodetic",
564
571
  "orbital",
572
+ "topocentric",
565
573
  ]
566
574
 
567
575
 
@@ -2217,3 +2225,98 @@ class SpectrumXds:
2217
2225
  """The channel bandwidth that includes the effects of missing data."""
2218
2226
  FREQUENCY_CENTROID: Optional[Dataof[FrequencyCentroidArray]] = None
2219
2227
  """Includes the effects of missing data unlike ``frequency``."""
2228
+
2229
+
2230
+ @xarray_dataarray_schema
2231
+ class PhasedArrayElementOffsetArray:
2232
+ """
2233
+ Schema for PHASED_ARRAY_ELEMENT_OFFSET.
2234
+ """
2235
+
2236
+ data: Data[
2237
+ tuple[AntennaName, CartesianPosLabelLocal, ElementId],
2238
+ float,
2239
+ ]
2240
+
2241
+ units: Attr[list[Literal["m"]]]
2242
+
2243
+ type: Attr[Location]
2244
+ """ Measure type. Should be ``"location"``."""
2245
+
2246
+ coordinate_system: Attr[Literal["topocentric"]]
2247
+ """
2248
+ Coordinate system in which the element offsets are expressed.
2249
+ Should be ``"topocentric"``.
2250
+ """
2251
+
2252
+ origin: Attr[Literal["ANTENNA_POSITION"]]
2253
+ """ Origin of the coordinate system. Should be ``"ANTENNA_POSITION"``."""
2254
+
2255
+
2256
+ @xarray_dataarray_schema
2257
+ class PhasedArrayCoordinateAxesArray:
2258
+ """
2259
+ Schema for PHASED_ARRAY_COORDINATE_AXES
2260
+ """
2261
+
2262
+ data: Data[tuple[AntennaName, CartesianPosLabelLocal, CartesianPosLabel], float]
2263
+
2264
+ units: Attr[UnitsUndimensioned]
2265
+
2266
+ type: Attr[RotationMatrix]
2267
+ """ Measure type. Should be ``"rotation_matrix"``."""
2268
+
2269
+
2270
+ @xarray_dataset_schema
2271
+ class PhasedArrayXds:
2272
+ """
2273
+ Phased array dataset: define stations made of multiple receiver elements.
2274
+ """
2275
+
2276
+ # Coordinates
2277
+ antenna_name: Coordof[AntennaNameArray]
2278
+ """ Antenna name """
2279
+
2280
+ element_id: Coord[ElementId, Union[numpy.int64, numpy.int32]]
2281
+ """ Element Id within a station/antenna """
2282
+
2283
+ receptor_label: Coord[ReceptorLabel, str]
2284
+ """ Names of receptors, i.e. polarization hands. """
2285
+
2286
+ polarization_type: Coord[tuple[AntennaName, ReceptorLabel], str]
2287
+ """ Polarization type to which each receptor responds (e.g. ”R”,”L”,”X” or ”Y”).
2288
+ This is the receptor polarization type as recorded in the final correlated data (e.g. ”RR”); i.e.
2289
+ as measured after all polarization combiners. ['X','Y'], ['R','L'] """
2290
+
2291
+ cartesian_pos_label: Coord[CartesianPosLabel, str]
2292
+ """ (x,y,z) - either cartesian or ellipsoid """
2293
+
2294
+ cartesian_pos_label_local: Coord[CartesianPosLabelLocal, str]
2295
+ """ (p,q,r) - cartesian station-local frame of reference """
2296
+
2297
+ # Data variables
2298
+ PHASED_ARRAY_COORDINATE_AXES: Dataof[PhasedArrayCoordinateAxesArray]
2299
+ """
2300
+ 3x3 Rotation M such that X_geo = M X_local.
2301
+ Used to convert PHASED_ARRAY_ELEMENT_OFFSET coordinates from a station-local
2302
+ frame to a geocentric frame.
2303
+ """
2304
+
2305
+ PHASED_ARRAY_ELEMENT_OFFSET: Dataof[PhasedArrayElementOffsetArray]
2306
+ """
2307
+ Offsets of each array element from its parent station position, expressed
2308
+ in a station-local frame. Station positions are stored in
2309
+ antenna_xds.ANTENNA_POSITION.
2310
+ """
2311
+
2312
+ PHASED_ARRAY_ELEMENT_FLAG: Data[tuple[AntennaName, ReceptorLabel, ElementId], bool]
2313
+ """
2314
+ Boolean flag set to True if the data from a given polarisation receptor of a station element
2315
+ should be ignored.
2316
+ """
2317
+
2318
+ # Attributes
2319
+ type: Attr[Literal["phased_array"]]
2320
+ """
2321
+ Type of dataset. Expected to be ``phased_array``
2322
+ """
xradio/schema/check.py CHANGED
@@ -628,14 +628,15 @@ def check_datatree(
628
628
  continue
629
629
 
630
630
  # Look up schema
631
- schema = _DATASET_TYPES.get(node.attrs.get("type"))
631
+ typ = node.attrs.get("type")
632
+ schema = _DATASET_TYPES.get(typ)
632
633
  if schema is None:
633
634
  issues.add(
634
635
  SchemaIssue(
635
636
  [("", xds_name)],
636
637
  message="Unknown dataset type!",
637
638
  found=typ,
638
- expected=list(schemas.keys()),
639
+ expected=None,
639
640
  )
640
641
  )
641
642
  continue
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xradio
3
- Version: 0.0.51
3
+ Version: 0.0.53
4
4
  Summary: Xarray Radio Astronomy Data IO
5
5
  Author-email: Jan-Willem Steeb <jsteeb@nrao.edu>, Federico Montesino Pouzols <pouzols@eso.edu>, Dave Mehringer <dmehring@nrao.edu>, Peter Wortmann <peter.wortmann@skao.int>
6
6
  License: BSD 3-Clause License
@@ -80,9 +80,9 @@ Dynamic: license-file
80
80
  Xarray Radio Astronomy Data IO is still in development.
81
81
 
82
82
  [![Python 3.11 3.12 3.13](https://img.shields.io/badge/python-3.11%20%7C%203.12%20%7C%203.13-blue)](https://www.python.org/downloads/release/python-3130/)
83
- ![Linux Tests](https://github.com/casangi/xradio/actions/workflows/python-testing-linux.yml/badge.svg?branch=main)
84
- ![macOS Tests](https://github.com/casangi/xradio/actions/workflows/python-testing-macos.yml/badge.svg?branch=main)
85
- ![ipynb Tests](https://github.com/casangi/xradio/actions/workflows/run-ipynb.yml/badge.svg?branch=main)
83
+ [![Linux Tests](https://github.com/casangi/xradio/actions/workflows/python-testing-linux.yml/badge.svg?branch=main)](https://github.com/casangi/xradio/actions/workflows/python-testing-linux.yml?query=branch%3Amain)
84
+ [![macOS Tests](https://github.com/casangi/xradio/actions/workflows/python-testing-macos.yml/badge.svg?branch=main)](https://github.com/casangi/xradio/actions/workflows/python-testing-macos.yml?query=branch%3Amain)
85
+ [![ipynb Tests](https://github.com/casangi/xradio/actions/workflows/run-ipynb.yml/badge.svg?branch=main)](https://github.com/casangi/xradio/actions/workflows/run-ipynb.yml?query=branch%3Amain)
86
86
  [![Coverage](https://codecov.io/gh/casangi/xradio/branch/main/graph/badge.svg)](https://codecov.io/gh/casangi/xradio/branch/main/xradio)
87
87
  [![Documentation Status](https://readthedocs.org/projects/xradio/badge/?version=latest)](https://xradio.readthedocs.io)
88
88
  [![Version Status](https://img.shields.io/pypi/v/xradio.svg)](https://pypi.python.org/pypi/xradio/)
@@ -1,28 +1,28 @@
1
1
  xradio/__init__.py,sha256=82picDsKDBYZRlIpp5JjWsBEf_daXgiLVM7zq6rY_6Q,383
2
2
  xradio/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
3
  xradio/_utils/coord_math.py,sha256=n4Td6jcEX4vM49Xseuwrg6USylTGsySS6CND93DEG_8,3587
4
- xradio/_utils/dict_helpers.py,sha256=rUiZhicKu0rptWwXpEwo1fHdAf7hCF4yyoXpRoDrjcU,2162
4
+ xradio/_utils/dict_helpers.py,sha256=-g2ZvRufOYACzD7d_8BBFpFwhDFxIm4Psm_TRaVJZ38,2690
5
5
  xradio/_utils/list_and_array.py,sha256=fW0LDSXlPrSQguSUcZM5oy2Zw-KQVqq9vmmLS8jhc70,4340
6
6
  xradio/_utils/schema.py,sha256=iF4cU9nmBvYvmG5HxkN3fJN4BFEMmIWiBY15HI7mbbw,7472
7
7
  xradio/_utils/_casacore/tables.py,sha256=aq6E_4RRAHdTBCwMKrVil1cWhFU2O980DNH9IlRKXLw,1280
8
8
  xradio/_utils/zarr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
9
  xradio/_utils/zarr/common.py,sha256=egj3Zma0BUK0msOBDozMa-62rHrcxrjCNE5XkkZUq70,5332
10
10
  xradio/image/__init__.py,sha256=HAD0GfopIbhdxOYckyW6S9US_dSWmZrwIl3FHUzZwrE,435
11
- xradio/image/image.py,sha256=j2Rhya35RRR5NIq1kYzXHbYvKlhtKLhD28sZq_2AtPo,14042
11
+ xradio/image/image.py,sha256=Zk1OE-ixqE2epKmKtlyERG8byB41K5sOZLi0JD0bJis,14572
12
12
  xradio/image/_util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- xradio/image/_util/casacore.py,sha256=3gF720wtbU0_L6ZWZlKTvBTHFKWNdTgI4_uCwVYwnWE,4353
13
+ xradio/image/_util/casacore.py,sha256=eaiMcr546p7k9SU2s3pQDgpFyS94xW3Z1ZR3yXxVEfc,4375
14
14
  xradio/image/_util/common.py,sha256=y2QJXTHowvjqwNPG5a-cOzl0WneH7c8c9jAVSKQeK2w,8429
15
15
  xradio/image/_util/fits.py,sha256=gyGm06fuCKqVGK7uv-ObvQNfFawUDsIOa_nQyklM3Aw,329
16
16
  xradio/image/_util/image_factory.py,sha256=Mm0ZDraD0WoNpGqy98EneFr1PxgfyNZNQwquIH2t0nc,8610
17
17
  xradio/image/_util/zarr.py,sha256=lhQqVRC1GEWClG3zRbuDr2IlQBfXeDqaLUJIN-MVMxA,1652
18
18
  xradio/image/_util/_casacore/__init__.py,sha256=OlsiRE40o1jSbBI4khgQQzgfDYbAlOMKIhO4UFlbGhg,41
19
19
  xradio/image/_util/_casacore/common.py,sha256=Z7Jl3AU7jVcgjNtCnvL7CCXJQAxXeEtowXBmSShuAv4,1329
20
- xradio/image/_util/_casacore/xds_from_casacore.py,sha256=-y-VluzdvdnoK3swCDgA0UFhhajCRoPD6eY9e8c42F8,42462
21
- xradio/image/_util/_casacore/xds_to_casacore.py,sha256=Oh1Uve0y7R54VOqchm8JAxrmx4n1oHEvae7zJrVHMFg,16054
22
- xradio/image/_util/_fits/xds_from_fits.py,sha256=vadDxBvLYJudlUwLQcR7cX23hRIDMJZUHP0adKwh1WU,29853
23
- xradio/image/_util/_zarr/common.py,sha256=apMX_bF4Hr3pFGjnDFpp36KgmhTYAPBZquNkjBHrsXk,307
24
- xradio/image/_util/_zarr/xds_from_zarr.py,sha256=4b6KHmAcnrhBbCi-Z7e3Lm6l6wziJL1zaNIohmPAYDk,3601
25
- xradio/image/_util/_zarr/xds_to_zarr.py,sha256=wogXbwX8n3Sl9PHoc3_Y_LBowQsQ-94HZQFZ5NcxUZA,1624
20
+ xradio/image/_util/_casacore/xds_from_casacore.py,sha256=KOtXG7fwHyTTRyHprlbQOVcu1ZnrSv47zcP8Mu4SGSc,44036
21
+ xradio/image/_util/_casacore/xds_to_casacore.py,sha256=0tSmRHZxUcoSBWD3IMH5ymBEK2RDVPQ1-My42LF9bxw,16922
22
+ xradio/image/_util/_fits/xds_from_fits.py,sha256=kx5CNkzPn7t2wDkEK60O2VwrrUre3P9QchvsapudDHo,29189
23
+ xradio/image/_util/_zarr/common.py,sha256=ltlj3uFa-uv8lXlDtV79QnfNmfm0tyhXN5FDAjZtjzg,308
24
+ xradio/image/_util/_zarr/xds_from_zarr.py,sha256=KMsfaSSm9kyVoztS6pUzGNxMZzQnCxkk0kDv2GxW5Kw,4451
25
+ xradio/image/_util/_zarr/xds_to_zarr.py,sha256=nsDvDD-kuMuMF2dDlj0jTxSW4mdR-jjIsvXHi5uIERU,2373
26
26
  xradio/image/_util/_zarr/zarr_low_level.py,sha256=xnYm6EmVbmLxMlOSXH32SABfQBLHfr2H9ch9gYwFNXs,13338
27
27
  xradio/measurement_set/__init__.py,sha256=Vrr1Py50TvbzeZ_VMCswYNz0Wcccbf-iJDj4ArlfcJ0,870
28
28
  xradio/measurement_set/convert_msv2_to_processing_set.py,sha256=uLZjXplVPXa0XnNa-Fty85k_-fsw6ZC98Hfiwd1WF-U,9704
@@ -30,19 +30,19 @@ xradio/measurement_set/load_processing_set.py,sha256=8EPApyGy0Tmzu6Seeby7dKxvtxt
30
30
  xradio/measurement_set/measurement_set_xdt.py,sha256=kN337gyn7Q8nF4ENy292PYsmBJJLu5ozhJ3FyT5BcVo,11986
31
31
  xradio/measurement_set/open_processing_set.py,sha256=kMODJmXT2KU12L6Y2NdTV8shvLGb5PgLIOqJgMCzlHI,5308
32
32
  xradio/measurement_set/processing_set_xdt.py,sha256=CkwBbilEPh3Sy6qTdtfV2bjZ2MhTCGy3A3fYWk7JstA,64413
33
- xradio/measurement_set/schema.py,sha256=juA8v8-ZLWcKUlguGQw2t4b1Ftqn2xzwTvYmIDmRKL8,86489
33
+ xradio/measurement_set/schema.py,sha256=XJpL914dy-Fu0IszRvM7nt1jvkED__lM9r-XF7c8TCE,89867
34
34
  xradio/measurement_set/_utils/__init__.py,sha256=XE-h1yMfr6tVD6gdUwXO1CVq5SQ6kD_oj-e5TFwslds,97
35
35
  xradio/measurement_set/_utils/msv2.py,sha256=7hnZMFoQ-s1g0ATjEupLvtdqQCdroPv-Rl5OwjqXjh8,4430
36
36
  xradio/measurement_set/_utils/zarr.py,sha256=ehXlu0Xh_UZ5Xm2RnHCxESsRZ26c3DQAO5rqMK5MwTk,3947
37
37
  xradio/measurement_set/_utils/_msv2/chunks.py,sha256=JTPk3il6fk570BjWZMoOAtsbvnLmqPcBv9EPY6A2yOs,2964
38
- xradio/measurement_set/_utils/_msv2/conversion.py,sha256=Jqs2o8LFvey3X-5JWo_hTWwvgXIBZUAGhEZt0ahcjf4,53013
38
+ xradio/measurement_set/_utils/_msv2/conversion.py,sha256=6JRYsWQfjTBG_1q_v4navZA-wTqHCkIvLTEBVa9NUXQ,53358
39
39
  xradio/measurement_set/_utils/_msv2/create_antenna_xds.py,sha256=MhNg-tf1B0OYpLWIq9W9RFKihzsfKw0PGfBxFFgwCj4,17798
40
- xradio/measurement_set/_utils/_msv2/create_field_and_source_xds.py,sha256=zE9zQ7UKtgXFh0Yp7TfG92sqmivXxhe9vf-Iat4nz44,37102
40
+ xradio/measurement_set/_utils/_msv2/create_field_and_source_xds.py,sha256=UWimMYDf4ZgF8XJpSpnZjt0Jq14kON115PY81qSf01A,37299
41
41
  xradio/measurement_set/_utils/_msv2/descr.py,sha256=PGY39PYQj0K4th5RUv0jOWszcHlZDt6VQRTOuntCeYI,5213
42
42
  xradio/measurement_set/_utils/_msv2/msv2_msv3.py,sha256=9AKs2HWly7Ivv_Cjr11dIPGmm33_rtSBoGF9wN5ZwEQ,116
43
43
  xradio/measurement_set/_utils/_msv2/msv2_to_msv4_meta.py,sha256=gk9gU7g2Lk7dmaiLW8qecOEt574pRtGsCHnUnHXM3D0,1614
44
44
  xradio/measurement_set/_utils/_msv2/msv4_info_dicts.py,sha256=5-T-C5wPAPHIUY1eQXvfdLQxPPuTy6UJIZhLlMyfMqA,7213
45
- xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py,sha256=QxiAuhZoZx_oFe-JZT8tx1BzeM0onTcLWYAncMcgDqY,27426
45
+ xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py,sha256=ykfNCPoJj7-jYeUcqqxIVKqK8t6vs-GlgMKkYIh7Cl0,31785
46
46
  xradio/measurement_set/_utils/_msv2/optimised_functions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
47
  xradio/measurement_set/_utils/_msv2/partition_queries.py,sha256=6toOYRE6lay78r24kgUgQHOngQLuIGqQKcBTZcCk4lE,14709
48
48
  xradio/measurement_set/_utils/_msv2/partitions.py,sha256=_KhRq8bSx2QxuWp9K57fLoLxcU6kvJ35e6wvJ-THbwc,12979
@@ -64,14 +64,14 @@ xradio/measurement_set/_utils/_zarr/read.py,sha256=O9DiwD2Gn8WiatQ-Q6WGGSwjsXwFk
64
64
  xradio/measurement_set/_utils/_zarr/write.py,sha256=k5IfqtI44Dm4KBDiKFGhL5hN7kwNOulvVHmeP5Mi7N4,10043
65
65
  xradio/schema/__init__.py,sha256=EzEMnOtN8G_wdjo8QBRKfq5MrYgfr_nt1pfunlI6i6Q,733
66
66
  xradio/schema/bases.py,sha256=dk24pFhugCe5RjaR41xxP38FxVVsIC9bdmBdsarwFvk,17162
67
- xradio/schema/check.py,sha256=nIvGpXWkKei5cS14PvbYL29R6_YnrI1NjOPQHkUFOZY,21857
67
+ xradio/schema/check.py,sha256=1DAOeW46TC8htQSnMWOy1HkrgeZfhQJ8y9qApzKXkFo,21859
68
68
  xradio/schema/dataclass.py,sha256=w6FbFtmGnAX4SYwYar7v8-YFf6j40G7g_jvIfVCuxjc,14087
69
69
  xradio/schema/metamodel.py,sha256=WjtW7pAVzcjLRWifRH3sQoOiN6TV810hARpOIz1M_gw,3845
70
70
  xradio/schema/typing.py,sha256=8-o6fZd99kJ4FVdgBYRTIRJ-wDqpcUNXzCTfJvl3TIw,10439
71
71
  xradio/sphinx/__init__.py,sha256=VGY-7Ty3q67qpnBee0-znbiJ-Iy0F93UO--IpjEdHXc,380
72
72
  xradio/sphinx/schema_table.py,sha256=uq33habbAbReqnEG6ASKSd4UOMZGUzA3qoTX45rq84U,12373
73
- xradio-0.0.51.dist-info/licenses/LICENSE.txt,sha256=9CYIJt7riOXo9AD0eXBZviLxo_HebD-2JJI8oiWtzfg,1807
74
- xradio-0.0.51.dist-info/METADATA,sha256=Vr0JXTkBt77sN8wHUZOoEdSUXA0ydek0VS_QbFLETvU,5285
75
- xradio-0.0.51.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
76
- xradio-0.0.51.dist-info/top_level.txt,sha256=dQu27fGBZJ2Yk-gW5XeD-dZ76Xa4Xcvk60Vz-dwXp7k,7
77
- xradio-0.0.51.dist-info/RECORD,,
73
+ xradio-0.0.53.dist-info/licenses/LICENSE.txt,sha256=9CYIJt7riOXo9AD0eXBZviLxo_HebD-2JJI8oiWtzfg,1807
74
+ xradio-0.0.53.dist-info/METADATA,sha256=kKmHQUumboRASOFp-1VamR5TW9NRXzOsLlAPJX4fNxQ,5574
75
+ xradio-0.0.53.dist-info/WHEEL,sha256=wXxTzcEDnjrTwFYjLPcsW_7_XihufBwmpiBeiXNBGEA,91
76
+ xradio-0.0.53.dist-info/top_level.txt,sha256=dQu27fGBZJ2Yk-gW5XeD-dZ76Xa4Xcvk60Vz-dwXp7k,7
77
+ xradio-0.0.53.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (78.1.0)
2
+ Generator: setuptools (80.1.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5