Source code for africanus.coordinates.dask

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


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


from africanus.util.requirements import requires_optional
from africanus.coordinates.coordinates import (radec_to_lmn as np_radec_to_lmn,
                                               radec_to_lm as np_radec_to_lm,
                                               lmn_to_radec as np_lmn_to_radec,
                                               lm_to_radec as np_lm_to_radec,
                                               RADEC_TO_LMN_DOCS,
                                               LMN_TO_RADEC_DOCS)


def _radec_to_lmn(radec, phase_centre):
    return np_radec_to_lmn(radec[0], phase_centre[0] if phase_centre else None)


[docs]@requires_optional('dask.array', dask_import_error) def radec_to_lmn(radec, phase_centre=None): phase_centre_dims = ("radec",) if phase_centre is not None else None return da.core.blockwise(_radec_to_lmn, ("source", "lmn"), radec, ("source", "radec"), phase_centre, phase_centre_dims, new_axes={"lmn": 3}, dtype=radec.dtype)
def _lmn_to_radec(lmn, phase_centre): return np_lmn_to_radec(lmn[0], phase_centre)
[docs]@requires_optional('dask.array', dask_import_error) def lmn_to_radec(lmn, phase_centre=None): phase_centre_dims = ("radec",) if phase_centre is not None else None return da.core.blockwise(_lmn_to_radec, ("source", "radec"), lmn, ("source", "lmn"), phase_centre, phase_centre_dims, new_axes={"radec": 2}, dtype=lmn.dtype)
def _radec_to_lm(radec, phase_centre): return np_radec_to_lm(radec[0], phase_centre[0] if phase_centre else None)
[docs]@requires_optional('dask.array', dask_import_error) def radec_to_lm(radec, phase_centre=None): phase_centre_dims = ("radec",) if phase_centre is not None else None return da.core.blockwise(_radec_to_lm, ("source", "lm"), radec, ("source", "radec"), phase_centre, phase_centre_dims, new_axes={"lm": 2}, dtype=radec.dtype)
def _lm_to_radec(lm, phase_centre): return np_lm_to_radec(lm[0], phase_centre)
[docs]@requires_optional('dask.array', dask_import_error) def lm_to_radec(lm, phase_centre=None): phase_centre_dims = ("radec",) if phase_centre is not None else None return da.core.blockwise(_lm_to_radec, ("source", "radec"), lm, ("source", "lm"), phase_centre, phase_centre_dims, new_axes={"radec": 2}, dtype=lm.dtype)
try: radec_to_lmn.__doc__ = RADEC_TO_LMN_DOCS.substitute( lm_components="3", array_type=":class:`dask.array.Array`") radec_to_lm.__doc__ = RADEC_TO_LMN_DOCS.substitute( lm_components="2", array_type=":class:`dask.array.Array`") lmn_to_radec.__doc__ = LMN_TO_RADEC_DOCS.substitute( lm_name="lmn", lm_components="3", array_type=":class:`dask.array.Array`") lm_to_radec.__doc__ = LMN_TO_RADEC_DOCS.substitute( lm_name="lm", lm_components="2", array_type=":class:`dask.array.Array`") except AttributeError: pass