Source code for astrohack.extract_pointing

import toolviper.utils.parameter

from astrohack.utils.graph import create_and_execute_graph_from_dict
from astrohack.utils.text import get_default_file_name
from astrohack.utils.file import overwrite_file, check_ms_exists
from astrohack.core.extract_pointing import (
    extract_pointing_preprocessing,
    extract_pointing_chunk,
)
from astrohack.io.point_mds import AstrohackPointFile

from typing import List, Union


@toolviper.utils.parameter.validate()
[docs]def extract_pointing( ms_name: str, point_name: str = None, exclude: Union[str, List[str]] = None, parallel: bool = False, overwrite: bool = False, ) -> Union[AstrohackPointFile, None]: """ Extract pointing data from measurement set. Creates holography output file. :param ms_name: Name of input measurement file name. :type ms_name: str :param point_name: Name of *<point_name>.point.zarr* file to create. Defaults to measurement set name with \ *point.zarr* extension. :type point_name: str, optional :param exclude: Name of antenna to exclude from extraction. :type exclude: str, list, optional :param parallel: Boolean for whether to process in parallel. Defaults to False :type parallel: bool, optional :param overwrite: Overwrite pointing file on disk, defaults to False :type overwrite: bool, optional :return: Holography point object. :rtype: AstrohackPointFile .. _Description: **Example Usage** In this case, the pointing_name is the file name to be created after extraction. .. parsed-literal:: from astrohack.extract_pointing import extract_pointing extract_pointing( ms_name="astrohack_observation.ms", point_name="astrohack_observation.point.zarr" ) **AstrohackPointFile** Point object allows the user to access point data via dictionary keys with values `ant`. The point object also provides a `summary()` helper function to list available keys for each file. """ # Doing this here allows it to get captured by locals() point_name = get_default_file_name(ms_name, ".point.zarr", point_name) # Returns the current local variables in dictionary form extract_pointing_params = locals() input_params = extract_pointing_params.copy() check_ms_exists(ms_name) overwrite_file( extract_pointing_params["point_name"], extract_pointing_params["overwrite"] ) ant_dist_matrix, looping_dict, pnt_params, mapping_state_ids = ( extract_pointing_preprocessing(extract_pointing_params) ) # Create mds file here point_mds = AstrohackPointFile.create_from_input_parameters( point_name, input_params ) point_mds.root.attrs["mapping_state_ids"] = mapping_state_ids point_mds.root.attrs["baseline_dist_matrix"] = ant_dist_matrix point_mds.root.attrs["antenna_names"] = pnt_params.pop("antenna_names") point_mds.root.attrs["antenna_ids"] = pnt_params.pop("antenna_ids") point_mds.root.attrs["antenna_stations"] = pnt_params.pop("antenna_stations") point_mds.root.attrs["telescope_name"] = pnt_params.pop("telescope_name") executed_graph = create_and_execute_graph_from_dict( looping_dict=looping_dict, chunk_function=extract_pointing_chunk, param_dict=pnt_params, key_order=["ant"], output_mds=point_mds, ) if executed_graph: return point_mds else: return None