SCANPY: large-scale single-cell gene expression data analysis

F. Alexander Wolf, Philipp Angerer, Fabian J. Theis · Genome biology · 2018 · biology · 10.1186/s13059-017-1382-0 · record wolf2018-scanpy-large-scale-single-cell-gen
tag layer · index · concepts · authors · עברית
Where this record's text came from. 2026-08-20, 2026-08-25 and 2026-08-28 schema-0.3 passes: every quote verified as an exact substring of the staged text and anchored at merge time; concept terms verified present; every edge endpoint an existing node.
How to read this page. The article text below is reproduced exactly as it was staged; nothing in it has been rewritten. Coloured stretches are tagged. A solid underline means the tag records the paper's own words. A dotted underline means the tag text is the tagger's sentence about the paper — the quotation is the paper's, the wording of the tag is not. Every superscript label links to that tag's row in the table at the foot of the page. The machine-readable edition of the same thing is the TEI file beside this one, where the tags live in standOff. When we have changed our mind. Some entries in the table begin with a word in capitals and the reason for it. EVIDENCE CORRECTED — the finding still stands, but we had quoted the wrong sentence from the paper, and the quotation has been replaced with the right one. RETRACTED — the entry itself was wrong; it stays on the page, marked, with the reason, rather than being deleted. WITHDRAWN AND REPLACED — the entry was wrong, and a corrected version of it appears in the entries below. Each mark carries its own reason, in brackets, because the reasons differ from one entry to the next. An entry we have WITHDRAWN is removed from this page and kept in the record, with its reason. A line reading Audit and a date is a later re-reading of the entry against its whole sentence: DOUBTFUL means it was kept, and the reason says what is loose about it. Quotation marks inside the tagger's sentence. Where a tag is the tagger's own sentence, a phrase in quotation marks inside it is borrowed from the paper — the tagger's wording around it is not. The paper's own sentence is the evidence quote shown on the same row, so the borrowing can be checked against the thing borrowed from without leaving this page. Nothing inside quotation marks anywhere on this page is ours: if it is quoted, it is the paper's. Whose words a concept carries. A concept entry records a term the paper itself uses, so the term, the sense given for it, and its evidence are the paper's own words, quoted where the paper fixes them. This is the opposite of a sense entry in the tag table, which is the tagger's sentence about how the paper uses a term. Where a concept entry could not be grounded in the paper's words, the entry says so on its own row.
Other fields define these differently the same word, defined another way in another discipline
STUDY 3 fields · clustering 3 fields · static 2 fields · visualization 2 fields

Tags on this paper

Every tag the record carries, each linking to every other paper in the corpus that carries it. A tag appears here whether or not its words occur in the article — the spans below are only the ones a sentence in this paper licenses. Of the 36 concept tags on this paper, all 36 are grounded in a quoted sentence. 23 carry the tagger's gloss of what the term means in this paper, which is not something the article can license.
SCANPY ANNDATA EXPRESSIONSET backed mode memory mode annotations data matrix neighborhood relations single graph representation sparse data CELL RANGER SEURAT Python ecosystem scalable toolkit preprocessing visualization clustering pseudotime and trajectory inference differential expression testing simulation of gene regulatory networks generic class annotated data matrices HDF5-based backing in-place non-destructive transformation online-learning formulations class for representing a graph of neighborhood relations random-walk-based metrics static dynamic HDF5 backing FLOTILLA data analysis framework STUDY simple HDF5-backed class ANNDATA large-scale data graph-based methods ONE REPRESENTATION, COMPUTED ONCE, REUSED: the tools share a single graph of the data instead of each building its own, which the paper justifies by what it avoids - DIFFERENT, POTENTIALLY INCONSISTENT representations of the same data EXTENSIBILITY THROUGH A FIXED STRUCTURE: a tool extracts from the matrix and writes its result back into the same object, and the object's structure is unaffected - so adding a method does not oblige anything else to change SCALE BY CHANGING RESIDENCY, NOT ALGORITHM: HDF5 backing lets the object be operated on without being loaded, so the limit moves from memory size to disk SPEED FROM BLOCKING, NOT FROM APPROXIMATION: neighbourhood distances are computed by aggregating rows into submatrices and multiplying, rather than by sampling system-or-tool-building
Method, as described: a Python toolkit built around one annotated data class, with HDF5 backing and a single reused neighbourhood graph

Legend

claim typeclaim_typethe shape of the claim: existence, mechanism, method, critique, prediction, null
concept edgeconcept_edgesan asserted relation between two concepts, with the sentence asserting it
conceptconceptsan idea the paper works with, quoted where the paper uses it
contributioncontributionwhat the paper claims to add
controlcontrolsan experiment run to eliminate a rival explanation
limitationlimitationswhat the paper says its evidence cannot support
mechanismmechanismshow the reported effect is said to come about
methodmethodhow the paper produced its evidence
object of studyobject_of_studywhat the paper is about — the thing it investigates
phenomenonphenomenonthe effect or regularity under study
research questionresearch_questionthe question the paper sets itself
sensesensesa distinct use of a term, quoted where the paper fixes it
unrecordable relationunhoused_relationsa relation the paper asserts that this vocabulary cannot express, with the reason

The paper, tagged

The reference list is not part of the text we hold for this paper. Our copy was extracted from the publisher's page and the bibliography did not survive that extraction, so the article below ends before its references. Nothing has been removed by us.

Abstract

concepts↗concepts↗concepts↗concepts↗concepts↗concepts↗concepts↗sensessensessensessensessensessensessensesconcept_edgesconcept_edgesconcept_edgesconcept_edgesconcept_edgesconcept_edgesconcept_edgesScanpy is a scalable toolkit for analyzing single-cell gene expression data. It includes methods for preprocessing, visualization, clustering, pseudotime and trajectory inference, differential expression testing, and simulation of gene regulatory networks. Its Python-based implementation efficiently deals with data sets of more than one million cells ( https://github.com/theislab/Scanpy ). concepts↗concepts↗sensessensesAlong with Scanpy , we present AnnData , a generic class for handling annotated data matrices ( https://github.com/theislab/anndata ).

Ask a research question

Get related insights from Springer Nature content.

How can lineage reconstruction be robustly performed on million-cell data?

How to scale single-cell analysis tools for large, high-dimensional datasets?

Or ask your own question

Similar content being viewed by others

scAlign: a tool for alignment, integration, and rare cell identification from scRNA-seq data

Article Open access 14 August 2019

SingleScan: a comprehensive resource for single-cell sequencing data processing and mining

Article Open access 07 December 2023

Single-Cell RNA Sequencing Data Analysis

Chapter

© 2025

Explore related subjects

Discover the latest articles, books and news in related subjects, suggested using machine learning.

Gene Expression Analysis

Gene expression profiling

Genome-wide analysis of gene expression

Microarray analysis

Transcriptomics

High-throughput Cell Screening

Gene Expression Analysis in Cancer Genomics

Background

concepts↗Simple integrated analysis work flows for single-cell transcriptomic data [ 1 ] have been enabled by frameworks such as SEURAT [ 2 ], MONOCLE [ 3 ], SCDE/PAGODA [ 4 ], MAST [ 5 ], CELL RANGER [ 6 ], SCATER [ 7 ], and SCRAN [ 8 ]. object_of_studyresearch_questionclaim_typephenomenonconcepts↗However, these frameworks do not scale to the increasingly available large data sets with up to and more than one million cells. Here, we present a framework that overcomes this limitation and provides similar analysis possibilities. Moreover, in contrast to the existing R-based frameworks, SCANPY ’s Python-based implementation is easy to interface with advanced machine-learning packages, such as TENSORFLOW [ 9 ].

Results

SCANPY integrates canonical analysis methods in a scalable way

SCANPY integrates the analysis possibilities of established R-based frameworks and provides them in a scalable and modular form. Specifically, SCANPY provides preprocessing comparable to SEURAT [ 10 ] and CELL RANGER [ 6 ], visualization through TSNE [ 11 , 12 ], graph-drawing [ 13 – 15 ] and diffusion maps [ 11 , 16 , 17 ], clustering similar to PHENOGRAPH [ 18 – 20 ], identification of marker genes for clusters via differential expression tests and pseudotemporal ordering via diffusion pseudotime [ 21 ], which compares favorably [ 22 ] with MONOCLE 2 [ 22 ], and WISHBONE [ 23 ] (Fig.  1 a).

Fig. 1 Full size image

a SCANPY ’s analysis features. We use the example of 68,579 peripheral blood mononuclear cells of [ 6 ]. We regress out confounding variables, normalize, and identify highly variable genes. TSNE and graph-drawing (Fruchterman–Reingold) visualizations show cell-type annotations obtained by comparisons with bulk expression. Cells are clustered using the Louvain algorithm. Ranking differentially expressed genes in clusters identifies the MS4A1 marker gene for B cells in cluster 7, which agrees with the bulk labels. We use pseudotemporal ordering from a root cell in the CD34+ cluster and detect a branching trajectory, visualized with TSNE and diffusion maps. b Speedup over CELL RANGER R kit. We consider representative steps of the analysis [ 6 ]. c Visualizing and clustering 1.3 million cells. The data, brain cells from E18 mice, are publicly available from 10x Genomics. PCA = principal component analysis, DC = diffusion component

SCANPY is benchmarked in comparisons with established packages

controlsIn a detailed clustering tutorial of 2700 peripheral blood mononuclear cells (PBMCs), adapted from one of SEURAT ’s tutorials ( http://satijalab.org/seurat/pbmc3k_tutorial.html ) [ 2 ], all steps starting from raw count data to the identification of cell types are carried out, providing speedups between 5 and 90 times in each step ( https://github.com/theislab/scanpy_usage/tree/master/170505_seurat ). concepts↗Benchmarking against the more run-time optimized CELL RANGER R kit [ 6 ], we demonstrate a speedup of 5 to 16 times for a data set of 68,579 PBMCs (Fig.  1 a,b, https://github.com/theislab/scanpy_usage/tree/master/170503_zheng17 ) [ 6 ]. limitationsMoreover, we demonstrate the feasibility of analyzing 1.3 million cells without subsampling in a few hours of computing time on eight cores of a small computing server (Fig.  1 c, https://github.com/theislab/scanpy_usage/tree/master/170522_visualizing_one_million_cells ). Thus, SCANPY provides tools with speedups that enable an analysis of data sets with more than one million cells and an interactive analysis with run times of the order of seconds for about 100,000 cells.

In addition to the mentioned standard clustering-based analyses approaches, we demonstrate the reconstruction of branching developmental processes via diffusion pseudotime [ 21 ] as in the original paper ( https://github.com/theislab/scanpy_usage/tree/master/170502_haghverdi16 ), the simulation of single cells using literature-curated gene regulatory networks based on the ideas of [ 24 ] ( https://github.com/theislab/scanpy_usage/tree/master/170430_krumsiek11 ), and the analysis of deep-learning results for single-cell imaging data [ 25 ] ( https://github.com/theislab/scanpy_usage/tree/master/170529_images ).

SCANPY introduces efficient modular implementation choices

contributionconcepts↗concepts↗concepts↗sensesWith SCANPY , we introduce the class ANNDATA —with a corresponding package ANNDATA —which stores a data matrix with the most general annotations possible: annotations of observations (samples, cells) and variables (features, genes), and unstructured annotations. mechanisms↗concept_edgesAs SCANPY is built around that class, it is easy to add new functionality to the toolkit. All statistics and machine-learning tools extract information from a data matrix, which can be added to an ANNDATA object while leaving the structure of ANNDATA unaffected. concepts↗concepts↗concepts↗sensesconcept_edgesANNDATA is similar to R’s EXPRESSIONSET [ 26 ], but supports sparse data and allows HDF5-based backing of ANNDATA objects on disk, a format independent of platform, framework, and language. mechanisms↗concepts↗concepts↗sensesconcept_edgesThis allows operating on an ANNDATA object without fully loading it into memory—the functionality is offered via ANNDATA ’s backed mode as opposed to its memory mode. concepts↗concepts↗concepts↗sensessensessensesTo simplify memory-efficient pipelines, SCANPY ’s functions operate in-place by default but allow the optional non-destructive transformation of objects. Pipelines written this way can then also be run in backed mode to exploit online-learning formulations of algorithms. Almost all of SCANPY ’s tools are parallelized.

concepts↗concepts↗sensessensesSCANPY introduces a class for representing a graph of neighborhood relations among data points. mechanisms↗concepts↗The computation of neighborhood relations is much faster than in the popular reference package [ 27 ]. This is achieved by aggregating rows (observations) in a data matrix to submatrices and computing distances for each submatrix using fast parallelized matrix multiplication. Moreover, the class provides several functions to compute random-walk-based metrics that are not available in other graph software [ 14 , 28 , 29 ]. method↗mechanisms↗concepts↗Typically, SCANPY ’s tools reuse a once-computed, single graph representation of data and hence, avoid the use of different, potentially inconsistent, and computationally expensive representations of data.

Conclusions

SCANPY ’s scalability directly addresses the strongly increasing need for aggregating larger and larger data sets [ 30 ] across different experimental setups, for example within challenges such as the Human Cell Atlas [ 31 ]. Moreover, being implemented in a highly modular fashion, SCANPY can be easily developed further and maintained by a community. The transfer of the results obtained with different tools used within the community is simple, as SCANPY ’s data storage formats and objects are language independent and cross-platform. limitationsconcepts↗SCANPY integrates well into the existing Python ecosystem, in which no comparable toolkit yet exists.

During the revision of this article, the loom file format ( https://github.com/linnarsson-lab/loompy ) was proposed for HDF5-based storage of annotated data. Within a joint effort of facilitating data exchange across different labs, ANNDATA now supports importing and exporting to loom ( https://github.com/linnarsson-lab/loompy ). concepts↗concepts↗unhoused_relationssensessensesIn this context, we acknowledge the discussions with S. Linnarson, which motivated us to extend ANNDATA ’s previously static to a dynamic HDF5 backing. Just before submission of this manuscript, a C++ library that provides simple interfacing of HDF5-backed matrices in R was made available as a preprint [ 32 ].

Methods

SCANPY ’s technological foundations

SCANPY ’s core relies on NUMPY [ 33 ], SCIPY [ 34 ], MATPLOTLIB [ 35 ], PANDAS [ 36 ], and H5PY [ 37 ]. Parts of the toolkit rely on SCIKIT-LEARN [ 27 ], STATSMODELS [ 38 ], SEABORN [ 39 ], NETWORKX [ 28 ], IGRAPH [ 14 ], the TSNE package of [ 40 ], and the Louvain clustering package of [ 41 ]. The ANNDATA class—available within the package ANNDATA —relies only on NUMPY , SCIPY , PANDAS , and H5PY .

SCANPY ’s Python-based implementation allows easy interfacing to advanced machine-learning packages such as TENSORFLOW [ 9 ] for deep learning [ 42 ], LIMIX for linear mixed models [ 43 ], and GPY/GPFLOW for Gaussian processes [ 44 , 45 ]. However, we note that the Python ecosystem comes with less possibilities for classical statistical analyses compared to R.

Comparison with existing Python packages for single-cell analysis

Aside from the highly popular SCLVM ( https://github.com/PMBio/scLVM ) [ 46 , 47 ], which uses Gaussian process latent variable models for inferring hidden sources of variation, there are, among others, the visualization frameworks FASTPROJECT ( https://github.com/YosefLab/FastProject ) [ 48 ], ACCENSE ( http://www.cellaccense.com/ ) [ 49 ], and SPRING ( https://github.com/AllonKleinLab/SPRING ) [ 15 ]—the latter uses the JavaScript package ( http://d3js.org D3.js for the actual visualization and Python only for preprocessing—the trajectory inference tool SCIMITAR ( https://github.com/dimenwarper/scimitar ), the clustering tool PHENOGRAPH ( https://github.com/jacoblevine/PhenoGraph ) [ 19 ], the single-cell experiment design tool MIMOSCA ( https://github.com/asncd/MIMOSCA )[ 50 ], UMIS ( https://github.com/vals/umis ) for handling raw read data [ 51 ], the tree-inference tool ECLAIR ( https://github.com/GGiecold/ECLAIR ) [ 52 ], and the framework FLOTILLA ( https://github.com/yeolab/flotilla ), which comes with modules for simple visualization, simple clustering, and differential expression testing. concepts↗concepts↗concepts↗concepts↗concepts↗concepts↗sensessensessensessensessensessensesconcept_edgesconcept_edgesHence, only the latter provides a data analysis framework that solves more than one specific task. In contrast to SCANPY , however, FLOTILLA is neither targeted at single-cell nor at large-scale data and does not provide any graph-based methods, which are the core of SCANPY . Also, FLOTILLA is built around a complicated class STUDY , which contains data, tools, and plotting functions. SCANPY , by contrast, is built around a simple HDF5-backed class ANNDATA , which makes SCANPY both scalable and extendable (law of Demeter).

Availability and requirements

SCANPY ’s and ANNDATA ’s open-source code are maintained on GITHUB ( https://github.com/theislab/scanpy , https://github.com/theislab/anndata ) and published under the BSD3 license.

SCANPY and ANNDATA are released via the Python packaging index: https://pypi.python.org/pypi/scanpy and https://pypi.python.org/pypi/anndata .

Demonstrations and benchmarks discussed in the main text are all stored at https://github.com/theislab/scanpy_usage and summarized here:

Analyzing 68,579 PBMCs (Fig.  1 ) in a comparison with the Cell Ranger R kit [ 6 ]: https://github.com/theislab/scanpy_usage/tree/master/170503_zheng17 .

Clustering and identifying cell types, adapted from and benchmarked with http://satijalab.org/seurat/pbmc3k_tutorial.html and one of Seurat ’s tutorials [ 2 ]: https://github.com/theislab/scanpy_usage/tree/master/170505_seurat .

Visualizing and clustering 1.3 million cells (Fig.  1 c): https://github.com/theislab/scanpy_usage/tree/master/170522_visualizing_one_million_cells .

Reconstructing branching processes via diffusion pseudotime [ 21 ]: https://github.com/theislab/scanpy_usage/tree/master/170502_haghverdi16 .

Simulating single cells using gene regulatory networks [ 24 ]: https://github.com/theislab/scanpy_usage/tree/master/170430_krumsiek11 .

Analyzing deep-learning results for single-cell images [ 25 ]: https://github.com/theislab/scanpy_usage/tree/master/170529_images .

The data sets used in demonstrations and benchmarks are three data sets from 10x Genomics.

Programming language: Python

Operating system: Linux, Mac OS and Windows

Every tag on this page

claim_type 1 · concept_edges 12 · concepts 36 · contribution 1 · controls 1 · limitations 2 · mechanisms 4 · method 1 · object_of_study 1 · phenomenon 1 · research_question 1 · senses 25 · unhoused_relations 1

Relations on this page carry a quotation for the claim. Where a relation was separately evidenced — and so tested against the vocabulary for its type — the row says so; 9 of 12 relations here carry that mark. The rest are the tagger’s reading of the sentence quoted beside them.

This record holds no relations between claims. A layer is empty when the tagger recorded nothing in it — which is not the same as the paper having nothing to record.

facettagfieldconf.whose words
object_of_studysingle-cell gene expression data at a scale existing frameworks do not reachobject_of_studythe paper's words
research_questionhow to give the established single-cell analyses a form that scales past a million cellsresearch_questionthe paper's words
contributionSCANPY, and ANNDATA - a generic annotated data matrix that every tool reads and writes without changing its structurecontributionthe paper's words
claim_typemethodclaim_typethe paper's words
phenomenonanalysis frameworks failing at data sizes their science has already reachedphenomenonthe paper's words
methodsystem-or-tool-buildingmethodthe paper's words
mechanismsmechanismsmechanisms[0]0.95the tagger's words
mechanismsmechanismsmechanisms[1]0.95the tagger's words
mechanismsmechanismsmechanisms[2]0.95the tagger's words
mechanismsmechanismsmechanisms[3]0.95the tagger's words
limitationsThe comparison offered is against R-based frameworks and CELL RANGER; the claim of no comparable toolkit is scoped to the PYTHON ecosystem, in the paper's own wordslimitations[0]0.95the tagger's words
limitationsThe scaling evidence is a demonstration on named datasets - 68,579 cells for the speedup and 1.3 million for feasibility - not a complexity resultlimitations[1]0.95the tagger's words
controlsbenchmarking SCANPY against established single-cell analysis packages on a clustering tutorial of 2,700 peripheral blood mononuclear cells
eliminates: that SCANPY's clustering results differ from what the established tools produce on the same data, so that its speed advantage comes at a cost in output · outcome: held
controls[0]0.8the tagger's words
conceptsSCANPY
also in: SCANPY
concepts[0]0.95the paper's words
conceptsANNDATA
also in: ANNDATA
concepts[1]0.95the paper's words
conceptsEXPRESSIONSET
also in: EXPRESSIONSET
concepts[2]0.95the paper's words
conceptsbacked mode
also in: backed mode
concepts[3]0.95the paper's words
conceptsmemory mode
also in: memory mode
concepts[4]0.95the paper's words
conceptsannotations
also in: annotations
concepts[5]0.95the paper's words
conceptsdata matrix
also in: data matrix
concepts[6]0.95the paper's words
conceptsneighborhood relationsconcepts[7]0.95the paper's words
conceptssingle graph representationconcepts[8]0.95the paper's words
conceptssparse data
also in: sparse data
concepts[9]0.95the paper's words
conceptsCELL RANGER
also in: CELL RANGER
concepts[10]0.95the paper's words
conceptsSEURAT
also in: SEURAT
concepts[11]0.85the paper's words
conceptsPython ecosystemconcepts[12]0.95the paper's words
conceptsscalable toolkitconcepts[13]0.95the paper's words
conceptspreprocessing
also in: preprocessing
concepts[14]0.95the paper's words
conceptsvisualization
also in: visualization
concepts[15]0.95the paper's words
conceptsclustering
also in: clustering
concepts[16]0.95the paper's words
conceptspseudotime and trajectory inferenceconcepts[17]0.95the paper's words
conceptsdifferential expression testingconcepts[18]0.95the paper's words
conceptssimulation of gene regulatory networksconcepts[19]0.95the paper's words
conceptsgeneric class
also in: generic class
concepts[20]0.95the paper's words
conceptsannotated data matricesconcepts[21]0.95the paper's words
conceptsHDF5-based backingconcepts[22]0.95the paper's words
conceptsin-place
also in: in-place
concepts[23]0.95the paper's words
conceptsnon-destructive transformationconcepts[24]0.95the paper's words
conceptsonline-learning formulationsconcepts[25]0.95the paper's words
conceptsclass for representing a graph of neighborhood relationsconcepts[26]0.95the paper's words
conceptsrandom-walk-based metricsconcepts[27]0.95the paper's words
conceptsstatic
also in: static
concepts[28]0.95the paper's words
conceptsdynamic HDF5 backingconcepts[29]0.95the paper's words
conceptsFLOTILLA
also in: FLOTILLA
concepts[30]0.95the paper's words
conceptsdata analysis frameworkconcepts[31]0.95the paper's words
conceptsSTUDY
also in: STUDY
concepts[32]0.95the paper's words
conceptssimple HDF5-backed class ANNDATAconcepts[33]0.95the paper's words
conceptslarge-scale dataconcepts[34]0.95the paper's words
conceptsgraph-based methodsconcepts[35]0.95the paper's words
unhoused_relationsstatic → dynamic HDF5 backing
The paper says AnnData's HDF5 backing was extended from static to dynamic. A state transition is not one of the eight edge types.
unhoused_relations[0]0.95the tagger's words
sensesANNDATA - THE ANNOTATION IS THE POINT, NOT THE MATRIX: a data matrix plus annotations of observations, of variables, and unstructured ones, held together so a tool can add a result without changing the structure everything else readssenses[0]0.95the tagger's words
sensesbacked mode - the same object read WITHOUT being loaded into memory, as opposed to memory mode. One class, two residencies, and the analysis code does not changesenses[1]0.95the tagger's words
sensesscalable toolkit - the software class to which the abstract assigns Scanpysenses[2]0.95the tagger's words
sensespreprocessing - one analysis capability included in Scanpysenses[3]0.95the tagger's words
sensesvisualization - one analysis capability included in Scanpysenses[4]0.95the tagger's words
sensesclustering - one analysis capability included in Scanpysenses[5]0.95the tagger's words
sensespseudotime and trajectory inference - temporal and lineage reconstruction capabilities included in Scanpysenses[6]0.95the tagger's words
sensesdifferential expression testing - one analysis capability included in Scanpysenses[7]0.95the tagger's words
sensessimulation of gene regulatory networks - the network-simulation capability included in Scanpysenses[8]0.95the tagger's words
sensesgeneric class - the software class assigned to AnnData for handling annotated matricessenses[9]0.95the tagger's words
sensesannotated data matrices - the matrix form handled by the generic AnnData classsenses[10]0.95the tagger's words
sensesHDF5-based backing - on-disk backing that permits operating without fully loading an AnnData objectsenses[11]0.95the tagger's words
sensesin-place - Scanpy's default object transformation mode for memory-efficient pipelinessenses[12]0.95the tagger's words
sensesnon-destructive transformation - the optional alternative to in-place transformationsenses[13]0.95the tagger's words
sensesonline-learning formulations - algorithm formulations that pipelines can exploit in backed modesenses[14]0.95the tagger's words
sensesclass for representing a graph of neighborhood relations - Scanpy's representation of neighborhood relations among data pointssenses[15]0.95the tagger's words
sensesrandom-walk-based metrics - metrics exposed by Scanpy's neighborhood-graph class but absent from other graph softwaresenses[16]0.95the tagger's words
sensesstatic - AnnData's earlier HDF5 backing statesenses[17]0.95the tagger's words
sensesdynamic HDF5 backing - the HDF5 backing state to which AnnData was extendedsenses[18]0.95the tagger's words
sensesFLOTILLA - the other Python framework that solves more than one analysis tasksenses[19]0.95the tagger's words
sensesdata analysis framework - the multi-task software class the paper assigns to FLOTILLAsenses[20]0.95the tagger's words
sensesSTUDY - FLOTILLA's class combining data, tools, and plotting functionssenses[21]0.95the tagger's words
sensessimple HDF5-backed class ANNDATA - the contrasting class around which Scanpy is builtsenses[22]0.95the tagger's words
senseslarge-scale data - a target that the paper says FLOTILLA does not addresssenses[23]0.95the tagger's words
sensesgraph-based methods - Scanpy's core method family, absent from FLOTILLAsenses[24]0.95the tagger's words
concept_edgesANNDATA —contrasted-with→ EXPRESSIONSET
differs in: sparse data support and HDF5-based backing on disk, which is what lets an object be operated on without being loaded · strength of the relation: 1 Audit 2026-09-28: DOUBTFUL - read against its full span and kept, but the span calls ANNDATA SIMILAR to EXPRESSIONSET, with differences; contrasted-with is loose.
concept_edges[0]the tagger's words
concept_edgesANNDATA —part-of→ SCANPY
strength of the relation: 1 Audit 2026-09-28: DOUBTFUL - read against its full span and kept, but the span says SCANPY is built around the ANNDATA class; part-of is loose.
also in: ANNDATA · SCANPY
concept_edges[1]the tagger's words
concept_edgesbacked mode —distinct-from→ memory mode
strength of the relation: 1
concept_edges[2]the tagger's words
concept_edgesSCANPY —is-a→ scalable toolkit
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract gives an unhedged class definition.
concept_edges[3]0.95the tagger's words
concept_edgespreprocessing —part-of→ SCANPY
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract unhedgedly includes preprocessing among Scanpy's methods.
also in: preprocessing · SCANPY
concept_edges[4]0.95the tagger's words
concept_edgesvisualization —part-of→ SCANPY
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract unhedgedly includes visualization among Scanpy's methods.
also in: visualization · SCANPY
concept_edges[5]0.95the tagger's words
concept_edgesclustering —part-of→ SCANPY
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract unhedgedly includes clustering among Scanpy's methods.
also in: clustering · SCANPY
concept_edges[6]0.95the tagger's words
concept_edgespseudotime and trajectory inference —part-of→ SCANPY
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract unhedgedly includes pseudotime and trajectory inference among Scanpy's methods.
concept_edges[7]0.95the tagger's words
concept_edgesdifferential expression testing —part-of→ SCANPY
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract unhedgedly includes differential-expression testing among Scanpy's methods.
concept_edges[8]0.95the tagger's words
concept_edgessimulation of gene regulatory networks —part-of→ SCANPY
the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract unhedgedly includes regulatory-network simulation among Scanpy's methods.
concept_edges[9]0.95the tagger's words
concept_edgesFLOTILLA —distinct-from→ SCANPY
differs in: single-cell and large-scale targeting, graph-based methods, and the complexity of the central data class · the relation itself is separately evidenced · strength of the relation: 1 · note: The paper explicitly says 'in contrast to SCANPY' and names the dimensions of difference.
also in: FLOTILLA · SCANPY
concept_edges[10]0.95the tagger's words
concept_edgesSTUDY —contrasted-with→ simple HDF5-backed class ANNDATA
differs in: a complicated class containing data, tools, and plotting functions versus a simple HDF5-backed class · the relation itself is separately evidenced · strength of the relation: 1 · note: The paper's explicit 'by contrast' comparison is unhedged.
concept_edges[11]0.95the tagger's words

Interpretive choices

Tags that could not be placed in the text:

What was deliberately not tagged, and why, is recorded per paper by the tagger. Where a paper has no such record, this page says so rather than implying that nothing was declined.

© 2026 Shir Sivroni · ORCID 0009-0000-2597-2824