Run SIMS in the browser using h5wasm to read local AnnData (.h5ad) files and ONNX to run the model.
Opens an h5ad in the browser and runs a selected SIMs model and displays predictions.
You can view the default ONNX model via netron
Export a SIMS checkpoint to an onnx file and list of genes. Note this assumes you have the SIMS repo as a peer to this one so it can load the model definition.
python scripts/sims-to-onnx.py models/default.ckpt
Check the core model for compatibility with onnx
python -m onnxruntime.tools.check_onnx_model_mobile_usability models/default.onnx
Serve the web app and models locally
make serve
worker.js uses h5wasm slice() to read data from the cell by gene matrix (i.e. X). As these data on disk are typically stored row major (i.e. all data for a cell is contiguous) we can process the sample incrementally keeping memory requirements to a minimum. Reading cell by cell from a 5.3G h5ad file consumed just under 30M of browser memory. YMMV.
Processing a test sample with 2638 cells took 67 seconds in the browser vs. 34 seconds in python on the same machine.
Open Neural Network Exchange (ONNX)
ONNX Runtime Web (WASM Backend)
ONNX Runtime Web Platform Functionality Details
ONNX Runtime Javascript Examples
Netron ONNX Graph Display Website
Graphical ONNX Editor Classify images in a web application with ONNX Runtime Web