def init(self, boot_spec): ExpSwitcher.init(self, boot_spec) # TODO: check float if len(boot_spec.get_observations().shape()) != 2: raise UnsupportedSpec('I assume 2D signals.') self.y_stats = ImageStats()
class EstStats2D(ExpSwitcher): ''' A simple agent that estimates various statistics of the observations. Assumes 2D signals. ''' def init(self, boot_spec): ExpSwitcher.init(self, boot_spec) # TODO: check float if len(boot_spec.get_observations().shape()) != 2: raise UnsupportedSpec('I assume 2D signals.') self.y_stats = ImageStats() def merge(self, other): self.y_stats.merge(other.y_stats) def process_observations(self, obs): y = obs['observations'] dt = obs['dt'].item() self.y_stats.update(y, dt) def get_state(self): return dict(y_stats=self.y_stats) def set_state(self, state): self.y_stats = state['y_stats'] def publish(self, pub): if self.y_stats.get_num_samples() == 0: pub.text('warning', 'Too early to publish anything.') return self.y_stats.publish(pub)