def test_log_messages(self): ema_logging.log_to_stderr(ema_logging.DEBUG) with mock.patch('util.ema_logging._logger') as mocked_logger: message = 'test message' ema_logging.debug(message) mocked_logger.debug.assert_called_with(message) ema_logging.info(message) mocked_logger.info.assert_called_with(message) ema_logging.warning(message) mocked_logger.warning.assert_called_with(message) ema_logging.error(message) mocked_logger.error.assert_called_with(message) ema_logging.exception(message) mocked_logger.exception.assert_called_with(message) ema_logging.critical(message) mocked_logger.critical.assert_called_with(message)
def run_experiment(self, experiment): '''The logic for running a single experiment. This code makes sure that model(s) are initialized correctly. Parameters ---------- experiment : dict Returns ------- experiment_id: int case : dict policy : str model_name : str result : dict Raises ------ EMAError if the model instance raises an EMA error, these are reraised. Exception Catch all for all other exceptions being raised by the model. These are reraised. ''' policy = experiment.pop('policy') model_name = experiment.pop('model') experiment_id = experiment.pop('experiment id') policy_name = policy['name'] ema_logging.debug("running policy {} for experiment {}".format(policy_name, experiment_id)) # check whether we already initialized the model for this # policy if not (policy_name, model_name) in self.msi_initialization.keys(): try: ema_logging.debug("invoking model init") msi = self.msis[model_name] msi.model_init(copy.deepcopy(policy), copy.deepcopy(self.model_kwargs)) except EMAError as inst: ema_logging.exception(inst) self.cleanup() raise inst except Exception as inst: ema_logging.exception("some exception occurred when invoking the init") self.cleanup() raise inst ema_logging.debug("initialized model %s with policy %s" % (model_name, policy_name)) self.msi_initialization = {(policy_name, model_name):self.msis[model_name]} msi = self.msis[model_name] case = copy.deepcopy(experiment) try: ema_logging.debug("trying to run model") msi.run_model(case) except CaseError as e: ema_logging.warning(str(e)) ema_logging.debug("trying to retrieve output") result = msi.retrieve_output() ema_logging.debug("trying to reset model") msi.reset_model() return experiment_id, case, policy, model_name, result
def run_experiment(self, experiment): '''The logic for running a single experiment. This code makes sure that model(s) are initialized correctly. Parameters ---------- experiment : dict Returns ------- experiment_id: int case : dict policy : str model_name : str result : dict Raises ------ EMAError if the model instance raises an EMA error, these are reraised. Exception Catch all for all other exceptions being raised by the model. These are reraised. ''' policy = experiment.pop('policy') model_name = experiment.pop('model') experiment_id = experiment.pop('experiment id') policy_name = policy['name'] ema_logging.debug("running policy {} for experiment {}".format( policy_name, experiment_id)) # check whether we already initialized the model for this # policy if not (policy_name, model_name) in self.msi_initialization.keys(): try: ema_logging.debug("invoking model init") msi = self.msis[model_name] msi.model_init(copy.deepcopy(policy), copy.deepcopy(self.model_kwargs)) except EMAError as inst: ema_logging.exception(inst) self.cleanup() raise inst except Exception as inst: ema_logging.exception( "some exception occurred when invoking the init") self.cleanup() raise inst ema_logging.debug("initialized model %s with policy %s" % (model_name, policy_name)) self.msi_initialization = { (policy_name, model_name): self.msis[model_name] } msi = self.msis[model_name] case = copy.deepcopy(experiment) try: ema_logging.debug("trying to run model") msi.run_model(case) except CaseError as e: ema_logging.warning(str(e)) ema_logging.debug("trying to retrieve output") result = msi.retrieve_output() ema_logging.debug("trying to reset model") msi.reset_model() return experiment_id, case, policy, model_name, result