Exemplo n.º 1
0
    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