def set_telescope_params(self, overwrite=False): """ Set telescope related parameters. If the telescope_name is in the known_telescopes, set any missing telescope-associated parameters (e.g. telescope location) to the value for the known telescope. Args: overwrite: Option to overwrite existing telescope-associated parameters with the values from the known telescope. Default is False. """ telescope_obj = uvtel.get_telescope(self.telescope_name) if telescope_obj is not False: params_set = [] for p in telescope_obj: self_param = getattr(self, p) if overwrite is True or self_param.value is None: params_set.append(self_param.name) prop_name = self_param.name setattr(self, prop_name, getattr(telescope_obj, prop_name)) if len(params_set) == 1: params_set_str = params_set[0] warnings.warn('{param} is not set. Using known values ' 'for {telescope_name}.'.format(param=params_set_str, telescope_name=telescope_obj.telescope_name)) elif len(params_set) > 1: params_set_str = ', '.join(params_set) warnings.warn('{params} are not set. Using known values ' 'for {telescope_name}.'.format(params=params_set_str, telescope_name=telescope_obj.telescope_name)) else: raise ValueError('Telescope {telescope_name} is not in ' 'known_telescopes.'.format(telescope_name=self.telescope_name))