xradio 0.0.28__py3-none-any.whl → 0.0.30__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 (48) hide show
  1. xradio/__init__.py +5 -4
  2. xradio/_utils/array.py +90 -0
  3. xradio/_utils/zarr/common.py +48 -3
  4. xradio/image/_util/zarr.py +4 -1
  5. xradio/schema/__init__.py +24 -6
  6. xradio/schema/bases.py +440 -2
  7. xradio/schema/check.py +96 -55
  8. xradio/schema/dataclass.py +123 -27
  9. xradio/schema/metamodel.py +21 -4
  10. xradio/schema/typing.py +33 -18
  11. xradio/vis/__init__.py +5 -2
  12. xradio/vis/_processing_set.py +71 -32
  13. xradio/vis/_vis_utils/_ms/_tables/create_field_and_source_xds.py +710 -0
  14. xradio/vis/_vis_utils/_ms/_tables/load.py +23 -10
  15. xradio/vis/_vis_utils/_ms/_tables/load_main_table.py +145 -64
  16. xradio/vis/_vis_utils/_ms/_tables/read.py +747 -172
  17. xradio/vis/_vis_utils/_ms/_tables/read_main_table.py +173 -44
  18. xradio/vis/_vis_utils/_ms/_tables/read_subtables.py +79 -28
  19. xradio/vis/_vis_utils/_ms/_tables/write.py +102 -45
  20. xradio/vis/_vis_utils/_ms/_tables/write_exp_api.py +127 -65
  21. xradio/vis/_vis_utils/_ms/chunks.py +58 -21
  22. xradio/vis/_vis_utils/_ms/conversion.py +582 -102
  23. xradio/vis/_vis_utils/_ms/descr.py +52 -20
  24. xradio/vis/_vis_utils/_ms/msv2_to_msv4_meta.py +72 -35
  25. xradio/vis/_vis_utils/_ms/msv4_infos.py +0 -59
  26. xradio/vis/_vis_utils/_ms/msv4_sub_xdss.py +76 -9
  27. xradio/vis/_vis_utils/_ms/optimised_functions.py +0 -46
  28. xradio/vis/_vis_utils/_ms/partition_queries.py +308 -119
  29. xradio/vis/_vis_utils/_ms/partitions.py +82 -25
  30. xradio/vis/_vis_utils/_ms/subtables.py +32 -14
  31. xradio/vis/_vis_utils/_utils/partition_attrs.py +30 -11
  32. xradio/vis/_vis_utils/_utils/xds_helper.py +136 -45
  33. xradio/vis/_vis_utils/_zarr/read.py +60 -22
  34. xradio/vis/_vis_utils/_zarr/write.py +83 -9
  35. xradio/vis/_vis_utils/ms.py +48 -29
  36. xradio/vis/_vis_utils/zarr.py +44 -20
  37. xradio/vis/convert_msv2_to_processing_set.py +43 -32
  38. xradio/vis/load_processing_set.py +38 -61
  39. xradio/vis/read_processing_set.py +64 -96
  40. xradio/vis/schema.py +687 -0
  41. xradio/vis/vis_io.py +75 -43
  42. {xradio-0.0.28.dist-info → xradio-0.0.30.dist-info}/LICENSE.txt +6 -1
  43. {xradio-0.0.28.dist-info → xradio-0.0.30.dist-info}/METADATA +10 -5
  44. xradio-0.0.30.dist-info/RECORD +73 -0
  45. {xradio-0.0.28.dist-info → xradio-0.0.30.dist-info}/WHEEL +1 -1
  46. xradio/vis/model.py +0 -497
  47. xradio-0.0.28.dist-info/RECORD +0 -71
  48. {xradio-0.0.28.dist-info → xradio-0.0.30.dist-info}/top_level.txt +0 -0
xradio/vis/model.py DELETED
@@ -1,497 +0,0 @@
1
- from __future__ import annotations
2
-
3
- from dataclasses import dataclass
4
- from typing import Literal, Optional, Union
5
- from xradio.schema.bases import AsDataArray, AsDataset
6
- from xradio.schema.typing import Attr, Coord, Coordof, Data, Dataof, Name
7
- import numpy
8
-
9
- # Dimensions
10
- Time = Literal["time"]
11
- """ Observation time dimension """
12
- AntennaId = Literal["antenna_id"]
13
- """ Antenna ID dimension """
14
- BaselineId = Literal["baseline_id"]
15
- """ Baseline ID dimension """
16
- Frequency = Literal["frequency"]
17
- """ Frequency dimension """
18
- Polarization = Literal["polarization"]
19
- """ Polarization dimension """
20
- UvwLabel = Literal["uvw_label"]
21
- """ Coordinate dimension of UVW data (typically shape 3 for 'u', 'v', 'w') """
22
- DirectionLabel = Literal["direction_label"]
23
- """ Coordinate dimension of UVW data (typically shape 3 for 'u', 'v', 'w') """
24
- TimePolynomial = Literal["time_polynomial"]
25
- """ For data that is represented as variable in time using Taylor expansion """
26
-
27
-
28
- # Plain data class models
29
- @dataclass
30
- class SourceInfoDict:
31
- # TODO
32
- pass
33
-
34
-
35
- @dataclass
36
- class FieldInfoDict:
37
- """
38
- Field positions for each source.
39
-
40
- Defines a field position on the sky. For interferometers, this is the correlated field position.
41
- For single dishes, this is the nominal pointing direction.
42
- """
43
-
44
- name: str
45
- """Field name."""
46
- field_id: int
47
- """Field id"""
48
- code: str
49
- """Field code indicating special characteristics of the field; user specified."""
50
- time_reference: str
51
- """
52
- Time reference for the directions and rates. When used in :py:class:`VisibilityXds` should match
53
- the scale and format given for ``time`` (see :py:class:`TimeAxis`).
54
- """
55
- delay_direction: SkyCoordDict
56
-
57
- # TODO
58
- pass
59
-
60
-
61
- @dataclass
62
- class QuantityDict:
63
- # TODO
64
- pass
65
-
66
-
67
- @dataclass
68
- class SkyCoordDict:
69
- # TODO
70
- pass
71
-
72
-
73
- @dataclass(frozen=True)
74
- class ObservationInfoDict:
75
- observer: List[str]
76
- """List of observer names."""
77
- project: str
78
- """Project Code/Project_UID"""
79
- release_data: str
80
- """Project release date. This is the date on which the data may become public."""
81
- execution_block_id: Optional[str]
82
- execution_block_number: Optional[str]
83
- execution_block_UID: Optional[str]
84
- session_reference: Optional[str]
85
- observing_script: Optional[str]
86
-
87
-
88
- # Coordinates / Axes
89
- @dataclass(frozen=True)
90
- class TimeAxis(AsDataArray):
91
- """Data model of time axis"""
92
-
93
- data: Data[Time, float]
94
- """ Time, expressed in SI seconds since the epoch (see ``scale`` & ``format``). """
95
-
96
- integration_time: Attr[Optional[QuantityDict]] = None
97
- """ The nominal sampling interval (ms v2). Units of seconds. """
98
- effective_integration_time: Attr[Optional[QuantityDict]] = None
99
- """ Name of data array that contains the integration time that includes the effects of missing data. """
100
-
101
- long_name: Attr[str] = "Observation Time"
102
- """ Long-form name to use for axis"""
103
- type: Attr[str] = "time"
104
- """ Coordinate type. Should be ``"time"``. """
105
- units: Attr[tuple[str]] = ("s",)
106
- """ Units to associate with axis"""
107
- scale: Attr[str] = "tai"
108
- """ Astropy time scales, see :py:class:`astropy.time.Time` """
109
- format: Attr[str] = "unix"
110
- """ Astropy format, see :py:class:`astropy.time.Time`. Default seconds from 1970-01-01 00:00:00 UTC """
111
-
112
-
113
- @dataclass(frozen=True)
114
- class AntennaAxis(AsDataArray):
115
- data: Data[AntennaId, int]
116
- """
117
- Antenna id of an antenna. Maps to ``antenna_id``
118
- in :py:class:`AntennaXds`.
119
- """
120
- long_name: Attr[str] = "Antenna ID"
121
-
122
-
123
- @dataclass(frozen=True)
124
- class BaselineAxis(AsDataArray):
125
- """TODO: documentation"""
126
-
127
- data: Data[BaselineId, int]
128
- """Unique id for each baseline."""
129
- long_name: Attr[str] = "Baseline ID"
130
-
131
-
132
- @dataclass(frozen=True)
133
- class BaselineAntennaAxis(AsDataArray):
134
- data: Data[BaselineId, int]
135
- """
136
- Antenna id for an antenna in a baseline. Maps to ``attrs['antenna_xds'].antenna_id``
137
- in :py:class:`VisibilityXds`
138
- """
139
- long_name: Attr[str] = "Baseline Antenna ID"
140
-
141
-
142
- @dataclass(frozen=True)
143
- class FrequencyAxis(AsDataArray):
144
- """TODO: documentation"""
145
-
146
- data: Data[Frequency, float]
147
- """ Time, expressed in SI seconds since the epoch. """
148
- spectral_window_name: Attr[str]
149
- """ Name associated with spectral window. """
150
- frequency_group_name: Attr[str]
151
- """ Name associated with frequency group - needed for multi-band VLBI fringe-fitting."""
152
- reference_frequency: Attr[QuantityDict]
153
- """ A frequency representative of the spectral window, usually the sky
154
- frequency corresponding to the DC edge of the baseband. Used by the calibration
155
- system if a fixed scaling frequency is required or in algorithms to identify the
156
- observing band. """
157
- channel_width: Attr[QuantityDict]
158
- """ The nominal channel bandwidth. Same units as data array (see units key). """
159
- doppler: Optional[Attr[DopplerXds]]
160
- """ Doppler tracking information """
161
-
162
- type: Attr[str] = "spectral_coord"
163
- """ Coordinate type. Should be ``"spectral_coord"``. """
164
- long_name: Attr[str] = "Frequency"
165
- """ Long-form name to use for axis"""
166
- units: Attr[tuple[str]] = ("Hz",)
167
- """ Units to associate with axis"""
168
- frame: Attr[str] = "icrs"
169
- """
170
- Astropy velocity reference frames (see :external:ref:`astropy-spectralcoord`).
171
- Note that Astropy does not use the name
172
- 'topo' (telescope centric) velocity frame, rather it assumes if no velocity
173
- frame is given that this is the default.
174
- """
175
-
176
-
177
- @dataclass(frozen=True)
178
- class PolarizationAxis(AsDataArray):
179
- """
180
- Possible correlations that can be formed from polarised receptors. Possible
181
- values, taken from `Measures/Stokes.h
182
- <https://github.com/casacore/casacore/blob/5a8df94738bdc36be27e695d7b14fe949a1cc2df/measures/Measures/Stokes.h>`_:
183
-
184
- * ``I``, ``Q``, ``U``, ``V`` (standard stokes parameters)
185
- * ``RR``, ``RL``, ``LR``, ``LL`` (circular correlation products)
186
- * ``XX``, ``XY``, ``YX``, ``YY`` (linear correlation products)
187
- * ``RX``, ``RY``, ``LX``, ``LY``, ``XR``, ``XL``, ``YR``, ``YL`` (mixed correlation products)
188
- * ``PP``, ``PQ``, ``QP``, ``QQ`` (general quasi-orthogonal correlation products)
189
- * ``RCircular``, ``LCircular``, ``Linear`` (single dish polarization types)
190
- * ``Ptotal`` (polarized intensity: ``sqrt(Q²+U²+V²)``)
191
- * ``Plinear`` (linearly polarized intensity: ``sqrt(Q²+U²)``)
192
- * ``PFtotal`` (polarization fraction: ``Ptotal/I``)
193
- * ``PFlinear`` (linear polarization fraction: ``Plinear/I``)
194
- * ``Pangle`` (linear polarization angle: ``0.5 arctan(U/Q)`` in radians)
195
-
196
- """
197
-
198
- data: Data[Polarization, str]
199
- """ Polarization names. """
200
- type: Attr[str] = "polarization"
201
- """ Coordinate type. Should be ``"polarization"``. """
202
- long_name: Attr[str] = "Polarization"
203
- """ Long-form name to use for axis. Should be ``"Polarization"``"""
204
-
205
-
206
- @dataclass(frozen=True)
207
- class UvwLabelAxis(AsDataArray):
208
- """
209
- Coordinate axis to make up ``("u", "v", "w")`` tuple, see :py:class:`UvwArray`.
210
- """
211
-
212
- data: Data[UvwLabel, str] = ("u", "v", "w")
213
- """Should be ``('u','v','w')``, used by :py:class:`UvwArray`"""
214
- long_name: Attr[str] = "U/V/W label"
215
- """ Long-form name to use for axis. Should be ``"U/V/W label"``"""
216
-
217
-
218
- # Data variables
219
- @dataclass(frozen=True)
220
- class VisibilityArray(AsDataArray):
221
- """TODO: documentation"""
222
-
223
- data: Data[
224
- tuple[Time, BaselineId, Frequency, Polarization],
225
- numpy.complex64 | numpy.complex128,
226
- ]
227
- time: Coordof[TimeAxis]
228
- baseline_id: Coordof[BaselineAxis]
229
- frequency: Coordof[FrequencyAxis]
230
- polarization: Coordof[PolarizationAxis]
231
- delay_direction: Attr[SkyCoordDict]
232
- """
233
- Direction of delay center, i.e. what the coorelator originally phased the
234
- visibilities to.
235
-
236
- For conversion from MSv2, frame refers column
237
- keywords by default. If frame varies with field, it refers PhaseDir_Ref
238
- column instead.
239
- """
240
- phase_direction: Attr[SkyCoordDict]
241
- """
242
- Phase direction of visibilities, i.e. the sky direction from which flux
243
- would result in real-valued visibilities independent of baseline UVW.
244
- """
245
- long_name: Attr[str] = "Visibility values"
246
- """ Long-form name to use for axis. Should be ``"Visibility values"``"""
247
- units: Attr[tuple[str]] = ("Jy",)
248
-
249
-
250
- @dataclass(frozen=True)
251
- class FlagArray(AsDataArray):
252
- """
253
- An array of Boolean values with the same shape as `VISIBILITY`,
254
- representing the cumulative flags applying to this data matrix. Data are
255
- flagged bad if the ``FLAG`` array element is ``True``.
256
- """
257
-
258
- data: Data[
259
- tuple[Time, BaselineId, Frequency, Polarization]
260
- | tuple[Time, BaselineId, Frequency]
261
- | tuple[Time, BaselineId],
262
- bool,
263
- ]
264
- time: Coordof[TimeAxis]
265
- baseline_id: Coordof[BaselineAxis]
266
- frequency: Coordof[FrequencyAxis]
267
- polarization: Optional[Coordof[PolarizationAxis]] = None
268
- long_name: Attr[str] = "Visibility flags"
269
-
270
-
271
- @dataclass(frozen=True)
272
- class WeightArray(AsDataArray):
273
- """
274
- The weight for each channel, with the same shape as the associated
275
- :py:class:`VisibilityArray`, as assigned by the correlator or processor.
276
-
277
- Weight spectrum in ms v2 is renamed weight. Should be calculated as
278
- 1/sigma^2 (sigma rms noise).
279
- """
280
-
281
- data: Data[
282
- tuple[Time, BaselineId, Frequency, Polarization]
283
- | tuple[Time, BaselineId, Frequency]
284
- | tuple[Time, BaselineId],
285
- numpy.float16 | numpy.float32 | numpy.float64,
286
- ]
287
- """Visibility weights"""
288
- time: Coordof[TimeAxis]
289
- baseline_id: Coordof[BaselineAxis]
290
- frequency: Optional[Coordof[FrequencyAxis]] = None
291
- polarization: Optional[Coordof[PolarizationAxis]] = None
292
- long_name: Attr[str] = "Visibility weights"
293
-
294
-
295
- @dataclass(frozen=True)
296
- class UvwArray(AsDataArray):
297
- """
298
- Coordinates for the baseline from ``baseline_antenna2_id`` to
299
- ``baseline_antenna1_id``, i.e. the baseline is equal to the difference
300
- ``POSITION2 - POSITION1``. The UVW given are for the ``TIME_CENTROID``, and
301
- correspond in general to the reference type for the
302
- ``field_info.phase_dir``.
303
-
304
- The baseline direction should be: ``W`` towards source direction; ``V`` in
305
- plane through source and system's pole; ``U`` in direction of increasing
306
- longitude coordinate. So citing
307
- http://casa.nrao.edu/Memos/CoordConvention.pdf: Consider an XYZ Celestial
308
- coordinate system centered at the location of the interferometer, with
309
- :math:`X` towards the East, :math:`Z` towards the NCP and :math:`Y` to
310
- complete a right-handed system. The UVW coordinate system is then defined
311
- by the hour-angle and declination of the phase-reference direction such
312
- that
313
-
314
- #. when the direction of observation is the NCP (`ha=0,dec=90`),
315
- the UVW coordinates are aligned with XYZ,
316
- #. V, W and the NCP are always on a Great circle,
317
- #. when W is on the local meridian, U points East
318
- #. when the direction of observation is at zero declination, an
319
- hour-angle of -6 hours makes W point due East.
320
-
321
- This definition also determines the sign of the phase of ``VISIBILITY``.
322
-
323
- """
324
-
325
- data: Data[
326
- tuple[Time, BaselineId, Frequency, Polarization, UvwLabel]
327
- | tuple[Time, BaselineId, Frequency, UvwLabel]
328
- | tuple[Time, BaselineId, UvwLabel],
329
- numpy.float16 | numpy.float32 | numpy.float64,
330
- ]
331
- """Baseline coordinates from ``baseline_antenna2_id`` to ``baseline_antenna1_id``"""
332
- time: Coordof[TimeAxis]
333
- baseline_id: Coordof[BaselineAxis]
334
- frequency: Optional[Coordof[FrequencyAxis]] = None
335
- polarization: Optional[Coordof[PolarizationAxis]] = None
336
- uvw_label: Coordof[UvwLabelAxis] = ("u", "v", "w")
337
- long_name: Attr[str] = "Baseline coordinates"
338
- """ Long-form name to use for axis. Should be ``"Baseline coordinates``"""
339
- units: Attr[tuple[str]] = ("m",)
340
-
341
-
342
- @dataclass(frozen=True)
343
- class TimeSamplingArray(AsDataArray):
344
- """TODO: documentation"""
345
-
346
- data: Data[
347
- tuple[Time, BaselineId, Frequency, Polarization]
348
- | tuple[Time, BaselineId, Frequency]
349
- | tuple[Time, BaselineId],
350
- float,
351
- ]
352
-
353
- time: Coordof[TimeAxis]
354
- baseline_id: Coordof[BaselineAxis]
355
- frequency: Optional[Coordof[FrequencyAxis]] = None
356
- polarization: Optional[Coordof[PolarizationAxis]] = None
357
-
358
- scale: Attr[str] = "tai"
359
- """ Astropy time scales, see :py:class:`astropy.time.Time` """
360
- format: Attr[str] = "unix"
361
- """ Astropy format, see :py:class:`astropy.time.Time`. Default seconds from 1970-01-01 00:00:00 UTC """
362
-
363
- long_name: Attr[str] = "Time sampling data"
364
- units: Attr[str] = "s"
365
-
366
-
367
- @dataclass(frozen=True)
368
- class FreqSamplingArray(AsDataArray):
369
- """TODO: documentation"""
370
-
371
- data: Data[
372
- tuple[Time, BaselineId, Frequency, Polarization]
373
- | tuple[Time, BaselineId, Frequency]
374
- | tuple[Time, Frequency]
375
- | tuple[Frequency],
376
- float,
377
- ]
378
- """
379
- Data about frequency sampling, such as centroid or integration
380
- time. Concrete function depends on concrete data array within
381
- :py:class:`VisibilityXds`.
382
- """
383
- frequency: Coordof[FrequencyAxis]
384
- time: Optional[Coordof[TimeAxis]] = None
385
- baseline_id: Optional[Coordof[BaselineAxis]] = None
386
- polarization: Optional[Coordof[PolarizationAxis]] = None
387
- long_name: Attr[str] = "Frequency sampling data"
388
- units: Attr[str] = "Hz"
389
- frame: Attr[str] = "icrs"
390
- """
391
- Astropy velocity reference frames (see :external:ref:`astropy-spectralcoord`).
392
- Note that Astropy does not use the name
393
- 'topo' (telescope centric) velocity frame, rather it assumes if no velocity
394
- frame is given that this is the default.
395
- """
396
-
397
-
398
- # Data Sets
399
- @dataclass(frozen=True)
400
- class VisibilityXds(AsDataset):
401
- """TODO: documentation"""
402
-
403
- # Required Coordinates
404
- time: Coordof[TimeAxis]
405
- """
406
- The time coordinate is the mid-point of the nominal sampling interval, as
407
- specified in the ``ms_v4.time.attrs['integration_time']`` (ms v2 interval).
408
- """
409
- baseline_id: Coordof[BaselineAxis]
410
- frequency: Coordof[FrequencyAxis]
411
- """Center frequencies for each channel."""
412
- polarization: Coordof[PolarizationAxis]
413
- """
414
- Labels for polarization types, e.g. ``['XX','XY','YX','YY']``, ``['RR','RL','LR','LL']``.
415
- """
416
- uvw_label: Optional[Coordof[UvwLabelAxis]]
417
-
418
- # Required data variables / arrays
419
- VISIBILITY: Dataof[VisibilityArray]
420
-
421
- # Required Attributes
422
- field_info: Attr[FieldInfoDict]
423
- """Values without any phase rotation. See data array (``VISIBILITY`` and ``UVW``) attribute phase center for phase rotated value. """
424
- antenna_xds: Attr[AntennaXds]
425
-
426
- # Optional Coordinates
427
- baseline_antenna1_id: Optional[Coordof[BaselineAntennaAxis]] = None
428
- """Antenna id for 1st antenna in baseline. Maps to ``attrs['antenna_xds'].antenna_id``"""
429
- baseline_antenna2_id: Optional[Coordof[BaselineAntennaAxis]] = None
430
- """Antenna id for 2nd antenna in baseline. Maps to ``attrs['antenna_xds'].antenna_id``"""
431
- scan_id: Optional[Coord[Time, int]] = None
432
- """Arbitary scan number to identify data taken in the same logical scan."""
433
-
434
- # Optional data variables / arrays
435
- """Complex visibilities, either simulated or measured by interferometer."""
436
- FLAG: Optional[Dataof[FlagArray]] = None
437
- WEIGHT: Optional[Dataof[WeightArray]] = None
438
- UVW: Optional[Dataof[UvwArray]] = None
439
- EFFECTIVE_INTEGRATION_TIME: Optional[Dataof[TimeSamplingArray]] = None
440
- """
441
- The integration time, including the effects of missing data, in contrast to
442
- ``integration_time`` attribute of the ``time`` coordinate,
443
- see :py:class:`TimeAxis`. (MS v2: ``exposure``).
444
- """
445
- TIME_CENTROID: Optional[Dataof[TimeSamplingArray]] = None
446
- """
447
- The time centroid of the visibility, includes the effects of missing data
448
- unlike the ``time`` coordinate, see :py:class:`TimeAxis`.
449
- """
450
- TIME_CENTROID_EXTRA_PRECISION: Optional[Dataof[TimeSamplingArray]] = None
451
- """Additional precision for ``TIME_CENTROID``"""
452
- EFFECTIVE_CHANNEL_WIDTH: Optional[Dataof[FreqSamplingArray]] = None
453
- """The channel bandwidth that includes the effects of missing data."""
454
- FREQUENCY_CENTROID: Optional[Dataof[FreqSamplingArray]] = None
455
- """Includes the effects of missing data unlike ``frequency``."""
456
-
457
- # Optional Attributes
458
- pointing_xds: Optional[Attr[PointingXds]] = None
459
- source_xds: Optional[Attr[SourceXds]] = None
460
- pased_array_xds: Optional[Attr[PhasedArrayXds]] = None
461
- observation_info: Optional[Attr[ObservationInfoDict]] = None
462
-
463
-
464
- @dataclass(frozen=True)
465
- class PointingXds(AsDataset):
466
- # TODO
467
- pass
468
-
469
-
470
- @dataclass(frozen=True)
471
- class SpectralCoordXds(AsDataset):
472
- # TODO
473
- pass
474
-
475
-
476
- @dataclass(frozen=True)
477
- class AntennaXds(AsDataset):
478
- # TODO
479
- pass
480
-
481
-
482
- @dataclass(frozen=True)
483
- class SourceXds(AsDataset):
484
- # TODO
485
- pass
486
-
487
-
488
- @dataclass(frozen=True)
489
- class PhasedArrayXds(AsDataset):
490
- # TODO
491
- pass
492
-
493
-
494
- @dataclass(frozen=True)
495
- class DopplerXds(AsDataset):
496
- # TODO
497
- pass
@@ -1,71 +0,0 @@
1
- xradio/__init__.py,sha256=xQlI7isyho2zIVf6S31lu681fzx3vwJTF1aW9V93kdE,314
2
- xradio/_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
- xradio/_utils/common.py,sha256=bjUZfZZrYTOt0i_XVfmQ2kvgr3egoYPWKGgnr4vKe-Y,46
4
- xradio/_utils/_casacore/tables.py,sha256=aq6E_4RRAHdTBCwMKrVil1cWhFU2O980DNH9IlRKXLw,1280
5
- xradio/_utils/zarr/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- xradio/_utils/zarr/common.py,sha256=w_orsJ7-nh8nXFllkYPwbEYFS5B-KeMVWnhO3elX_PQ,3470
7
- xradio/image/__init__.py,sha256=HAD0GfopIbhdxOYckyW6S9US_dSWmZrwIl3FHUzZwrE,435
8
- xradio/image/image.py,sha256=QoJ_BTLoMfeXJzU1yvtidBIhaMmjNA5_-6C3FWJRUeI,15635
9
- xradio/image/_util/__init__.py,sha256=M9lxD1Gc7kv0ucDEDbjLRuIEuESev-IG8j9EaCKUAkA,77
10
- xradio/image/_util/casacore.py,sha256=DmBTHUQ6870N5ARuFnYSfjZSLniJYgsjrsICUlCREYM,4234
11
- xradio/image/_util/common.py,sha256=vQs7Du9FSkb_D64Syt3IkiWkb_GmG9xhDPdgbpgP9Ok,9031
12
- xradio/image/_util/fits.py,sha256=gyGm06fuCKqVGK7uv-ObvQNfFawUDsIOa_nQyklM3Aw,329
13
- xradio/image/_util/image_factory.py,sha256=6tPzs20FTm2wEshHc1xqtTV7D0TbKxGLUKAVtvOc68I,10506
14
- xradio/image/_util/zarr.py,sha256=xTjg-KY-T4vuyua8pvuZZjCL-rI_wAsPjPUOYd5PZr4,1512
15
- xradio/image/_util/_casacore/__init__.py,sha256=OlsiRE40o1jSbBI4khgQQzgfDYbAlOMKIhO4UFlbGhg,41
16
- xradio/image/_util/_casacore/common.py,sha256=ky999eTCWta8w-uIs-7P7rPhZRLuh9yTuQXAxPvaPm4,1579
17
- xradio/image/_util/_casacore/xds_from_casacore.py,sha256=Rht4A32QLAQ7uizwKfOsZ3Z819shvlUbsZfAuTIVerU,42562
18
- xradio/image/_util/_casacore/xds_to_casacore.py,sha256=P6c-yoOjuVQkm07ApA7FFKfje4aPwV-MsRFKaRaPq9I,15338
19
- xradio/image/_util/_fits/xds_from_fits.py,sha256=kpZ2gdbDQtoUD1DdQZymup5OVnB3e73D66LruLYESsw,28445
20
- xradio/image/_util/_zarr/common.py,sha256=apMX_bF4Hr3pFGjnDFpp36KgmhTYAPBZquNkjBHrsXk,307
21
- xradio/image/_util/_zarr/xds_from_zarr.py,sha256=hz6lHlpybfr_r8pn_uObDHOFmN5h75F11bkBv8KCuP0,3192
22
- xradio/image/_util/_zarr/xds_to_zarr.py,sha256=wogXbwX8n3Sl9PHoc3_Y_LBowQsQ-94HZQFZ5NcxUZA,1624
23
- xradio/image/_util/_zarr/zarr_low_level.py,sha256=JJ_NgYTAbfiOXkpqIv9nA3bvthaqTZtumVYsLse_qGU,11001
24
- xradio/schema/__init__.py,sha256=UpejQegOaCLrsbcR4MLudR0RxeE0sN3zxFXM8rzyJPo,444
25
- xradio/schema/bases.py,sha256=vcW47jZWpJ0mJdni7eFVY7zJoper2sy2VjX8LE3pUqc,150
26
- xradio/schema/check.py,sha256=3u79hRL3pGF6dvQE0LF21nGdAVnRXWwgnbMmStGBSSA,16310
27
- xradio/schema/dataclass.py,sha256=vkc2cqLjGV5QN8j70GbBaNfslT_KLWmebsPGeBEuGcs,8879
28
- xradio/schema/metamodel.py,sha256=RHrihyaetinu7_lGTTZ31Rlv-_Db_EgQCXzk56H004o,3476
29
- xradio/schema/typing.py,sha256=coF3LuKOlCUJGKTUUH81EcjePZ86koOYzm8qzsAw-HU,9983
30
- xradio/vis/__init__.py,sha256=AV2WG26NzFB1LEEtFaq1ULQKz9VnluEAjg0Qb5Ju7m8,358
31
- xradio/vis/_processing_set.py,sha256=M56gIsF_3mKJjjbyU8E7jp0W8niojSrpqETdInOjwVQ,4398
32
- xradio/vis/convert_msv2_to_processing_set.py,sha256=7vTjqtWFEBOySnLVoadceKCA4VLgOig7eCs1dxrdYQA,3966
33
- xradio/vis/load_processing_set.py,sha256=ldgg0GqFwYuNc2fPkRlc_lW2Kt7naq2wFGloALl0J4Y,6753
34
- xradio/vis/model.py,sha256=uBjvvhYEY1p-3H3NStrt1ZKMQACLGLo93OiEBvDVId8,17083
35
- xradio/vis/read_processing_set.py,sha256=mhBcwrNEVlu5_dMfRaJQHzD-Yc3n2dtVqhNxvaoq09U,5522
36
- xradio/vis/vis_io.py,sha256=rCSOt4Max37uFzF3_Ck4U4xWzzYcipdbYcxbhBhQ_Qs,5278
37
- xradio/vis/_vis_utils/__init__.py,sha256=Scu6rKJ2SpO8aG7F-xdTZcYfyWx0viV8gFh8E8ur_gI,93
38
- xradio/vis/_vis_utils/ms.py,sha256=0uycYCDmeQku16TdPcnZEBJMdfb_i6xPoieYPhPoVIg,5258
39
- xradio/vis/_vis_utils/ms_column_descriptions_dicts.py,sha256=BV2SyiAmIB8P8n-u8osKlKYKiOq8fmiFsB9xSxlkTrM,39906
40
- xradio/vis/_vis_utils/zarr.py,sha256=vmpdB4_cdkObBaRRFVJesvIIDiAmM_rOzcpN3Oglih8,3548
41
- xradio/vis/_vis_utils/_ms/chunks.py,sha256=rqQyx00Cnq6EZDfHujvonvhNcxzVtCBTRye7MVX6CK8,4922
42
- xradio/vis/_vis_utils/_ms/conversion.py,sha256=cnEqv9CZTvwjwdSAqguF4n01n04rgIIbXxoISk9ANiE,15660
43
- xradio/vis/_vis_utils/_ms/descr.py,sha256=kOuZLFfXR5kHoV29TLhzHllw7zP6Z67Cc5xdVS6JTa4,4626
44
- xradio/vis/_vis_utils/_ms/msv2_msv3.py,sha256=9AKs2HWly7Ivv_Cjr11dIPGmm33_rtSBoGF9wN5ZwEQ,116
45
- xradio/vis/_vis_utils/_ms/msv2_to_msv4_meta.py,sha256=SUU5dMUxYWnKqfnw46H4QZno2RW4Z8Wl1r3ouHnReOA,3812
46
- xradio/vis/_vis_utils/_ms/msv4_infos.py,sha256=hyxtEAR1NcdZS43ayQAytsN1ikgOvy7KC1Wm4NJ1IGw,1967
47
- xradio/vis/_vis_utils/_ms/msv4_sub_xdss.py,sha256=UlvdopOqev1TI2DeGAGiBCVzMFzVW9vRtX0bLuwUGt0,11126
48
- xradio/vis/_vis_utils/_ms/optimised_functions.py,sha256=j4tkgUavFj8BAYxCgl9rDb1iQHlln9OfjlCTGWmXrO8,1397
49
- xradio/vis/_vis_utils/_ms/partition_queries.py,sha256=fBPIXPLtwXqCtuxsN621VuHVFaWx6QE9yA4bm7QBF84,13776
50
- xradio/vis/_vis_utils/_ms/partitions.py,sha256=vlBIaJgKKNkxE1okQxJ3NZTk9vnKHklB2nO1NXaDGWg,12000
51
- xradio/vis/_vis_utils/_ms/subtables.py,sha256=hkSa3sXUaSRVEv2CNK65Svx5Uyp3opZHaHYnJucehyU,3728
52
- xradio/vis/_vis_utils/_ms/_tables/load.py,sha256=TXrEf7fKfsP0Wp7fB7DLWeOS_Z8A1OLKGWGNSoiYHOM,1665
53
- xradio/vis/_vis_utils/_ms/_tables/load_main_table.py,sha256=HyIfjaQXfFA30YRUzU2H_ugRnArQ1XOiVGKxC9PbiOo,13497
54
- xradio/vis/_vis_utils/_ms/_tables/read.py,sha256=qFhRAucl7M5FsKefRZcOLCoUAA8ua0805Gq8IiLPZ-4,23749
55
- xradio/vis/_vis_utils/_ms/_tables/read_main_table.py,sha256=1Qj-1psYMJtV0hdjfaBZu-4pNIagllHcnANoI1rI6xU,23982
56
- xradio/vis/_vis_utils/_ms/_tables/read_subtables.py,sha256=_3AlxlLJwdu__a8sfG8a7-wz-yTo2S7JyVit17XaxKs,11741
57
- xradio/vis/_vis_utils/_ms/_tables/table_query.py,sha256=q8EGFf_zIwHcHnvFJOn8hPh8zFZQ3f7BGbXvL3bHad4,555
58
- xradio/vis/_vis_utils/_ms/_tables/write.py,sha256=Uuk4QGib_QOc8i6g7OYB9E6SxMUDPlXDYXlHqkzPX5Q,8475
59
- xradio/vis/_vis_utils/_ms/_tables/write_exp_api.py,sha256=0C-TOEA05mdmx9lz97s3Qlc-F6Z-bOF1QEuTiEJJuEQ,13188
60
- xradio/vis/_vis_utils/_utils/cds.py,sha256=OpvKowSheIthUbcPEv2AoKmxlEt3DqJZS5C1AYh5z10,1179
61
- xradio/vis/_vis_utils/_utils/partition_attrs.py,sha256=EaA23Kfqb78BfmIi8tcn_4XTKWQJomNMZhVcl4xKado,3201
62
- xradio/vis/_vis_utils/_utils/stokes_types.py,sha256=DMa8TmmS7BQ99Xm8c7ZjcRapMtLbrKVxrt4f0qUIOvg,561
63
- xradio/vis/_vis_utils/_utils/xds_helper.py,sha256=UhtAZV5DyYzVVBkXzwDAOz6TICxotQpGvAKxY6zzVkU,11152
64
- xradio/vis/_vis_utils/_zarr/encoding.py,sha256=GENIlThV6a9CUCL6gIGlu9c6NR3OFWNos6mpxZjMwDc,536
65
- xradio/vis/_vis_utils/_zarr/read.py,sha256=ikNGlOdHuZ_cgWpPAZ4iHzeLdU44I0iBLcqSEiM_hCk,7111
66
- xradio/vis/_vis_utils/_zarr/write.py,sha256=exvrqNVnVKk6LzbDPm_fm142YzX-7lHGqklXTQB9wh0,8864
67
- xradio-0.0.28.dist-info/LICENSE.txt,sha256=dvACd-5O67yjSZlnEKcWmu3DqwzBtbC922iPv0KOeAw,1516
68
- xradio-0.0.28.dist-info/METADATA,sha256=rHayCyOKEbXPz7q0u5LrsKeJNXl21ylyvnmPL_OB73g,4089
69
- xradio-0.0.28.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
70
- xradio-0.0.28.dist-info/top_level.txt,sha256=dQu27fGBZJ2Yk-gW5XeD-dZ76Xa4Xcvk60Vz-dwXp7k,7
71
- xradio-0.0.28.dist-info/RECORD,,