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.
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.
|-- 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
This project is bootstrapped with Create React App. Follow their instructions to setup and serve the project.