Package: xarray-ms
ConstructsxarrayDatasetsfrom CASA Tables viapython-casacore.
TheDataArrayscontained in theDatasetaredaskarrays backed by
deferred calls topyrap.tables.table.getcol.Supports writingDataArraysback to the respective column in the Table.The intention behind this package is to support the Measurement Set as
a data source and sink for the purposes of writing parallel, distributed
Radio Astronomy algorithms.importdask.arrayasdafromxarraymsimportxds_from_table,xds_to_table# Create xarray dataset from Measurement Set "WSRT.MS"ds=xds_from_table("WSRT.MS")# Set the flag DataArray to it's inverseds['flag']=(ds.flag.dims,da.logical_not(ds.flag))# Write the flag column back to the Measurement Setxds_to_table(ds,"WSRT.MS","FLAG").compute()printds<xarray.Dataset>Dimensions:((u,v,w):3,chan:64,corr:4,row:6552,table_row:6552)Coordinates:*row(row)int3201234567891011121314151617...*table_row(table_row)int320123456789101112131415...Dimensionswithoutcoordinates:(u,v,w),chan,corrDatavariables:ANTENNA1(row)int32dask.array<shape=(6552,),chunksize=(1000,)>ANTENNA2(row)int32dask.array<shape=(6552,),chunksize=(1000,)>ARRAY_ID(row)int32dask.array<shape=(6552,),chunksize=(1000,)>CORRECTED_DATA(row,chan,corr)complex64dask.array<shape=(6552,64,4),chunksize=(1000,64,4)>DATA(row,chan,corr)complex64dask.array<shape=(6552,64,4),chunksize=(1000,64,4)>EXPOSURE(row)float64dask.array<shape=(6552,),chunksize=(1000,)>FEED1(row)int32dask.array<shape=(6552,),chunksize=(1000,)>FEED2(row)int32dask.array<shape=(6552,),chunksize=(1000,)>FLAG(row,chan,corr)booldask.array<shape=(6552,64,4),chunksize=(1000,64,4)>FLAG_ROW(row)booldask.array<shape=(6552,),chunksize=(1000,)>IMAGING_WEIGHT(row,chan)float32dask.array<shape=(6552,64),chunksize=(1000,64)>INTERVAL(row)float64dask.array<shape=(6552,),chunksize=(1000,)>MODEL_DATA(row,chan,corr)complex64dask.array<shape=(6552,64,4),chunksize=(1000,64,4)>OBSERVATION_ID(row)int32dask.array<shape=(6552,),chunksize=(1000,)>PROCESSOR_ID(row)int32dask.array<shape=(6552,),chunksize=(1000,)>SCAN_NUMBER(row)int32dask.array<shape=(6552,),chunksize=(1000,)>SIGMA(row,corr)float32dask.array<shape=(6552,4),chunksize=(1000,4)>STATE_ID(row)int32dask.array<shape=(6552,),chunksize=(1000,)>TIME(row)float64dask.array<shape=(6552,),chunksize=(1000,)>TIME_CENTROID(row)float64dask.array<shape=(6552,),chunksize=(1000,)>UVW(row,(u,v,w))float64dask.array<shape=(6552,3),chunksize=(1000,3)>WEIGHT(row,corr)float32dask.array<shape=(6552,4),chunksize=(1000,4)>Attributes:FIELD_ID:0DATA_DESC_ID:0Documentationhttps://xarray-ms.readthedocs.io.LimitationsMany Measurement Sets columns are defined as variably shaped,
but the actual data is fixed.xarray-mswill infer the shape of the
data from the first row and must be consistent
with that of other rows.
For example, this may be issue where multiple Spectral Windows
are present in the Measurement Set with differing channels
per SPW.xarray-msworks around this by partitioning the
Measurement Set into multiple datasets.
The first row’s shape is used to infer the shape of the partition.
Thus, in the case of multiple Spectral Window’s, we can partition
the Measurement Set by DATA_DESC_ID to create a dataset for
each Spectral Window.