Profile
Back to NewsBack
GitHub Trending 4 min
Reader Mode
genome-spy/genome-spy: A visualization grammar and GPU-accelerated toolkit for genomic data

genome-spy/genome-spy: A visualization grammar and GPU-accelerated toolkit for genomic data

12 hours ago

GenomeSpy

!Teaser

!npm version DOI</a>

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

  1. git clone [email protected]:genome-spy/genome-spy.git
  2. cd genome-spy
  3. npm ci
  4. npm run build:schemas (enables schema-assisted example editing)
  5. npm start (starts a development server with the app package)
VSCode users should open 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:

  1. brew install uv on macOS, or install uv on Linux using the method from
the upstream docs
  1. npm ci
  2. npm run docs:install
  3. npm run docs:serve for local preview, or npm run build:docs for a full build
Zensical caches transformed Markdown in .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:

Chat with me