def init_hierarchicals(self, problem_config): """ Initialize hierarchical parameters. Ramp estimation in azimuth and range direction of a radar scene. """ hierarchicals = problem_config.hierarchicals if self.config.fit_plane: logger.info('Estimating ramp for each dataset...') for data in self.datasets: if isinstance(data, heart.DiffIFG): for hierarchical_name in data.plane_names(): hierarchical_keys = utility.list2string( hierarchicals.keys()) if not self.config.fit_plane and \ hierarchical_name in hierarchicals: raise ConfigInconsistentError( 'Plane removal disabled, but they are defined' ' in the problem configuration' ' (hierarchicals)! \n' ' Got: %s' % hierarchical_keys) if self.config.fit_plane and \ hierarchical_name not in hierarchicals: raise ConfigInconsistentError( 'Plane corrections enabled, but they are' ' not defined in the problem configuration!' ' (hierarchicals). Looking for: %s \n' ' Got: %s' % (hierarchical_name, hierarchical_keys)) param = hierarchicals[hierarchical_name] if not num.array_equal(param.lower, param.upper): kwargs = dict(name=param.name, shape=param.dimension, lower=param.lower, upper=param.upper, testval=param.testvalue, transform=None, dtype=tconfig.floatX) try: self.hierarchicals[ hierarchical_name] = Uniform(**kwargs) except TypeError: kwargs.pop('name') self.hierarchicals[hierarchical_name] = \ Uniform.dist(**kwargs) else: logger.info( 'not solving for %s, got fixed at %s' % (param.name, utility.list2string(param.lower.flatten()))) self.hierarchicals[hierarchical_name] = param.lower else: logger.info('No plane for GNSS data.') logger.info('Initialized %i hierarchical parameters ' '(ramps).' % len(self.hierarchicals))
def init_hierarchicals(self, problem_config): """ Initialize hierarchical parameters. Ramp estimation in azimuth and range direction of a radar scene. """ hierarchicals = problem_config.hierarchicals if self.config.fit_plane: logger.info('Estimating ramp for each dataset...') for data in self.datasets: hierarchical_name = data.name + '_ramp' if not self.config.fit_plane and \ hierarchical_name in hierarchicals: raise ConfigInconsistentError( 'Plane removal disabled, but they are defined' ' in the problem configuration (hierarchicals)!') if isinstance(data, heart.DiffIFG): if self.config.fit_plane and \ hierarchical_name not in hierarchicals: raise ConfigInconsistentError( 'Plane corrections enabled, but they are' ' not defined in the problem configuration!' ' (hierarchicals)') param = hierarchicals[hierarchical_name] kwargs = dict(name=param.name, shape=param.dimension, lower=param.lower, upper=param.upper, testval=param.testvalue, transform=None, dtype=tconfig.floatX) try: self.hierarchicals[data.name] = Uniform(**kwargs) except TypeError: kwargs.pop('name') self.hierarchicals[data.name] = \ Uniform.dist(**kwargs) logger.info('Initialized %i hierarchical parameters ' '(ramps).' % len(self.hierarchicals.keys()))
def init_hierarchicals(self, problem_config): """ Initialise random variables for temporal station corrections. """ if not self.config.station_corrections and \ self.correction_name in problem_config.hierarchicals: raise ConfigInconsistentError( 'Station corrections disabled, but they are defined' ' in the problem configuration!') if self.config.station_corrections and \ self.correction_name not in problem_config.hierarchicals: raise ConfigInconsistentError( 'Station corrections enabled, but they are not defined' ' in the problem configuration!') if self.correction_name in problem_config.hierarchicals: logger.info( 'Estimating time shift for each station and waveform map...') for wmap in self.wavemaps: nhierarchs = len(wmap.get_station_names()) logger.info('For %s with %i shifts' % (wmap.time_shifts_id, nhierarchs)) param = problem_config.hierarchicals[self.correction_name] kwargs = dict(name=wmap.time_shifts_id, shape=nhierarchs, lower=num.repeat(param.lower, nhierarchs), upper=num.repeat(param.upper, nhierarchs), testval=num.repeat(param.testvalue, nhierarchs), transform=None, dtype=tconfig.floatX) try: station_corrs_rv = Uniform(**kwargs) except TypeError: kwargs.pop('name') station_corrs_rv = Uniform.dist(**kwargs) self.hierarchicals[wmap.time_shifts_id] = station_corrs_rv else: nhierarchs = 0
def get_hypersize(self, hp_name=''): """ Return size of the hyperparameter Parameters ---------- hp_name: str of hyperparameter name Returns ------- int """ n_datasets = len(self.get_all_dataset_names(hp_name)) if n_datasets == 0: raise ConfigInconsistentError( 'Found no data for hyperparameter "%s". Please either load' ' the data or remove it from types dictionary!' % hp_name, params="hypers") elif self.config.dataset_specific_residual_noise_estimation: return n_datasets else: return 1
def init_hierarchicals(self, problem_config): """ Initialise random variables for temporal station corrections. """ hierarchicals = problem_config.hierarchicals self._hierarchicalnames = [] if not self.config.station_corrections and \ self.correction_name in hierarchicals: raise ConfigInconsistentError( 'Station corrections disabled, but they are defined' ' in the problem configuration!') if self.config.station_corrections and \ self.correction_name not in hierarchicals: raise ConfigInconsistentError( 'Station corrections enabled, but they are not defined' ' in the problem configuration!') if self.correction_name in hierarchicals: logger.info( 'Estimating time shift for each station and waveform map...') for wmap in self.wavemaps: hierarchical_name = wmap.time_shifts_id nhierarchs = len(wmap.get_station_names()) logger.info('For %s with %i shifts' % (hierarchical_name, nhierarchs)) if hierarchical_name in hierarchicals: logger.info('Using wavemap specific imported:' ' %s ' % hierarchical_name) param = hierarchicals[hierarchical_name] else: logger.info('Using global %s' % self.correction_name) param = copy.deepcopy( problem_config.hierarchicals[self.correction_name]) param.lower = num.repeat(param.lower, nhierarchs) param.upper = num.repeat(param.upper, nhierarchs) param.testvalue = num.repeat(param.testvalue, nhierarchs) if hierarchical_name not in self.hierarchicals: if not num.array_equal(param.lower, param.upper): kwargs = dict(name=hierarchical_name, shape=param.dimension, lower=param.lower, upper=param.upper, testval=param.testvalue, transform=None, dtype=tconfig.floatX) try: self.hierarchicals[hierarchical_name] = Uniform( **kwargs) except TypeError: kwargs.pop('name') self.hierarchicals[hierarchical_name] = \ Uniform.dist(**kwargs) self._hierarchicalnames.append(hierarchical_name) else: logger.info( 'not solving for %s, got fixed at %s' % (param.name, utility.list2string(param.lower.flatten()))) self.hierarchicals[hierarchical_name] = param.lower
def init_hierarchicals(self, problem_config): """ Initialize hierarchical parameters. Ramp estimation in azimuth and range direction of a radar scene and/or Rotation of GNSS stations around an Euler pole """ hierarchicals = problem_config.hierarchicals self._hierarchicalnames = [] for number, corr in enumerate( self.config.corrections_config.iter_corrections()): logger.info('Evaluating config for %s corrections ' 'for datasets...' % corr.feature) if corr.enabled: for data in self.datasets: if data.name in corr.dataset_names: hierarchical_names = corr.get_hierarchical_names( name=data.name, number=number) else: hierarchical_names = [] for hierarchical_name in hierarchical_names: if not corr.enabled and hierarchical_name in hierarchicals: raise ConfigInconsistentError( '%s %s disabled, but they are defined' ' in the problem configuration' ' (hierarchicals)!' % (corr.feature, data.name)) if corr.enabled and hierarchical_name not in hierarchicals \ and data.name in corr.dataset_names: raise ConfigInconsistentError( '%s %s corrections enabled, but they are' ' not defined in the problem configuration!' ' (hierarchicals)' % (corr.feature, data.name)) param = hierarchicals[hierarchical_name] if hierarchical_name not in self.hierarchicals: if not num.array_equal(param.lower, param.upper): kwargs = dict(name=param.name, shape=param.dimension, lower=param.lower, upper=param.upper, testval=param.testvalue, transform=None, dtype=tconfig.floatX) try: self.hierarchicals[ hierarchical_name] = Uniform(**kwargs) except TypeError: kwargs.pop('name') self.hierarchicals[hierarchical_name] = \ Uniform.dist(**kwargs) self._hierarchicalnames.append( hierarchical_name) else: logger.info( 'not solving for %s, got fixed at %s' % (param.name, utility.list2string( param.lower.flatten()))) self.hierarchicals[ hierarchical_name] = param.lower else: logger.info('No %s correction!' % corr.feature) logger.info('Initialized %i hierarchical parameters.' % len(self.hierarchicals))