Skip to content
DraconiticResearch
Search Sources API
201,818 studies31 sourcesUpdated 18 min ago
PreprintCC BYbioRxiv

scPyviewer: a Python-native interactive viewer from AnnData single-cell data

  1. 1Indiana University

Abstract

Motivation: Interactive tools that let non-programmers explore an analyzed single-cell dataset, its embeddings, gene expression, cell metadata, and marker genes, have become standard laboratory infrastructure. Every actively maintained tool in this space (ShinyCell, ScRDAVis, sCIRCLE, scViewer) is built on R Shiny and requires a Seurat object as input. Laboratories whose primary analysis pipeline is Python/scanpy, the dominant framework for single-cell RNA-seq, spatial, and multi-omic analysis, therefore have no lightweight, language-native option that pairs a shareable web-based viewer with a scriptable Python API: sharing a scanpy result means either exporting to Seurat first or handing over a notebook that only a programmer can run. Results: We present scPyviewer, a web-based viewer that ingests AnnData objects directly and reproduces the core interaction patterns of the incumbent R Shiny tools without leaving the Python stack. In a feature-parity audit against three actively maintained R Shiny incumbents, scPyviewer matches or exceeds every baseline capability (7/7); among these, it uniquely offers native AnnData ingestion with no Seurat conversion, and cross-dataset comparison over shared genes and matched cell-type composition. Benchmarked head-to-head against the R/Seurat rendering substrate the incumbents are built on, identical operations, identical data, across three datasets spanning 22,315 to roughly 313,000 cells, scPyviewer renders every core view faster at every scale tested (up to 3.6x on a single view) and at a fraction of the memory (5.2x lower on the smallest dataset). At the largest scale tested, the gap becomes categorical rather than incremental: scPyviewer completes every view on a 313,000-cell dataset while the Seurat substrate exhausts an 8 GB memory budget and fails outright. Beyond the interactive app, scPyviewer installs via pip or conda and exposes a public Python API that returns Matplotlib figures and pandas tables for scripted, publication-ready output. Availability and implementation: scPyviewer is implemented in Python 3.11 (scanpy 1.11.5, anndata 0.12.19, streamlit 1.59.2, plotly 6.9.0) and distributed with a one-command reproduction interface that installs pinned dependencies, regenerates the benchmark and all figures, and launches the interactive app. Source code is available at https://github.com/xuan13hao/scPyviewer.git.

Related

  1. napari-TurboBox: Interactive Multi-Viewer Bounding Box Annotation for AI-Guided Volumetric Bioimaging
    Nils Friederich, Philip Kohle, Maximilian Beichter +11
    arXivPreprintCC BY 4.0Full textBioinformatics & computational biologyarXiv
  2. SynFlow: an interactive online genome structural variant viewer
    Marilyne Summo, Gaëtan Droc, Mathieu Rouard +1
    BioinformaticsPeer-reviewedCC BY 4.0Full textProteomics & metabolomicsEcologyHAL
  3. An Open-Source Web-Based Viewer for Disseminating Image-Derived Models
    Christian Herz, Kyle Sunderland, Matthew Daemer +11
    arXivPreprintCC BY 4.0Full textBioinformatics & computational biologyarXiv
  4. digimouth: a Python package for modeling aroma release in food science
    C. Peltier, O. Mourabit, K. Coulibaly +2
    bioRxivPreprintAll rights reservedFull textSystems & synthetic biologybioRxiv
  5. Severe Tick Infestation and Haemogregarina spp. Infection in a Captive African Rock Python ( Python sebae ): A Clinical and Parasitological Case from Nigeria
    Foluke Adedayo Akande, Adrian A. Diaz Sanchez, Adeniyi Olugbenga Egbetade +6
    Veterinary Medicine and SciencePeer-reviewedCC BY 4.0Full textMicrobiologyHAL
BibTeX
@misc{xuan2026scpyviewer,
  title = {{scPyviewer: a Python-native interactive viewer from AnnData single-cell data}},
  author = {H. Xuan and Y. Huang and J. Bian and X. Liu},
  howpublished = {bioRxiv},
  year = {2026},
  month = aug,
  doi = {10.64898/2026.08.26.747418},
  url = {https://www.biorxiv.org/content/10.64898/2026.08.26.747418v1},
  note = {CC BY},
}
RIS
TY  - UNPB
TI  - scPyviewer: a Python-native interactive viewer from AnnData single-cell data
AU  - H. Xuan
AU  - Y. Huang
AU  - J. Bian
AU  - X. Liu
PY  - 2026
DA  - 2026/08/26
PB  - bioRxiv
DO  - 10.64898/2026.08.26.747418
UR  - https://www.biorxiv.org/content/10.64898/2026.08.26.747418v1
AB  - Motivation: Interactive tools that let non-programmers explore an analyzed single-cell dataset, its embeddings, gene expression, cell metadata, and marker genes, have become standard laboratory infrastructure. Every actively maintained tool in this space (ShinyCell, ScRDAVis, sCIRCLE, scViewer) is built on R Shiny and requires a Seurat object as input. Laboratories whose primary analysis pipeline is Python/scanpy, the dominant framework for single-cell RNA-seq, spatial, and multi-omic analysis, therefore have no lightweight, language-native option that pairs a shareable web-based viewer with a scriptable Python API: sharing a scanpy result means either exporting to Seurat first or handing over a notebook that only a programmer can run. Results: We present scPyviewer, a web-based viewer that ingests AnnData objects directly and reproduces the core interaction patterns of the incumbent R Shiny tools without leaving the Python stack. In a feature-parity audit against three actively maintained R Shiny incumbents, scPyviewer matches or exceeds every baseline capability (7/7); among these, it uniquely offers native AnnData ingestion with no Seurat conversion, and cross-dataset comparison over shared genes and matched cell-type composition. Benchmarked head-to-head against the R/Seurat rendering substrate the incumbents are built on, identical operations, identical data, across three datasets spanning 22,315 to roughly 313,000 cells, scPyviewer renders every core view faster at every scale tested (up to 3.6x on a single view) and at a fraction of the memory (5.2x lower on the smallest dataset). At the largest scale tested, the gap becomes categorical rather than incremental: scPyviewer completes every view on a 313,000-cell dataset while the Seurat substrate exhausts an 8 GB memory budget and fails outright. Beyond the interactive app, scPyviewer installs via pip or conda and exposes a public Python API that returns Matplotlib figures and pandas tables for scripted, publication-ready output. Availability and implementation: scPyviewer is implemented in Python 3.11 (scanpy 1.11.5, anndata 0.12.19, streamlit 1.59.2, plotly 6.9.0) and distributed with a one-command reproduction interface that installs pinned dependencies, regenerates the benchmark and all figures, and launches the interactive app. Source code is available at https://github.com/xuan13hao/scPyviewer.git.
ER  -