Skip to content

Latest commit

 

History

History
45 lines (36 loc) · 2.29 KB

README.md

File metadata and controls

45 lines (36 loc) · 2.29 KB

Spresso Web - An Isotachphoresis Simulator

This project is a web based GPU-accelerated re-implementation of Spresso (Stanford Public Release Electrophoretic Sparation Solver). It adopts a pure-frontend implementation that removes the requirement for a backend compute server. This means that all computations run entirely on local browsers, providing a maximum degree of real-time user interactivity.

Implementation Notes

High dimensional array processing is done via TensorFlow JavaScript. A simulation step is defined as a TensorFlow computation graph here. The graph is serialized and saved as a TF SavedModel. The model is then loaded by the JavaScript frontend, and inference is done by executing the graph. The computation can be accelerated on GPU (via WebGL) per device supports, thanks to tfjs-backend-webgl. CPU acceleration (via WebAssembly) is unfortunately not yet supported. It is mainly awaiting upstream tfjs-backend-wasm supports for cumsum operator.

Project Structure

|-- public              # directory for all statically served files
|   |-- spresso_sim     # serialized simulation model
|   |-- spresso_ph      # serialized pH initialization model
|-- src                 # all JS / CSS source files
|   |-- App.js          # top level simulation UI interface
|   |-- Input.js        # encapsulation of commonly used input elements
|   |-- Spresso.js      # encapsulation of spresso simulation states management
|   |-- worker.js       # a seperate web worker that runs the simulation
|-- python              # all Python source files
|   |-- spresso_tf.py   # Tensorflow 2.x implementation of Spresso computation graph
|   |-- utils.py        # utility functions for post analysis
|-- config-overrides.js # react-app-rewired custom configurations
|-- package.json        # library dependancies

Serving

This project is bootstrapped with Create React App. Follow their instructions to setup and serve the project.