seespot-demo.mp4
Clone this Capsule
# Clone repository
git clone https://github.com/AllenNeuralDynamics/see-spot.git
cd see-spot
# Run installer (uses defaults: port 5555, cache at ~/.seespot/cache)
./install.sh
# Or customize settings interactively
./install.sh --interactive
# Start the server
seespot start
# Access at http://localhost:5555For detailed installation instructions, AWS credentials setup, and troubleshooting, see INSTALL.md.
git clone https://github.com/AllenNeuralDynamics/see-spot.git- Install:
uv sync - Launch with auto-reload:
cd /home/matt.davis/code/see-spot && source .venv/bin/activate && cd src && uvicorn see_spot.app:app --host 0.0.0.0 --port 9999 --reloadStandard datasets with fused image data at the top level:
dataset_name/
image_spot_spectral_unmixing/
mixed_spots_*.pkl
unmixed_spots_*.pkl
image_tile_fusing/fused/
channel_*.zarr
Datasets with independent tile processing, where each tile has separate spot data:
dataset_name/
image_spot_spectral_unmixing/
Tile_X_0001_Y_0000_Z_0000/
mixed_spots_*_tile_*.pkl
unmixed_spots_*_tile_*.pkl
Tile_X_0002_Y_0000_Z_0000/
...
When downloading a tiled dataset, the system automatically:
- Detects tile subfolders (beginning with "Tile")
- Creates virtual dataset entries for each tile
- Names them as:
{dataset_name}_X_####_Y_####_Z_####
- v0.7.0 (11-21-2025)
- Big feature: loading of single tile dataset (non-fused)
- Looks in spectral_unmixing, if "Tile" subfolders" load pkl files from each and show them in the app
- Creates virtual datasets for each tile, shown in dataset management table
- Big feature: use lasso to make multi selection neuroglancer annotations
- Legend series visibilty persists across app interactions
- class balanced sampling option
- removed spots in unmixed hidden by default
- load mixed table first
- dye lines plotting
- display filters (r dist) refactor
- Better dataset management (with filters) use DataTables js
- add spot persistent marker when clicked
- Big feature: loading of single tile dataset (non-fused)
- v0.5.0 (09-19-2025)
- backend downloads mixed + unmixed tables, merges and saves as .parquet (massive compression)
- polars for dataframe manipulation (huge speedup)
- optimized data types in tables, reduced memory demands
- added removed_spots key in data table and plotting in frontend
- Added mixed/unmixed channel display mode toggle with dedicated UI controls
- Implemented chart axis limit controls (auto, fixed, min/max, percentile modes)
- Added Sankey flow diagram showing channel reassignment patterns with backend data calculation
- Enhanced data filtering with valid spots toggle and removed spots highlighting
coverage run -m unittest discover && coverage report
interrogate .
flake8 .
black .
isort .- Internal members, please create a branch.
- External members, fork repo and open PR
- We primarily use Angular style for commit messages. Roughly, they should follow the pattern:
<type>: <short summary>
- build: Changes that affect build tools or external dependencies (example scopes: pyproject.toml, setup.py)
- ci: Changes to our CI configuration files and scripts (examples: .github/workflows/ci.yml)
- docs: Documentation only changes
- feat: A new feature
- fix: A bugfix
- perf: A code change that improves performance
- refactor: A code change that neither fixes a bug nor adds a feature
- test: Adding missing tests or correcting existing tests
