Development Instructions
This repo contains multiple sub-packages:
Frontend:
packages/component: TheEmbeddingViewandEmbeddingViewMosaiccomponents.packages/table: TheTablecomponent.packages/viewer: The frontend application for visualizing embedding and other columns. It also provides theEmbeddingAtlascomponent that can be embedded in other applications.packages/density-clustering: The density clustering algorithm, written in Rust.packages/umap-wasm: An implementation of UMAP algorithm in WebAssembly (with the umappp C++ library).packages/embedding-atlas: Theembedding-atlaspackage that get published. It imports all of the above and exposes their API in a single package.
Python:
packages/backend: A Python package namedembedding-atlasthat provides theembedding-atlascommand line tool.
Documentation:
packages/docs: The documentation website.
Prerequisites
Basic development:
- Ensure Node.js and npm are installed.
- Install the uv package manager.
Additional requirements for WASM packages:
- Install Emscripten to develop the
umap-wasmpackage. - Install Rust and wasm-pack to develop the
density-clusteringpackage.
Install and Build
Install the development setup by running:
npm installYou can also build all packages by running:
npm run buildThis command builds all packages except the WASM packages (umap-wasm and density-clustering). Pre-built WASM outputs (included in the repository to ease development) are used.
You may launch the command-line tool with a demo dataset:
cd packages/backend
./start.shTo start development server for the frontend packages (component, table, viewer):
cd packages/viewer # or packages/component, packages/table.
npm run devCheck the individual package READMEs for specific instructions.
Deployment
The packages and website for the project are deployed with GitHub Actions. Deployment triggers when a released is published with a tag vX.Y.Z.
The documentation website can be deployed by manually running the workflow with "Publish Documentation Website" enabled. The data for the online demo is created automatically in packages/docs/generate_demo_data.py, and cached in the GitHub action.