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.
- xradio/_utils/_casacore/casacore_from_casatools.py +991 -0
- xradio/_utils/_casacore/tables.py +5 -1
- xradio/image/_util/_casacore/common.py +11 -3
- xradio/image/_util/_casacore/xds_from_casacore.py +10 -2
- xradio/image/_util/_casacore/xds_to_casacore.py +6 -2
- xradio/image/_util/_fits/xds_from_fits.py +27 -43
- xradio/image/_util/casacore.py +5 -1
- xradio/measurement_set/_utils/_msv2/_tables/load.py +4 -1
- xradio/measurement_set/_utils/_msv2/_tables/load_main_table.py +4 -1
- xradio/measurement_set/_utils/_msv2/_tables/read.py +18 -14
- xradio/measurement_set/_utils/_msv2/_tables/read_main_table.py +4 -1
- xradio/measurement_set/_utils/_msv2/_tables/read_subtables.py +4 -1
- xradio/measurement_set/_utils/_msv2/_tables/table_query.py +13 -3
- xradio/measurement_set/_utils/_msv2/_tables/write.py +4 -1
- xradio/measurement_set/_utils/_msv2/_tables/write_exp_api.py +4 -1
- xradio/measurement_set/_utils/_msv2/conversion.py +7 -1
- xradio/measurement_set/_utils/_msv2/msv4_info_dicts.py +5 -1
- xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py +1 -1
- xradio/measurement_set/_utils/_msv2/partition_queries.py +4 -1
- xradio/measurement_set/schema.py +3 -3
- {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/METADATA +42 -11
- {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/RECORD +25 -24
- {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/WHEEL +1 -1
- {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/licenses/LICENSE.txt +0 -0
- {xradio-0.0.55.dist-info → xradio-0.0.56.dist-info}/top_level.txt +0 -0
|
@@ -1,7 +1,10 @@
|
|
|
1
|
-
|
|
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
|
|
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
|
-
|
|
13
|
-
|
|
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
|
-
|
|
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["
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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"]
|
xradio/image/_util/casacore.py
CHANGED
|
@@ -10,7 +10,11 @@ from typing import Union
|
|
|
10
10
|
|
|
11
11
|
import xarray as xr
|
|
12
12
|
|
|
13
|
-
|
|
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,
|
|
@@ -5,7 +5,10 @@ import pandas as pd
|
|
|
5
5
|
import numpy as np
|
|
6
6
|
import xarray as xr
|
|
7
7
|
|
|
8
|
-
|
|
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
|
-
|
|
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
|
|
1254
|
-
#
|
|
1255
|
-
#
|
|
1256
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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": ["
|
|
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
|
-
|
|
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
|
xradio/measurement_set/schema.py
CHANGED
|
@@ -83,8 +83,8 @@ Doppler = Literal["doppler"]
|
|
|
83
83
|
RotationMatrix = Literal["rotation_matrix"]
|
|
84
84
|
|
|
85
85
|
# Units of quantities and measures
|
|
86
|
-
|
|
87
|
-
Literal["
|
|
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[
|
|
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.
|
|
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:
|
|
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/
|
|
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=
|
|
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=
|
|
20
|
-
xradio/image/_util/_casacore/xds_from_casacore.py,sha256=
|
|
21
|
-
xradio/image/_util/_casacore/xds_to_casacore.py,sha256=
|
|
22
|
-
xradio/image/_util/_fits/xds_from_fits.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
45
|
-
xradio/measurement_set/_utils/_msv2/msv4_sub_xdss.py,sha256=
|
|
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=
|
|
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=
|
|
51
|
-
xradio/measurement_set/_utils/_msv2/_tables/load_main_table.py,sha256=
|
|
52
|
-
xradio/measurement_set/_utils/_msv2/_tables/read.py,sha256=
|
|
53
|
-
xradio/measurement_set/_utils/_msv2/_tables/read_main_table.py,sha256=
|
|
54
|
-
xradio/measurement_set/_utils/_msv2/_tables/read_subtables.py,sha256=
|
|
55
|
-
xradio/measurement_set/_utils/_msv2/_tables/table_query.py,sha256=
|
|
56
|
-
xradio/measurement_set/_utils/_msv2/_tables/write.py,sha256=
|
|
57
|
-
xradio/measurement_set/_utils/_msv2/_tables/write_exp_api.py,sha256
|
|
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.
|
|
74
|
-
xradio-0.0.
|
|
75
|
-
xradio-0.0.
|
|
76
|
-
xradio-0.0.
|
|
77
|
-
xradio-0.0.
|
|
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,,
|
|
File without changes
|
|
File without changes
|