xradio 0.0.49__tar.gz → 0.0.50__tar.gz

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 (83) hide show
  1. {xradio-0.0.49/src/xradio.egg-info → xradio-0.0.50}/PKG-INFO +2 -1
  2. {xradio-0.0.49 → xradio-0.0.50}/pyproject.toml +3 -2
  3. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/conversion.py +2 -1
  4. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/measurement_set_xdt.py +126 -4
  5. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/processing_set_xdt.py +5 -5
  6. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/schema.py +2 -0
  7. {xradio-0.0.49 → xradio-0.0.50/src/xradio.egg-info}/PKG-INFO +2 -1
  8. {xradio-0.0.49 → xradio-0.0.50}/src/xradio.egg-info/requires.txt +1 -0
  9. {xradio-0.0.49 → xradio-0.0.50}/LICENSE.txt +0 -0
  10. {xradio-0.0.49 → xradio-0.0.50}/MANIFEST.in +0 -0
  11. {xradio-0.0.49 → xradio-0.0.50}/README.md +0 -0
  12. {xradio-0.0.49 → xradio-0.0.50}/setup.cfg +0 -0
  13. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/__init__.py +0 -0
  14. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/__init__.py +0 -0
  15. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/_casacore/tables.py +0 -0
  16. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/coord_math.py +0 -0
  17. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/dict_helpers.py +0 -0
  18. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/list_and_array.py +0 -0
  19. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/schema.py +0 -0
  20. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/zarr/__init__.py +0 -0
  21. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/_utils/zarr/common.py +0 -0
  22. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/__init__.py +0 -0
  23. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/__init__.py +0 -0
  24. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_casacore/__init__.py +0 -0
  25. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_casacore/common.py +0 -0
  26. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_casacore/xds_from_casacore.py +0 -0
  27. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_casacore/xds_to_casacore.py +0 -0
  28. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_fits/xds_from_fits.py +0 -0
  29. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_zarr/common.py +0 -0
  30. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_zarr/xds_from_zarr.py +0 -0
  31. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_zarr/xds_to_zarr.py +0 -0
  32. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/_zarr/zarr_low_level.py +0 -0
  33. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/casacore.py +0 -0
  34. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/common.py +0 -0
  35. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/fits.py +0 -0
  36. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/image_factory.py +0 -0
  37. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/_util/zarr.py +0 -0
  38. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/image/image.py +0 -0
  39. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/__init__.py +0 -0
  40. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/__init__.py +0 -0
  41. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/load.py +0 -0
  42. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/load_main_table.py +0 -0
  43. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/read.py +0 -0
  44. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/read_main_table.py +0 -0
  45. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/read_subtables.py +0 -0
  46. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/table_query.py +0 -0
  47. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/write.py +0 -0
  48. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/_tables/write_exp_api.py +0 -0
  49. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/chunks.py +0 -0
  50. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/create_antenna_xds.py +0 -0
  51. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/create_field_and_source_xds.py +0 -0
  52. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/descr.py +0 -0
  53. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/msv2_msv3.py +0 -0
  54. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/msv2_to_msv4_meta.py +0 -0
  55. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/msv4_info_dicts.py +0 -0
  56. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py +0 -0
  57. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/optimised_functions.py +0 -0
  58. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/partition_queries.py +0 -0
  59. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/partitions.py +0 -0
  60. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_msv2/subtables.py +0 -0
  61. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_utils/cds.py +0 -0
  62. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_utils/partition_attrs.py +0 -0
  63. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_utils/stokes_types.py +0 -0
  64. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_utils/xds_helper.py +0 -0
  65. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_zarr/encoding.py +0 -0
  66. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_zarr/read.py +0 -0
  67. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/_zarr/write.py +0 -0
  68. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/msv2.py +0 -0
  69. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/_utils/zarr.py +0 -0
  70. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/convert_msv2_to_processing_set.py +0 -0
  71. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/load_processing_set.py +0 -0
  72. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/measurement_set/open_processing_set.py +0 -0
  73. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/schema/__init__.py +0 -0
  74. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/schema/bases.py +0 -0
  75. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/schema/check.py +0 -0
  76. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/schema/dataclass.py +0 -0
  77. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/schema/metamodel.py +0 -0
  78. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/schema/typing.py +0 -0
  79. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/sphinx/__init__.py +0 -0
  80. {xradio-0.0.49 → xradio-0.0.50}/src/xradio/sphinx/schema_table.py +0 -0
  81. {xradio-0.0.49 → xradio-0.0.50}/src/xradio.egg-info/SOURCES.txt +0 -0
  82. {xradio-0.0.49 → xradio-0.0.50}/src/xradio.egg-info/dependency_links.txt +0 -0
  83. {xradio-0.0.49 → xradio-0.0.50}/src/xradio.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xradio
3
- Version: 0.0.49
3
+ Version: 0.0.50
4
4
  Summary: Xarray Radio Astronomy Data IO
5
5
  Author-email: Jan-Willem Steeb <jsteeb@nrao.edu>
6
6
  License: BSD 3-Clause License
@@ -56,6 +56,7 @@ Requires-Dist: zarr<3,>=2
56
56
  Requires-Dist: pyarrow
57
57
  Requires-Dist: python_casacore>=3.6.1; sys_platform != "darwin"
58
58
  Requires-Dist: typeguard
59
+ Requires-Dist: numcodecs<0.16
59
60
  Provides-Extra: interactive
60
61
  Requires-Dist: matplotlib; extra == "interactive"
61
62
  Requires-Dist: prettytable; extra == "interactive"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "xradio"
3
- version = "0.0.49"
3
+ version = "0.0.50"
4
4
  description = " Xarray Radio Astronomy Data IO"
5
5
  authors = [
6
6
  {name = "Jan-Willem Steeb", email="jsteeb@nrao.edu"},
@@ -25,7 +25,8 @@ dependencies = [
25
25
  'zarr>=2,<3',
26
26
  'pyarrow',
27
27
  'python_casacore>=3.6.1; sys_platform != "darwin" ',
28
- 'typeguard'
28
+ 'typeguard',
29
+ 'numcodecs<0.16'
29
30
  ]
30
31
 
31
32
  [project.optional-dependencies]
@@ -1341,7 +1341,7 @@ def convert_and_write_partition(
1341
1341
 
1342
1342
  ms_xdt["/antenna_xds"] = ant_xds
1343
1343
  for group_name in xds.attrs["data_groups"]:
1344
- ms_xdt["/" + f"field_and_source_xds_{group_name}"] = field_and_source_xds
1344
+ ms_xdt["/" + f"field_and_source_{group_name}_xds"] = field_and_source_xds
1345
1345
 
1346
1346
  if with_pointing and len(pointing_xds.data_vars) > 0:
1347
1347
  ms_xdt["/pointing_xds"] = pointing_xds
@@ -1468,6 +1468,7 @@ def add_group_to_data_groups(
1468
1468
  "correlated_data": correlated_data_name,
1469
1469
  "flag": "FLAG",
1470
1470
  "weight": "WEIGHT",
1471
+ "field_and_source": f"field_and_source_{what_group}_xds",
1471
1472
  "description": f"Data group derived from the data column '{correlated_data_name}' of an MSv2 converted to MSv4",
1472
1473
  "date": datetime.datetime.now(datetime.timezone.utc).isoformat(),
1473
1474
  }
@@ -93,17 +93,34 @@ class MeasurementSetXdt:
93
93
  if data_group_name is not None:
94
94
  sel_data_group_set = set(
95
95
  self._xdt.attrs["data_groups"][data_group_name].values()
96
- )
96
+ ) - set(["date", "description"])
97
+
98
+ sel_field_and_source_xds = self._xdt.attrs["data_groups"][data_group_name][
99
+ "field_and_source"
100
+ ]
97
101
 
98
102
  data_variables_to_drop = []
99
- for dg in self._xdt.attrs["data_groups"].values():
100
- temp_set = set(dg.values()) - sel_data_group_set
103
+ field_and_source_to_drop = []
104
+ for dg_name, dg in self._xdt.attrs["data_groups"].items():
105
+ print(f"Data group: {dg_name}", dg)
106
+ f_and_s = dg["field_and_source"]
107
+ dg_copy = dg.copy()
108
+ dg_copy.pop("date", None)
109
+ dg_copy.pop("description", None)
110
+ dg_copy.pop("field_and_source", None)
111
+ temp_set = set(dg_copy.values()) - sel_data_group_set
101
112
  data_variables_to_drop.extend(list(temp_set))
102
113
 
114
+ if f_and_s != sel_field_and_source_xds:
115
+ field_and_source_to_drop.append(f_and_s)
116
+
103
117
  data_variables_to_drop = list(set(data_variables_to_drop))
104
118
 
105
119
  sel_ms_xdt = self._xdt
106
120
 
121
+ print("Data variables to drop: ", data_variables_to_drop)
122
+ print("Field and source to drop: ", field_and_source_to_drop)
123
+
107
124
  sel_corr_xds = self._xdt.ds.sel(
108
125
  indexers, method, tolerance, drop, **indexers_kwargs
109
126
  ).drop_vars(data_variables_to_drop)
@@ -140,7 +157,10 @@ class MeasurementSetXdt:
140
157
  else:
141
158
  data_group_name = list(self._xdt.attrs["data_groups"].keys())[0]
142
159
 
143
- return self._xdt[f"field_and_source_xds_{data_group_name}"].ds
160
+ field_and_source_xds_name = self._xdt.attrs["data_groups"][data_group_name][
161
+ "field_and_source"
162
+ ]
163
+ return self._xdt[field_and_source_xds_name].ds
144
164
 
145
165
  def get_partition_info(self, data_group_name: str = None) -> dict:
146
166
  """
@@ -195,3 +215,105 @@ class MeasurementSetXdt:
195
215
  }
196
216
 
197
217
  return partition_info
218
+
219
+ def add_data_group(
220
+ self,
221
+ new_data_group_name: str,
222
+ correlated_data: str = None,
223
+ weight: str = None,
224
+ flag: str = None,
225
+ uvw: str = None,
226
+ field_and_source_xds: str = None,
227
+ date_time: str = None,
228
+ description: str = None,
229
+ data_group_dv_shared_with: str = None,
230
+ ) -> xr.DataTree:
231
+ """_summary_
232
+
233
+ Parameters
234
+ ----------
235
+ new_data_group_name : str
236
+ _description_
237
+ correlated_data : str, optional
238
+ _description_, by default None
239
+ weights : str, optional
240
+ _description_, by default None
241
+ flag : str, optional
242
+ _description_, by default None
243
+ uvw : str, optional
244
+ _description_, by default None
245
+ field_and_source_xds : str, optional
246
+ _description_, by default None
247
+ date_time : str, optional
248
+ _description_, by default None
249
+ description : str, optional
250
+ _description_, by default None
251
+ data_group_dv_shared_with : str, optional
252
+ _description_, by default "base"
253
+
254
+ Returns
255
+ -------
256
+ xr.DataTree
257
+ _description_
258
+ """
259
+
260
+ if data_group_dv_shared_with is None:
261
+ data_group_dv_shared_with = self._xdt.xr_ms._get_default_data_group_name()
262
+ default_data_group = self._xdt.attrs["data_groups"][data_group_dv_shared_with]
263
+
264
+ new_data_group = {}
265
+
266
+ if correlated_data is None:
267
+ correlated_data = default_data_group["correlated_data"]
268
+ new_data_group["correlated_data"] = correlated_data
269
+ assert (
270
+ correlated_data in self._xdt.ds.data_vars
271
+ ), f"Data variable {correlated_data} not found in dataset."
272
+
273
+ if weight is None:
274
+ weight = default_data_group["weight"]
275
+ new_data_group["weight"] = weight
276
+ assert (
277
+ weight in self._xdt.ds.data_vars
278
+ ), f"Data variable {weight} not found in dataset."
279
+
280
+ if flag is None:
281
+ flag = default_data_group["flag"]
282
+ new_data_group["flag"] = flag
283
+ assert (
284
+ flag in self._xdt.ds.data_vars
285
+ ), f"Data variable {flag} not found in dataset."
286
+
287
+ if self._xdt.attrs["type"] == "visibility":
288
+ if uvw is None:
289
+ uvw = default_data_group["uvw"]
290
+ new_data_group["uvw"] = uvw
291
+ assert (
292
+ uvw in self._xdt.ds.data_vars
293
+ ), f"Data variable {uvw} not found in dataset."
294
+
295
+ if field_and_source_xds is None:
296
+ field_and_source_xds = default_data_group["field_and_source_xds"]
297
+ new_data_group["field_and_source"] = field_and_source_xds
298
+ assert (
299
+ field_and_source_xds in self._xdt.children
300
+ ), f"Data variable {field_and_source_xds} not found in dataset."
301
+
302
+ if date_time is None:
303
+ date_time = datetime.now().isoformat()
304
+ new_data_group["date"] = date_time
305
+
306
+ if description is None:
307
+ description = ""
308
+ new_data_group["description"] = description
309
+
310
+ self._xdt.attrs["data_groups"][new_data_group_name] = new_data_group
311
+
312
+ return self._xdt
313
+
314
+ def _get_default_data_group_name(self):
315
+ if "base" in self._xdt.attrs["data_groups"].keys():
316
+ data_group_name = "base"
317
+ else:
318
+ data_group_name = list(self._xdt.attrs["data_groups"].keys())[0]
319
+ return data_group_name
@@ -193,7 +193,7 @@ class ProcessingSetXdt:
193
193
  )
194
194
  summary_data["end_frequency"].append(to_list(value["frequency"].values)[-1])
195
195
 
196
- field_and_source_xds = value["field_and_source_xds_" + data_group]
196
+ field_and_source_xds = value.xr_ms.get_field_and_source_xds(data_group)
197
197
 
198
198
  if field_and_source_xds.attrs["type"] == "field_and_source_ephemeris":
199
199
  summary_data["field_coords"].append("Ephemeris")
@@ -349,7 +349,7 @@ class ProcessingSetXdt:
349
349
  "correlated_data"
350
350
  ]
351
351
 
352
- field_and_source_xds = ms_xdt["field_and_source_xds_" + data_group].ds
352
+ field_and_source_xds = ms_xdt.xr_ms.get_field_and_source_xds(data_group)
353
353
 
354
354
  if not field_and_source_xds.attrs["type"] == "field_and_source_ephemeris":
355
355
 
@@ -450,9 +450,9 @@ class ProcessingSetXdt:
450
450
  "correlated_data"
451
451
  ]
452
452
 
453
- field_and_source_xds = field_and_source_xds = ms_xdt[
454
- "field_and_source_xds_" + data_group
455
- ].ds
453
+ field_and_source_xds = field_and_source_xds = (
454
+ ms_xdt.xr_ms.get_field_and_source_xds(data_group)
455
+ )
456
456
 
457
457
  if field_and_source_xds.attrs["type"] == "field_and_source_ephemeris":
458
458
 
@@ -1410,6 +1410,8 @@ class DataGroupDict:
1410
1410
  """ Name of the weight variable of the group, for example 'WEIGHT'. """
1411
1411
  uvw: Optional[str]
1412
1412
  """ Name of the UVW variable of the group, for example 'UVW'. """
1413
+ field_and_source: str
1414
+ """ Name of the field_and_source_xds, for example field_and_source_xds_base. """
1413
1415
  description: str
1414
1416
  """ More details about the data group. """
1415
1417
  date: str
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: xradio
3
- Version: 0.0.49
3
+ Version: 0.0.50
4
4
  Summary: Xarray Radio Astronomy Data IO
5
5
  Author-email: Jan-Willem Steeb <jsteeb@nrao.edu>
6
6
  License: BSD 3-Clause License
@@ -56,6 +56,7 @@ Requires-Dist: zarr<3,>=2
56
56
  Requires-Dist: pyarrow
57
57
  Requires-Dist: python_casacore>=3.6.1; sys_platform != "darwin"
58
58
  Requires-Dist: typeguard
59
+ Requires-Dist: numcodecs<0.16
59
60
  Provides-Extra: interactive
60
61
  Requires-Dist: matplotlib; extra == "interactive"
61
62
  Requires-Dist: prettytable; extra == "interactive"
@@ -13,6 +13,7 @@ xarray
13
13
  zarr<3,>=2
14
14
  pyarrow
15
15
  typeguard
16
+ numcodecs<0.16
16
17
 
17
18
  [:sys_platform != "darwin"]
18
19
  python_casacore>=3.6.1
File without changes
File without changes
File without changes
File without changes
File without changes