@exp_class_working_dir<EOL><INDENT>def run(self, exp_config=None, app_id=None, bot=False, **kwargs):<DEDENT>
import dallinger as dlgr<EOL>app_id = self.make_uuid(app_id)<EOL>if bot:<EOL><INDENT>kwargs["<STR_LIT>"] = "<STR_LIT>"<EOL><DEDENT>self.app_id = app_id<EOL>self.exp_config = exp_config or kwargs<EOL>self.update_status("<STR_LIT>")<EOL>try:<EOL><INDENT>if self.exp_config.get("<STR_LIT>") == "<STR_LIT>":<EOL><INDENT>dlgr.command_line.debug.callback(<EOL>verbose=True, bot=bot, proxy=None, exp_config=self.exp_config<EOL>)<EOL><DEDENT>else:<EOL><INDENT>dlgr.deployment.deploy_sandbox_shared_setup(<EOL>dlgr.command_line.log,<EOL>app=app_id,<EOL>verbose=self.verbose,<EOL>exp_config=self.exp_config,<EOL>)<EOL><DEDENT><DEDENT>except Exception:<EOL><INDENT>self.update_status("<STR_LIT>")<EOL>raise<EOL><DEDENT>else:<EOL><INDENT>self.update_status("<STR_LIT>")<EOL><DEDENT>self._await_completion()<EOL>self.update_status("<STR_LIT>")<EOL>data = self.retrieve_data()<EOL>self.update_status("<STR_LIT>")<EOL>return data<EOL>
Deploy and run an experiment.

        The exp_config object is either a dictionary or a
        ``localconfig.LocalConfig`` object with parameters
        specific to the experiment run grouped by section.