Source code for africanus.model.wsclean.dask

# -*- coding: utf-8 -*-


from africanus.model.wsclean.spec_model import spectra as np_spectra, SPECTRA_DOCS
from africanus.util.requirements import requires_optional

try:
    import dask.array as da
except ImportError as e:
    opt_import_error = e
else:
    opt_import_error = None


def spectra_wrapper(stokes, spi, log_si, ref_freq, frequency):
    return np_spectra(stokes, spi[0], log_si, ref_freq, frequency)


[docs] @requires_optional("dask.array", opt_import_error) def spectra(stokes, spi, log_si, ref_freq, frequency): corrs = tuple("corr-%d" % i for i in range(len(stokes.shape[1:]))) log_si_schema = None if isinstance(log_si, bool) else ("source",) return da.blockwise( spectra_wrapper, ("source", "chan") + corrs, stokes, ("source",) + corrs, spi, ("source", "spi") + corrs, log_si, log_si_schema, ref_freq, ("source",), frequency, ("chan",), dtype=stokes.dtype, )
try: spectra.__doc__ = SPECTRA_DOCS.substitute(array_type=":class:`dask.array.Array`") except AttributeError: pass