GenomeSpy
GenomeSpy is a visualization toolkit for genomic (and other) data. It features a visualization grammar inspired by Vega-Lite and a high-performance, WebGL-powered graphics renderer.
Documentation and examples can be found at https://genomespy.app/
Monorepo
GenomeSpy is split into several packages, two of which, core and app, are the most important:
Core
The core library provides the visualization grammar and a WebGL-powered rendering engine.
Cohort App
The app builds upon the core, extending the visualization grammar with support for faceting multiple (up to thousands of) patient samples. It provides a user interface for interactive analysis of the samples, which can be filtered, sorted, and grouped flexibly. The app includes session handling with provenance, URL hashes, and bookmarks.
Embed Examples
The embed-examples package contains examples of how to embed GenomeSpy in web applications and use the API for advanced use cases.
Contributing
Bootstrapping and running
git clone [email protected]:genome-spy/genome-spy.gitcd genome-spynpm cinpm run build:schemas(enables schema-assisted example editing)npm start(starts a development server with the app package)
genome-spy.code-workspace to enable the shared JSON
Schema associations and schema-generation task without changing personal
.vscode/ settings.
The repo-root examples/ directory contains curated shared example
specifications that can be accessed through URLs like
http://localhost:8080/?spec=examples/core/first.json.
Use repo-root private/ for local experiments that should not go into version
control. The dev server serves it at
http://localhost:8080/?spec=private/foo.json.
If you want to use or develop the core library, launch a single-page app using:
npm -w @genome-spy/core run dev
Building Docs
The docs toolchain uses Zensical in a repo-local Python
virtual environment managed by uv. Install uv
once on your machine, then sync the docs dependencies into .venv from the
repo root:
brew install uvon macOS, or installuvon Linux using the method from
npm cinpm run docs:installnpm run docs:servefor local preview, ornpm run build:docsfor a full build
.cache. The full-build command clears
that cache.
Contributing guidelines
Please see the CONTRIBUTING.md file for more information.
Citing
If you use GenomeSpy in your research, please cite the following paper: Kari Lavikka, Jaana Oikkonen, Yilin Li, Taru Muranen, Giulia Micoli, Giovanni Marchi, Alexandra Lahtinen, Kaisa Huhtinen, Rainer Lehtonen, Sakari Hietanen, Johanna Hynninen, Anni Virtanen, Sampsa Hautaniemi, Deciphering cancer genomes with GenomeSpy: a grammar-based visualization toolkit, _GigaScience_, Volume 13, 2024, giae040, https://doi.org/10.1093/gigascience/giae040
Use in clinical settings
GenomeSpy is intended for research and general data-visualization purposes and has not been validated or approved for clinical diagnostic use.
Use of AI assistance
Since the beginning of 2026, most of the code in this repository has been written with the assistance of AI tools, mostly OpenAI's Codex. The architecture of the code and the overall design of the system are the result of careful human decisions. All non-trivial code has been reviewed by a human developer.
About
Copyright (c) 2018-2026 Kari Lavikka and contributors. See LICENSE for details.
GenomeSpy was created by Kari Lavikka as an MSc student at the University of Helsinki and was subsequently developed further in the Systems Biology of Drug Resistance in Cancer group.
Development of GenomeSpy has been supported by funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No. 965193 (DECIDER) and No. 847912 (RESCUER), as well as from the Biomedicum Helsinki Foundation, the Sigrid Jusélius Foundation, the Cancer Foundation Finland, and Orion Research Foundation.
Contains some code copied and adapted from the following projects: