Development Instructions
This repo contains multiple sub-packages:
Frontend:
packages/component
: TheEmbeddingView
andEmbeddingViewMosaic
components.packages/table
: TheTable
component.packages/viewer
: The frontend application for visualizing embedding and other columns. It also provides theEmbeddingAtlas
component 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-atlas
package that get published. It imports all of the above and exposes their API in a single package.
Python:
packages/backend
: A Python package namedembedding-atlas
that provides theembedding-atlas
command 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-wasm
package. - Install Rust and wasm-pack to develop the
density-clustering
package.
Install and Build
Install the development setup by running:
npm install
You can also build all packages by running:
npm run build
This 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.sh
To start development server for the frontend packages (component
, table
, viewer
):
cd packages/viewer # or packages/component, packages/table.
npm run dev
Check 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.