xradio 0.0.55__py3-none-any.whl → 0.0.56__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.
Files changed (25) hide show
  1. xradio/_utils/_casacore/casacore_from_casatools.py +991 -0
  2. xradio/_utils/_casacore/tables.py +5 -1
  3. xradio/image/_util/_casacore/common.py +11 -3
  4. xradio/image/_util/_casacore/xds_from_casacore.py +10 -2
  5. xradio/image/_util/_casacore/xds_to_casacore.py +6 -2
  6. xradio/image/_util/_fits/xds_from_fits.py +27 -43
  7. xradio/image/_util/casacore.py +5 -1
  8. xradio/measurement_set/_utils/_msv2/_tables/load.py +4 -1
  9. xradio/measurement_set/_utils/_msv2/_tables/load_main_table.py +4 -1
  10. xradio/measurement_set/_utils/_msv2/_tables/read.py +18 -14
  11. xradio/measurement_set/_utils/_msv2/_tables/read_main_table.py +4 -1
  12. xradio/measurement_set/_utils/_msv2/_tables/read_subtables.py +4 -1
  13. xradio/measurement_set/_utils/_msv2/_tables/table_query.py +13 -3
  14. xradio/measurement_set/_utils/_msv2/_tables/write.py +4 -1
  15. xradio/measurement_set/_utils/_msv2/_tables/write_exp_api.py +4 -1
  16. xradio/measurement_set/_utils/_msv2/conversion.py +7 -1
  17. xradio/measurement_set/_utils/_msv2/msv4_info_dicts.py +5 -1
  18. xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py +1 -1
  19. xradio/measurement_set/_utils/_msv2/partition_queries.py +4 -1
  20. xradio/measurement_set/schema.py +3 -3
  21. {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/METADATA +42 -11
  22. {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/RECORD +25 -24
  23. {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/WHEEL +1 -1
  24. {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/licenses/LICENSE.txt +0 -0
  25. {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/top_level.txt +0 -0
@@ -1,4 +1,8 @@
1
- from casacore import tables
1
+ try:
2
+ from casacore import tables
3
+ except ImportError:
4
+ import xradio._utils._casacore.casacore_from_casatools as tables
5
+
2
6
  from contextlib import contextmanager
3
7
  from typing import Dict, Generator
4
8
 
@@ -1,7 +1,10 @@
1
- from casacore import images
1
+ try:
2
+ from casacore import images
3
+ except ImportError:
4
+ import xradio._utils._casacore.casacore_from_casatools as images
5
+
2
6
  from contextlib import contextmanager
3
- import numpy as np
4
- from typing import Dict, Generator, List, Union
7
+ from typing import Generator, List
5
8
 
6
9
 
7
10
  @contextmanager
@@ -12,6 +15,7 @@ def _open_image_ro(infile: str) -> Generator[images.image, None, None]:
12
15
  finally:
13
16
  # there is no obvious way to close a python-casacore image, so
14
17
  # just delete the object to clear it from the table cache
18
+ # image.unlock() # not necessary
15
19
  del image
16
20
 
17
21
 
@@ -31,6 +35,10 @@ def _create_new_image(
31
35
  try:
32
36
  yield image
33
37
  finally:
38
+ # Explicitly calling unlock() is important for downstream parallel reads across multiple processes.
39
+ # Without it, Dask workers may mistakenly consider a freshly written image from another process
40
+ # as invalid—even if the image directory appears to be fully written and present.
41
+ image.unlock()
34
42
  del image
35
43
 
36
44
 
@@ -9,8 +9,15 @@ import toolviper.utils.logger as logger
9
9
  import numpy as np
10
10
  import xarray as xr
11
11
  from astropy import units as u
12
- from casacore import tables
13
- from casacore.images import coordinates, image as casa_image
12
+
13
+ try:
14
+ from casacore import tables
15
+ from casacore.images import coordinates, image as casa_image
16
+ except ImportError:
17
+ import xradio._utils._casacore.casacore_from_casatools as tables
18
+ import xradio._utils._casacore.casacore_from_casatools as coordinates
19
+ from xradio._utils._casacore.casacore_from_casatools import image as casa_image
20
+
14
21
 
15
22
  from .common import (
16
23
  _active_mask,
@@ -18,6 +25,7 @@ from .common import (
18
25
  _open_image_ro,
19
26
  _pointing_center,
20
27
  )
28
+
21
29
  from ..common import (
22
30
  _compute_linear_world_values,
23
31
  _compute_velocity_values,
@@ -5,7 +5,11 @@ import dask.array as da
5
5
  import numpy as np
6
6
  import xarray as xr
7
7
  from astropy.coordinates import Angle
8
- from casacore import tables
8
+
9
+ try:
10
+ from casacore import tables
11
+ except ImportError:
12
+ import xradio._utils._casacore.casacore_from_casatools as tables
9
13
 
10
14
  from .common import _active_mask, _create_new_image, _object_name, _pointing_center
11
15
  from ..common import _aperture_or_sky, _compute_sky_reference_pixel, _doppler_types
@@ -197,7 +201,7 @@ def _history_from_xds(xds: xr.Dataset, image: str) -> None:
197
201
  def _imageinfo_dict_from_xds(xds: xr.Dataset) -> dict:
198
202
  ii = {}
199
203
  ap_sky = _aperture_or_sky(xds)
200
- ii["image_type"] = (
204
+ ii["imagetype"] = (
201
205
  xds[ap_sky].attrs["image_type"] if "image_type" in xds[ap_sky].attrs else ""
202
206
  )
203
207
  ii["objectname"] = (
@@ -1,8 +1,25 @@
1
- import astropy as ap
1
+ import copy
2
+ import re
3
+ from typing import Union
4
+
5
+ import dask
6
+ import dask.array as da
7
+ import numpy as np
8
+ import xarray as xr
2
9
  from astropy import units as u
3
10
  from astropy.io import fits
4
11
  from astropy.time import Time
5
- from ..common import (
12
+
13
+ from xradio._utils.coord_math import _deg_to_rad
14
+ from xradio._utils.dict_helpers import (
15
+ make_quantity,
16
+ make_frequency_reference_dict,
17
+ make_skycoord_dict,
18
+ make_time_measure_dict,
19
+ )
20
+
21
+ from xradio.measurement_set._utils._utils.stokes_types import stokes_types
22
+ from xradio.image._util.common import (
6
23
  _compute_linear_world_values,
7
24
  _compute_velocity_values,
8
25
  _compute_world_sph_dims,
@@ -15,20 +32,6 @@ from ..common import (
15
32
  _image_type,
16
33
  _l_m_attr_notes,
17
34
  )
18
- from xradio._utils.coord_math import _deg_to_rad
19
- from xradio._utils.dict_helpers import (
20
- make_frequency_reference_dict,
21
- make_quantity,
22
- make_skycoord_dict,
23
- make_time_measure_dict,
24
- )
25
- import copy
26
- import dask
27
- import dask.array as da
28
- import numpy as np
29
- import re
30
- from typing import Union
31
- import xarray as xr
32
35
 
33
36
 
34
37
  def _fits_image_to_xds(
@@ -507,32 +510,7 @@ def _get_time_values(helpers):
507
510
 
508
511
 
509
512
  def _get_pol_values(helpers):
510
- # as mapped in casacore Stokes.h
511
- stokes_map = [
512
- "Undefined",
513
- "I",
514
- "Q",
515
- "U",
516
- "V",
517
- "RR",
518
- "RL",
519
- "LR",
520
- "LL",
521
- "XX",
522
- "XY",
523
- "YX",
524
- "YY",
525
- "RX",
526
- "RY",
527
- "LX",
528
- "LY",
529
- "XR",
530
- "XL",
531
- "YR",
532
- "YL",
533
- "PP",
534
- "PQ",
535
- ]
513
+
536
514
  idx = helpers["ctype"].index("STOKES")
537
515
  if idx >= 0:
538
516
  vals = []
@@ -542,7 +520,13 @@ def _get_pol_values(helpers):
542
520
  stokes_start_idx = crval - cdelt * crpix
543
521
  for i in range(helpers["shape"][idx]):
544
522
  stokes_idx = (stokes_start_idx + i) * cdelt
545
- vals.append(stokes_map[stokes_idx])
523
+ if 0 <= stokes_idx < len(stokes_types):
524
+ # stokes_types provides the index-label mapping from casacore Stokes.h
525
+ vals.append(stokes_types[stokes_idx])
526
+ else:
527
+ raise RuntimeError(
528
+ "Can't find the Stokes type using the FITS header index"
529
+ )
546
530
  return vals
547
531
  else:
548
532
  return ["I"]
@@ -10,7 +10,11 @@ from typing import Union
10
10
 
11
11
  import xarray as xr
12
12
 
13
- from casacore import tables
13
+ try:
14
+ from casacore import tables
15
+ except ImportError:
16
+ import xradio._utils._casacore.casacore_from_casatools as tables
17
+
14
18
  from ._casacore.common import _open_image_ro
15
19
  from ._casacore.xds_from_casacore import (
16
20
  _add_mask,
@@ -2,7 +2,10 @@ from typing import Tuple
2
2
 
3
3
  import numpy as np
4
4
 
5
- from casacore import tables
5
+ try:
6
+ from casacore import tables
7
+ except ImportError:
8
+ import xradio._utils._casacore.casacore_from_casatools as tables
6
9
  from ....._utils.common import get_pad_value
7
10
 
8
11
 
@@ -5,7 +5,10 @@ import pandas as pd
5
5
  import numpy as np
6
6
  import xarray as xr
7
7
 
8
- from casacore import tables
8
+ try:
9
+ from casacore import tables
10
+ except ImportError:
11
+ import xradio._utils._casacore.casacore_from_casatools as tables
9
12
 
10
13
  from .load import load_col_chunk
11
14
  from .read_main_table import get_partition_ids, redim_id_data_vars, rename_vars
@@ -10,7 +10,11 @@ import pandas as pd
10
10
  import xarray as xr
11
11
 
12
12
  import astropy.units
13
- from casacore import tables
13
+
14
+ try:
15
+ from casacore import tables
16
+ except ImportError:
17
+ import xradio._utils._casacore.casacore_from_casatools as tables
14
18
 
15
19
  from .table_query import open_query, open_table_ro, TableManager
16
20
  from xradio._utils.list_and_array import get_pad_value
@@ -308,6 +312,8 @@ def add_units_measures(
308
312
  ): # Little fix for Meerkat data where the units are a string.
309
313
  cc_units = [cc_units]
310
314
 
315
+ if isinstance(cc_units, np.ndarray):
316
+ cc_units = cc_units.tolist()
311
317
  if not isinstance(cc_units, list) or not cc_units:
312
318
  logger.warning(
313
319
  f"Invalid units found for column/variable {col}: {cc_units}"
@@ -1250,22 +1256,20 @@ def read_col_conversion_numpy(
1250
1256
  # Use casacore to get the shape of a row for this column
1251
1257
  #################################################################################
1252
1258
 
1253
- # getcolshapestring() only works on columns where a row element is an
1254
- # array ie. fails for TIME
1255
- # Assumes the RuntimeError is because the column is a scalar
1256
- try:
1259
+ # getcolshapestring() only works for array-valued columns.
1260
+ # For scalar columns (e.g., EXPOSURE, TIME_CENTROID), it raises a RuntimeError.
1261
+ # So we first check if the column is scalar to avoid that.
1262
+ if tb_tool.isscalarcol(col):
1263
+ extra_dimensions = ()
1264
+ else:
1265
+ # Get the shape string for the first row of the column (e.g., "[4, 2]")
1257
1266
  shape_string = tb_tool.getcolshapestring(col)[0]
1258
- # Convert `shape_string` into a tuple that numpy understands
1267
+
1268
+ # Convert the shape string into a tuple of integers (e.g., (4, 2)) that numpy
1269
+ # understands.
1259
1270
  extra_dimensions = tuple(
1260
- [
1261
- int(idx)
1262
- for idx in shape_string.replace("[", "")
1263
- .replace("]", "")
1264
- .split(", ")
1265
- ]
1271
+ int(dim) for dim in shape_string.strip("[]").split(", ")
1266
1272
  )
1267
- except RuntimeError:
1268
- extra_dimensions = ()
1269
1273
 
1270
1274
  #################################################################################
1271
1275
 
@@ -6,7 +6,10 @@ import numpy as np
6
6
  import xarray as xr
7
7
  import pandas as pd
8
8
 
9
- from casacore import tables
9
+ try:
10
+ from casacore import tables
11
+ except ImportError:
12
+ import xradio._utils._casacore.casacore_from_casatools as tables
10
13
 
11
14
  from .read import (
12
15
  read_flat_col_chunk,
@@ -7,7 +7,10 @@ import numpy as np
7
7
  import pandas as pd
8
8
  import xarray as xr
9
9
 
10
- from casacore import tables
10
+ try:
11
+ from casacore import tables
12
+ except ImportError:
13
+ import xradio._utils._casacore.casacore_from_casatools as tables
11
14
 
12
15
  from .table_query import open_query, open_table_ro
13
16
  from .read import (
@@ -1,7 +1,10 @@
1
1
  from typing import Generator
2
2
  from contextlib import contextmanager
3
3
 
4
- from casacore import tables
4
+ try:
5
+ from casacore import tables
6
+ except ImportError:
7
+ import xradio._utils._casacore.casacore_from_casatools as tables
5
8
 
6
9
 
7
10
  @contextmanager
@@ -17,7 +20,11 @@ def open_table_ro(infile: str) -> Generator[tables.table, None, None]:
17
20
 
18
21
  @contextmanager
19
22
  def open_query(table: tables.table, query: str) -> Generator[tables.table, None, None]:
20
- ttq = tables.taql(query)
23
+
24
+ if hasattr(tables, "taql"):
25
+ ttq = tables.taql(query)
26
+ else:
27
+ ttq = table.taql(query)
21
28
  try:
22
29
  yield ttq
23
30
  finally:
@@ -43,4 +50,7 @@ class TableManager:
43
50
  self.infile, readonly=True, lockoptions={"option": "usernoread"}, ack=False
44
51
  ) as mtable:
45
52
  query = f"select * from $mtable {self.taql_where}"
46
- return tables.taql(query)
53
+ if hasattr(tables, "taql"):
54
+ return tables.taql(query)
55
+ else:
56
+ return mtable.taql(query)
@@ -4,7 +4,10 @@ from typing import Tuple
4
4
  import numpy as np
5
5
  import xarray as xr
6
6
 
7
- from casacore import tables
7
+ try:
8
+ from casacore import tables
9
+ except ImportError:
10
+ import xradio._utils._casacore.casacore_from_casatools as tables
8
11
 
9
12
 
10
13
  def revert_time(datetimes: np.ndarray) -> np.ndarray:
@@ -9,7 +9,10 @@ from ..._utils.xds_helper import flatten_xds, calc_optimal_ms_chunk_shape
9
9
  from .write import write_generic_table, write_main_table_slice
10
10
  from .write import create_table, revert_time
11
11
 
12
- from casacore import tables
12
+ try:
13
+ from casacore import tables
14
+ except ImportError:
15
+ import xradio._utils._casacore.casacore_from_casatools as tables
13
16
 
14
17
 
15
18
  # TODO: this should be consolidated with the equivalent in read_main_table,
@@ -8,9 +8,14 @@ from typing import Dict, Union
8
8
 
9
9
  import numpy as np
10
10
  import xarray as xr
11
+ import traceback
11
12
 
12
13
  import toolviper.utils.logger as logger
13
- from casacore import tables
14
+
15
+ try:
16
+ from casacore import tables
17
+ except ImportError:
18
+ import xradio._utils._casacore.casacore_from_casatools as tables
14
19
 
15
20
  from xradio.measurement_set._utils._msv2.msv4_sub_xdss import (
16
21
  create_pointing_xds,
@@ -648,6 +653,7 @@ def create_data_variables(
648
653
  )
649
654
  except Exception as exc:
650
655
  logger.debug(f"Could not load column {col}, exception: {exc}")
656
+ logger.debug(traceback.format_exc())
651
657
 
652
658
  if ("WEIGHT_SPECTRUM" == col) and (
653
659
  "WEIGHT" in col_names
@@ -1,7 +1,11 @@
1
1
  import numpy as np
2
2
  import xarray as xr
3
3
 
4
- from casacore import tables
4
+ try:
5
+ from casacore import tables
6
+ except ImportError:
7
+ import xradio._utils._casacore.casacore_from_casatools as tables
8
+
5
9
  import toolviper.utils.logger as logger
6
10
 
7
11
  from .subtables import subt_rename_ids
@@ -828,7 +828,7 @@ def create_phased_array_xds(
828
828
  }
829
829
  data_vars["COORDINATE_AXES"].attrs = {
830
830
  "type": "rotation_matrix",
831
- "units": ["undimensioned", "undimensioned", "undimensioned"],
831
+ "units": ["dimensionless", "dimensionless", "dimensionless"],
832
832
  }
833
833
  # Remove the "frame" attribute if it exists, because ELEMENT_OFFSET is
834
834
  # defined in a station-local frame for which no standard name exists
@@ -6,7 +6,10 @@ from typing import Dict, List, Tuple, Union
6
6
  import numpy as np
7
7
  import xarray as xr
8
8
 
9
- from casacore import tables
9
+ try:
10
+ from casacore import tables
11
+ except ImportError:
12
+ import xradio._utils._casacore.casacore_from_casatools as tables
10
13
 
11
14
  from ._tables.table_query import open_table_ro, open_query
12
15
  from ._tables.read import table_exists
@@ -83,8 +83,8 @@ Doppler = Literal["doppler"]
83
83
  RotationMatrix = Literal["rotation_matrix"]
84
84
 
85
85
  # Units of quantities and measures
86
- UnitsUndimensioned = list[
87
- Literal["undimensioned"]
86
+ UnitsDimensionless = list[
87
+ Literal["dimensionless"]
88
88
  ] # name consistent with casacore measures
89
89
  UnitsSeconds = list[Literal["s"]]
90
90
  UnitsHertz = list[Literal["Hz"]]
@@ -2261,7 +2261,7 @@ class PhasedArrayCoordinateAxesArray:
2261
2261
 
2262
2262
  data: Data[tuple[AntennaName, CartesianPosLabelLocal, CartesianPosLabel], float]
2263
2263
 
2264
- units: Attr[UnitsUndimensioned]
2264
+ units: Attr[UnitsDimensionless]
2265
2265
 
2266
2266
  type: Attr[RotationMatrix]
2267
2267
  """ Measure type. Should be ``"rotation_matrix"``."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xradio
3
- Version: 0.0.55
3
+ Version: 0.0.56
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
@@ -41,22 +41,21 @@ Requires-Python: <3.14,>=3.11
41
41
  Description-Content-Type: text/markdown
42
42
  License-File: LICENSE.txt
43
43
  Requires-Dist: astropy
44
- Requires-Dist: dask
45
- Requires-Dist: distributed
46
- Requires-Dist: toolviper>=0.0.11
44
+ Requires-Dist: toolviper>=0.0.12
47
45
  Requires-Dist: numba>=0.57.0
48
- Requires-Dist: numpy
49
- Requires-Dist: pytest
50
- Requires-Dist: pytest-cov
51
- Requires-Dist: pytest-html
52
46
  Requires-Dist: s3fs
53
47
  Requires-Dist: scipy
54
48
  Requires-Dist: xarray
55
49
  Requires-Dist: zarr<3,>=2
56
50
  Requires-Dist: pyarrow
57
- Requires-Dist: python_casacore>=3.6.1; sys_platform != "darwin"
58
51
  Requires-Dist: typeguard
59
52
  Requires-Dist: numcodecs<0.16
53
+ Provides-Extra: test
54
+ Requires-Dist: pytest; extra == "test"
55
+ Requires-Dist: pytest-cov; extra == "test"
56
+ Requires-Dist: pytest-html; extra == "test"
57
+ Provides-Extra: python-casacore
58
+ Requires-Dist: python_casacore>=3.6.1; sys_platform != "darwin" and extra == "python-casacore"
60
59
  Provides-Extra: interactive
61
60
  Requires-Dist: matplotlib; extra == "interactive"
62
61
  Requires-Dist: prettytable; extra == "interactive"
@@ -74,6 +73,26 @@ Requires-Dist: sphinx-autosummary-accessors; extra == "docs"
74
73
  Requires-Dist: sphinx_rtd_theme; extra == "docs"
75
74
  Requires-Dist: twine; extra == "docs"
76
75
  Requires-Dist: pandoc; extra == "docs"
76
+ Provides-Extra: all
77
+ Requires-Dist: pytest; extra == "all"
78
+ Requires-Dist: pytest-cov; extra == "all"
79
+ Requires-Dist: pytest-html; extra == "all"
80
+ Requires-Dist: python_casacore>=3.6.1; sys_platform != "darwin" and extra == "all"
81
+ Requires-Dist: matplotlib; extra == "all"
82
+ Requires-Dist: prettytable; extra == "all"
83
+ Requires-Dist: jupyterlab; extra == "all"
84
+ Requires-Dist: ipykernel; extra == "all"
85
+ Requires-Dist: ipympl; extra == "all"
86
+ Requires-Dist: ipython; extra == "all"
87
+ Requires-Dist: jupyter-client; extra == "all"
88
+ Requires-Dist: nbsphinx; extra == "all"
89
+ Requires-Dist: recommonmark; extra == "all"
90
+ Requires-Dist: scanpydoc; extra == "all"
91
+ Requires-Dist: sphinx-autoapi; extra == "all"
92
+ Requires-Dist: sphinx-autosummary-accessors; extra == "all"
93
+ Requires-Dist: sphinx_rtd_theme; extra == "all"
94
+ Requires-Dist: twine; extra == "all"
95
+ Requires-Dist: pandoc; extra == "all"
77
96
  Dynamic: license-file
78
97
 
79
98
  # xradio
@@ -93,8 +112,6 @@ It is recommended to use the conda environment manager from [miniforge](https://
93
112
  conda create --name xradio python=3.12 --no-default-packages
94
113
  conda activate xradio
95
114
  ```
96
- > 📝 On macOS it is required to pre-install `python-casacore` using `conda install -c conda-forge python-casacore`.
97
-
98
115
  XRADIO can now be installed using:
99
116
  ```sh
100
117
  pip install xradio
@@ -103,3 +120,17 @@ This will also install the minimal dependencies for XRADIO. To install the minim
103
120
  ```sh
104
121
  pip install "xradio[interactive]"
105
122
  ```
123
+ To enable conversion from MSv2 to MSv4 use (this only works for Linux):
124
+ ```sh
125
+ pip install "xradio[python-casacore]"
126
+ ```
127
+ > 📝 On macOS it is required to pre-install `python-casacore` using `conda install -c conda-forge python-casacore`.
128
+
129
+ To be able to run tests:
130
+ ```sh
131
+ pip install "xradio[test]"
132
+ ```
133
+ Multiple-dependencies can be installed using:
134
+ ```sh
135
+ pip install "xradio[interactive,python-casacore,test]"
136
+ ```
@@ -4,22 +4,23 @@ xradio/_utils/coord_math.py,sha256=n4Td6jcEX4vM49Xseuwrg6USylTGsySS6CND93DEG_8,3
4
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
- xradio/_utils/_casacore/tables.py,sha256=aq6E_4RRAHdTBCwMKrVil1cWhFU2O980DNH9IlRKXLw,1280
7
+ xradio/_utils/_casacore/casacore_from_casatools.py,sha256=O26SLSTkKA1y1nXx2yejhxd4lou0vdVcBfvaNpqojiw,30734
8
+ xradio/_utils/_casacore/tables.py,sha256=X2_-fpjcxzau8PC3ti9yAyaxrKEqbrSTkMSdVMdduUg,1379
8
9
  xradio/_utils/zarr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
10
  xradio/_utils/zarr/common.py,sha256=egj3Zma0BUK0msOBDozMa-62rHrcxrjCNE5XkkZUq70,5332
10
11
  xradio/image/__init__.py,sha256=HAD0GfopIbhdxOYckyW6S9US_dSWmZrwIl3FHUzZwrE,435
11
12
  xradio/image/image.py,sha256=bPgjJoQaur10XEnK7nw66YG68tRKFmdXFlER7GjWh64,14579
12
13
  xradio/image/_util/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
- xradio/image/_util/casacore.py,sha256=vhmPz5tCUXTN46oQLuTxkdHTxI_9qR_RfHUEeqPn9SU,4511
14
+ xradio/image/_util/casacore.py,sha256=XiBE2nzkoCv1LX_gvaN6yeB0lgvJO4WaY4HqUiPYYgc,4610
14
15
  xradio/image/_util/common.py,sha256=y2QJXTHowvjqwNPG5a-cOzl0WneH7c8c9jAVSKQeK2w,8429
15
16
  xradio/image/_util/fits.py,sha256=gyGm06fuCKqVGK7uv-ObvQNfFawUDsIOa_nQyklM3Aw,329
16
17
  xradio/image/_util/image_factory.py,sha256=Mm0ZDraD0WoNpGqy98EneFr1PxgfyNZNQwquIH2t0nc,8610
17
18
  xradio/image/_util/zarr.py,sha256=lhQqVRC1GEWClG3zRbuDr2IlQBfXeDqaLUJIN-MVMxA,1652
18
19
  xradio/image/_util/_casacore/__init__.py,sha256=OlsiRE40o1jSbBI4khgQQzgfDYbAlOMKIhO4UFlbGhg,41
19
- xradio/image/_util/_casacore/common.py,sha256=Z7Jl3AU7jVcgjNtCnvL7CCXJQAxXeEtowXBmSShuAv4,1329
20
- xradio/image/_util/_casacore/xds_from_casacore.py,sha256=uc2jQRAjKIOMh6OO8qIJs7vrNC_J6jI3bObRdL_4fP4,42865
21
- xradio/image/_util/_casacore/xds_to_casacore.py,sha256=snHCcbZQZtv329KNMd-RjYXG3pfNQeJQbOWKduY1uQc,17085
22
- xradio/image/_util/_fits/xds_from_fits.py,sha256=n2tAIOK5GoIKzYBqfwCjZULFYSz2x74aeVkCo0vmOL4,29191
20
+ xradio/image/_util/_casacore/common.py,sha256=2a88YrveQY9x8bcM7SQSn-L5y60W92rLW34OXC5VwSs,1764
21
+ xradio/image/_util/_casacore/xds_from_casacore.py,sha256=7JBJwxzJ_K6hb2sE_z3BHlKCXajZOhn8p8UoYw7uLkg,43128
22
+ xradio/image/_util/_casacore/xds_to_casacore.py,sha256=Wf_K_SmYqDBKhgdou2lVMW2MmJR03L0mR2dtNbZUIk4,17183
23
+ xradio/image/_util/_fits/xds_from_fits.py,sha256=_QakC4_7syLPM9X_g8c94aPeEeGP_R0kVGd8Lqh7umg,29173
23
24
  xradio/image/_util/_zarr/common.py,sha256=ltlj3uFa-uv8lXlDtV79QnfNmfm0tyhXN5FDAjZtjzg,308
24
25
  xradio/image/_util/_zarr/xds_from_zarr.py,sha256=KMsfaSSm9kyVoztS6pUzGNxMZzQnCxkk0kDv2GxW5Kw,4451
25
26
  xradio/image/_util/_zarr/xds_to_zarr.py,sha256=nsDvDD-kuMuMF2dDlj0jTxSW4mdR-jjIsvXHi5uIERU,2373
@@ -30,31 +31,31 @@ xradio/measurement_set/load_processing_set.py,sha256=8EPApyGy0Tmzu6Seeby7dKxvtxt
30
31
  xradio/measurement_set/measurement_set_xdt.py,sha256=kN337gyn7Q8nF4ENy292PYsmBJJLu5ozhJ3FyT5BcVo,11986
31
32
  xradio/measurement_set/open_processing_set.py,sha256=kMODJmXT2KU12L6Y2NdTV8shvLGb5PgLIOqJgMCzlHI,5308
32
33
  xradio/measurement_set/processing_set_xdt.py,sha256=CkwBbilEPh3Sy6qTdtfV2bjZ2MhTCGy3A3fYWk7JstA,64413
33
- xradio/measurement_set/schema.py,sha256=XJpL914dy-Fu0IszRvM7nt1jvkED__lM9r-XF7c8TCE,89867
34
+ xradio/measurement_set/schema.py,sha256=V6DdXp5tshtck5VOOvnf4iVAdZ2WCv4Iu42a945wuKg,89867
34
35
  xradio/measurement_set/_utils/__init__.py,sha256=XE-h1yMfr6tVD6gdUwXO1CVq5SQ6kD_oj-e5TFwslds,97
35
36
  xradio/measurement_set/_utils/msv2.py,sha256=7hnZMFoQ-s1g0ATjEupLvtdqQCdroPv-Rl5OwjqXjh8,4430
36
37
  xradio/measurement_set/_utils/zarr.py,sha256=ehXlu0Xh_UZ5Xm2RnHCxESsRZ26c3DQAO5rqMK5MwTk,3947
37
38
  xradio/measurement_set/_utils/_msv2/chunks.py,sha256=JTPk3il6fk570BjWZMoOAtsbvnLmqPcBv9EPY6A2yOs,2964
38
- xradio/measurement_set/_utils/_msv2/conversion.py,sha256=6JRYsWQfjTBG_1q_v4navZA-wTqHCkIvLTEBVa9NUXQ,53358
39
+ xradio/measurement_set/_utils/_msv2/conversion.py,sha256=OErxwczoX6ElZCtftd8bSJIHU_8vdKGVBk8MIT_KTyw,53527
39
40
  xradio/measurement_set/_utils/_msv2/create_antenna_xds.py,sha256=MhNg-tf1B0OYpLWIq9W9RFKihzsfKw0PGfBxFFgwCj4,17798
40
41
  xradio/measurement_set/_utils/_msv2/create_field_and_source_xds.py,sha256=UWimMYDf4ZgF8XJpSpnZjt0Jq14kON115PY81qSf01A,37299
41
42
  xradio/measurement_set/_utils/_msv2/descr.py,sha256=PGY39PYQj0K4th5RUv0jOWszcHlZDt6VQRTOuntCeYI,5213
42
43
  xradio/measurement_set/_utils/_msv2/msv2_msv3.py,sha256=9AKs2HWly7Ivv_Cjr11dIPGmm33_rtSBoGF9wN5ZwEQ,116
43
44
  xradio/measurement_set/_utils/_msv2/msv2_to_msv4_meta.py,sha256=gk9gU7g2Lk7dmaiLW8qecOEt574pRtGsCHnUnHXM3D0,1614
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=ykfNCPoJj7-jYeUcqqxIVKqK8t6vs-GlgMKkYIh7Cl0,31785
45
+ xradio/measurement_set/_utils/_msv2/msv4_info_dicts.py,sha256=IzPxzcHKDWwnaFIL4viY9PETMmmFiD3Druasy_5qA6g,7312
46
+ xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py,sha256=vpRbSCSAyHUZB0W7c5Ey7dbiukINojy_W3Giw4QQlk4,31785
46
47
  xradio/measurement_set/_utils/_msv2/optimised_functions.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- xradio/measurement_set/_utils/_msv2/partition_queries.py,sha256=6toOYRE6lay78r24kgUgQHOngQLuIGqQKcBTZcCk4lE,14709
48
+ xradio/measurement_set/_utils/_msv2/partition_queries.py,sha256=7r2hU6clFFMu3xtB4nx_d2TF9pXzD2JgFK6tXT286PM,14807
48
49
  xradio/measurement_set/_utils/_msv2/partitions.py,sha256=_KhRq8bSx2QxuWp9K57fLoLxcU6kvJ35e6wvJ-THbwc,12979
49
50
  xradio/measurement_set/_utils/_msv2/subtables.py,sha256=_mpOOtHexqhiqEKt7S4LVqImJoNMJKSY18vNVw83r_U,3945
50
- xradio/measurement_set/_utils/_msv2/_tables/load.py,sha256=IR3fdKlq8rgH4bHmB1JTtB5gSGuITIvErJEVjUA8rWM,1799
51
- xradio/measurement_set/_utils/_msv2/_tables/load_main_table.py,sha256=IOGHMyemLbc6kJZC81LE6l0gVdgXuIFmDty2pxb5rr0,14806
52
- xradio/measurement_set/_utils/_msv2/_tables/read.py,sha256=31GvjuaH_FjoaL-ffbN3m3KxGGQdFBCoCp8yACPg4pc,46983
53
- xradio/measurement_set/_utils/_msv2/_tables/read_main_table.py,sha256=8AbNt-AxrhPK3EPRa7xqJXffxzIgfVsv1BDfoVJEXLU,26056
54
- xradio/measurement_set/_utils/_msv2/_tables/read_subtables.py,sha256=JM6pGUQtjQR881u9VqakmbJjppEFq-EVKnEZ14JqnAw,12438
55
- xradio/measurement_set/_utils/_msv2/_tables/table_query.py,sha256=9fNIpYLOHvomsFqZ42NTr_EYiIcVCvMrlKFI0qa4erE,1217
56
- xradio/measurement_set/_utils/_msv2/_tables/write.py,sha256=43XQ-tHhbhex0eUTRknNpPEEOnNR-w1lGCox9WZ9NHE,9540
57
- xradio/measurement_set/_utils/_msv2/_tables/write_exp_api.py,sha256=GDEll8nMwkQGc6vosu4UddFL5_ld7WurRgF9hYFTRmU,15511
51
+ xradio/measurement_set/_utils/_msv2/_tables/load.py,sha256=MEgcinRSciDRfSUSTTu_br03VbiNNCBSuIFNHmf5nL0,1897
52
+ xradio/measurement_set/_utils/_msv2/_tables/load_main_table.py,sha256=Z-grLSZTODjp7d-94Cw6kT6-Zf6IYMwcomB0FGfFuv8,14904
53
+ xradio/measurement_set/_utils/_msv2/_tables/read.py,sha256=ZPNA5OH6aUkE8_7x7qGw4yhrmDfAx9nhiSLs8RaU1tk,47238
54
+ xradio/measurement_set/_utils/_msv2/_tables/read_main_table.py,sha256=vzxIdAnggRx3l3lEpVvwoo9tXbVfdxE9xGQWR8BpWzM,26154
55
+ xradio/measurement_set/_utils/_msv2/_tables/read_subtables.py,sha256=VS2NaAt08Sn5ra_GtdtFJRLUM2jy1LErkkVxMEoc0rk,12536
56
+ xradio/measurement_set/_utils/_msv2/_tables/table_query.py,sha256=Uc1zeiU-rYtCsYXpij8jzFG5NPBYvIh70qW1srn7B98,1498
57
+ xradio/measurement_set/_utils/_msv2/_tables/write.py,sha256=ZaJiqn5HgxJ0WGZPbVzO4mMmfXKq-4pwpqmXTYth79I,9638
58
+ xradio/measurement_set/_utils/_msv2/_tables/write_exp_api.py,sha256=-TNUZUMVaHChlx45BwdpXv0cMTeej-f4jgXlzKy-ncE,15609
58
59
  xradio/measurement_set/_utils/_utils/cds.py,sha256=OpvKowSheIthUbcPEv2AoKmxlEt3DqJZS5C1AYh5z10,1179
59
60
  xradio/measurement_set/_utils/_utils/partition_attrs.py,sha256=JaePHts_A0EbB4K-0a_uC98RZ2EmfjB9pDSEI11oAwk,3401
60
61
  xradio/measurement_set/_utils/_utils/stokes_types.py,sha256=DMa8TmmS7BQ99Xm8c7ZjcRapMtLbrKVxrt4f0qUIOvg,561
@@ -70,8 +71,8 @@ xradio/schema/metamodel.py,sha256=WjtW7pAVzcjLRWifRH3sQoOiN6TV810hARpOIz1M_gw,38
70
71
  xradio/schema/typing.py,sha256=8-o6fZd99kJ4FVdgBYRTIRJ-wDqpcUNXzCTfJvl3TIw,10439
71
72
  xradio/sphinx/__init__.py,sha256=VGY-7Ty3q67qpnBee0-znbiJ-Iy0F93UO--IpjEdHXc,380
72
73
  xradio/sphinx/schema_table.py,sha256=uq33habbAbReqnEG6ASKSd4UOMZGUzA3qoTX45rq84U,12373
73
- xradio-0.0.55.dist-info/licenses/LICENSE.txt,sha256=9CYIJt7riOXo9AD0eXBZviLxo_HebD-2JJI8oiWtzfg,1807
74
- xradio-0.0.55.dist-info/METADATA,sha256=iF5gDBadJWPQKJFcBEJpMUev97YRCCi1nArYtLDgWHw,5574
75
- xradio-0.0.55.dist-info/WHEEL,sha256=0CuiUZ_p9E4cD6NyLD6UG80LBXYyiSYZOKDm5lp32xk,91
76
- xradio-0.0.55.dist-info/top_level.txt,sha256=dQu27fGBZJ2Yk-gW5XeD-dZ76Xa4Xcvk60Vz-dwXp7k,7
77
- xradio-0.0.55.dist-info/RECORD,,
74
+ xradio-0.0.56.dist-info/licenses/LICENSE.txt,sha256=9CYIJt7riOXo9AD0eXBZviLxo_HebD-2JJI8oiWtzfg,1807
75
+ xradio-0.0.56.dist-info/METADATA,sha256=82A_AvtUlJtGpThOuXEbLbCm247uSuVc9-6z3665n8M,6805
76
+ xradio-0.0.56.dist-info/WHEEL,sha256=Nw36Djuh_5VDukK0H78QzOX-_FQEo6V37m3nkm96gtU,91
77
+ xradio-0.0.56.dist-info/top_level.txt,sha256=dQu27fGBZJ2Yk-gW5XeD-dZ76Xa4Xcvk60Vz-dwXp7k,7
78
+ xradio-0.0.56.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.3.1)
2
+ Generator: setuptools (80.7.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5