UNPKG

@metacell/geppetto-meta-client

Version:

Geppetto web frontend. Geppetto is an open-source platform to build web-based tools to visualize and simulate neuroscience data and models.

72 lines 2.71 kB
import EventManager from '@metacell/geppetto-meta-client/common/EventManager'; var handle_output = function handle_output(data) { // data is the object passed to the callback from the kernel execution switch (data.msg_type) { case 'error': console.log("ERROR while executing a Python command:"); console.log(data.content.evalue.trim()); console.error("ERROR while executing a Python command:"); console.error(data.content.traceback); EventManager.actionsHandler[EventManager.clientActions.ERROR_WHILE_EXEC_PYTHON_COMMAND](data.content); EventManager.actionsHandler[EventManager.clientActions.HIDE_SPINNER](); break; case 'execute_result': console.log(data.content.data['text/plain'].trim(), true); try { var response = JSON.parse(data.content.data['text/plain'].replace(/^'(.*)'$/, '$1')); } catch (error) { var response = data.content.data['text/plain'].replace(/^'(.*)'$/, '$1'); } EventManager.actionsHandler[EventManager.clientActions.RECEIVE_PYTHON_MESSAGE]({ id: data.parent_header.msg_id, type: data.msg_type, response: response }); break; case "display_data": // FIXME break; default: console.log(data.content.text.trim(), true); } }; var execPythonMessage = function execPythonMessage(command) { var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : handle_output; console.log('Executing Python command: ' + command, true); var kernel = IPython.notebook.kernel; var messageID = kernel.execute(command, { iopub: { output: callback } }, { silent: false, stop_on_error: true, store_history: true }); return new Promise(function (resolve, reject) { return EventManager.eventsCallback[EventManager.clientActions.RECEIVE_PYTHON_MESSAGE].add(function (action) { if (action.data.id == messageID) { resolve(action.data.response); } }); }); }; var evalPythonMessage = function evalPythonMessage(command, parameters) { var parse = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true; var parametersString = ''; if (parameters) { if (parameters.length > 0) { parametersString = "(" + parameters.map(function (parameter) { return "utils.convertToPython('" + JSON.stringify(parameter) + "')"; }).join(",") + ")"; } else { parametersString = '()'; } } var finalCommand = command + parametersString; if (parse) { finalCommand = 'utils.convertToJS(' + finalCommand + ')'; } return execPythonMessage(finalCommand, handle_output); }; export { execPythonMessage, evalPythonMessage };