Speaker
Description
Most major facilities using Mantid run data analysis servers for their users. In many cases these are cloud-based virtual machines (VMs) which are allocated to a single user. The specifications of these VMs are often defined by the most computationally expensive tasks required so in many simpler cases they are underused. Furthermore they are often idle as users are waiting for data or simply forget to shut down the VMs when they are done. The advantage of these systems is that users don't have to install any software or to download their data. This can also be achieved more efficiently with a file server (for the data) and a WebAssembly/Javascript app where the computations are carried on the user's own computer. In this presentation I show how the Mantid Framework can be compiled to WebAssembly (wasm)[1] and run in-browser using the Pyodide Python distribution. Some Mantid GUI interfaces were ported by using a wrapper layer which replaces qtpy
with code which translates the PyQt/PySide calls to Javascript using the OS.js environment. This saves having to compile Qt and PySide to wasm (which is possible). The disadvantage of this approach is that it is limited to 4GB of memory as wasm is a 32-bit platform, but the target here is for less compute-intensive "first look" applications. The prototype implementation also does not support threading although this is possible with wasm. [1] https://github.com/mducle/micromantid