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.| claim type | claim_type | the shape of the claim: existence, mechanism, method, critique, prediction, null |
| concept edge | concept_edges | an asserted relation between two concepts, with the sentence asserting it |
| concept | concepts | an idea the paper works with, quoted where the paper uses it |
| contribution | contribution | what the paper claims to add |
| control | controls | an experiment run to eliminate a rival explanation |
| limitation | limitations | what the paper says its evidence cannot support |
| mechanism | mechanisms | how the reported effect is said to come about |
| method | method | how the paper produced its evidence |
| object of study | object_of_study | what the paper is about — the thing it investigates |
| phenomenon | phenomenon | the effect or regularity under study |
| research question | research_question | the question the paper sets itself |
| sense | senses | a distinct use of a term, quoted where the paper fixes it |
| unrecordable relation | unhoused_relations | a relation the paper asserts that this vocabulary cannot express, with the reason |
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
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.
| facet | tag | field | conf. | whose words |
|---|---|---|---|---|
| object_of_study | single-cell gene expression data at a scale existing frameworks do not reach | object_of_study | the paper's words | |
| research_question | how to give the established single-cell analyses a form that scales past a million cells | research_question | the paper's words | |
| contribution | SCANPY, and ANNDATA - a generic annotated data matrix that every tool reads and writes without changing its structure | contribution | the paper's words | |
| claim_type | method | claim_type | the paper's words | |
| phenomenon | analysis frameworks failing at data sizes their science has already reached | phenomenon | the paper's words | |
| method | system-or-tool-building also in: system-or-tool-building | method | the paper's words | |
| mechanisms | mechanisms | mechanisms[0] | 0.95 | the tagger's words |
| mechanisms | mechanisms | mechanisms[1] | 0.95 | the tagger's words |
| mechanisms | mechanisms | mechanisms[2] | 0.95 | the tagger's words |
| mechanisms | mechanisms | mechanisms[3] | 0.95 | the tagger's words |
| limitations | The 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 words | limitations[0] | 0.95 | the tagger's words |
| limitations | The scaling evidence is a demonstration on named datasets - 68,579 cells for the speedup and 1.3 million for feasibility - not a complexity result | limitations[1] | 0.95 | the tagger's words |
| controls | benchmarking 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.8 | the tagger's words |
| concepts | SCANPY also in: SCANPY | concepts[0] | 0.95 | the paper's words |
| concepts | ANNDATA also in: ANNDATA | concepts[1] | 0.95 | the paper's words |
| concepts | EXPRESSIONSET also in: EXPRESSIONSET | concepts[2] | 0.95 | the paper's words |
| concepts | backed mode also in: backed mode | concepts[3] | 0.95 | the paper's words |
| concepts | memory mode also in: memory mode | concepts[4] | 0.95 | the paper's words |
| concepts | annotations also in: annotations | concepts[5] | 0.95 | the paper's words |
| concepts | data matrix also in: data matrix | concepts[6] | 0.95 | the paper's words |
| concepts | neighborhood relations also in: neighborhood relations | concepts[7] | 0.95 | the paper's words |
| concepts | single graph representation also in: single graph representation | concepts[8] | 0.95 | the paper's words |
| concepts | sparse data also in: sparse data | concepts[9] | 0.95 | the paper's words |
| concepts | CELL RANGER also in: CELL RANGER | concepts[10] | 0.95 | the paper's words |
| concepts | SEURAT also in: SEURAT | concepts[11] | 0.85 | the paper's words |
| concepts | Python ecosystem also in: Python ecosystem | concepts[12] | 0.95 | the paper's words |
| concepts | scalable toolkit also in: scalable toolkit | concepts[13] | 0.95 | the paper's words |
| concepts | preprocessing also in: preprocessing | concepts[14] | 0.95 | the paper's words |
| concepts | visualization also in: visualization | concepts[15] | 0.95 | the paper's words |
| concepts | clustering also in: clustering | concepts[16] | 0.95 | the paper's words |
| concepts | pseudotime and trajectory inference also in: pseudotime and trajectory inference | concepts[17] | 0.95 | the paper's words |
| concepts | differential expression testing also in: differential expression testing | concepts[18] | 0.95 | the paper's words |
| concepts | simulation of gene regulatory networks | concepts[19] | 0.95 | the paper's words |
| concepts | generic class also in: generic class | concepts[20] | 0.95 | the paper's words |
| concepts | annotated data matrices also in: annotated data matrices | concepts[21] | 0.95 | the paper's words |
| concepts | HDF5-based backing also in: HDF5-based backing | concepts[22] | 0.95 | the paper's words |
| concepts | in-place also in: in-place | concepts[23] | 0.95 | the paper's words |
| concepts | non-destructive transformation also in: non-destructive transformation | concepts[24] | 0.95 | the paper's words |
| concepts | online-learning formulations also in: online-learning formulations | concepts[25] | 0.95 | the paper's words |
| concepts | class for representing a graph of neighborhood relations | concepts[26] | 0.95 | the paper's words |
| concepts | random-walk-based metrics also in: random-walk-based metrics | concepts[27] | 0.95 | the paper's words |
| concepts | static also in: static | concepts[28] | 0.95 | the paper's words |
| concepts | dynamic HDF5 backing also in: dynamic HDF5 backing | concepts[29] | 0.95 | the paper's words |
| concepts | FLOTILLA also in: FLOTILLA | concepts[30] | 0.95 | the paper's words |
| concepts | data analysis framework also in: data analysis framework | concepts[31] | 0.95 | the paper's words |
| concepts | STUDY also in: STUDY | concepts[32] | 0.95 | the paper's words |
| concepts | simple HDF5-backed class ANNDATA also in: simple HDF5-backed class ANNDATA | concepts[33] | 0.95 | the paper's words |
| concepts | large-scale data also in: large-scale data | concepts[34] | 0.95 | the paper's words |
| concepts | graph-based methods also in: graph-based methods | concepts[35] | 0.95 | the paper's words |
| unhoused_relations | static → 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.95 | the tagger's words |
| senses | ANNDATA - 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 reads | senses[0] | 0.95 | the tagger's words |
| senses | backed 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 change | senses[1] | 0.95 | the tagger's words |
| senses | scalable toolkit - the software class to which the abstract assigns Scanpy | senses[2] | 0.95 | the tagger's words |
| senses | preprocessing - one analysis capability included in Scanpy | senses[3] | 0.95 | the tagger's words |
| senses | visualization - one analysis capability included in Scanpy | senses[4] | 0.95 | the tagger's words |
| senses | clustering - one analysis capability included in Scanpy | senses[5] | 0.95 | the tagger's words |
| senses | pseudotime and trajectory inference - temporal and lineage reconstruction capabilities included in Scanpy | senses[6] | 0.95 | the tagger's words |
| senses | differential expression testing - one analysis capability included in Scanpy | senses[7] | 0.95 | the tagger's words |
| senses | simulation of gene regulatory networks - the network-simulation capability included in Scanpy | senses[8] | 0.95 | the tagger's words |
| senses | generic class - the software class assigned to AnnData for handling annotated matrices | senses[9] | 0.95 | the tagger's words |
| senses | annotated data matrices - the matrix form handled by the generic AnnData class | senses[10] | 0.95 | the tagger's words |
| senses | HDF5-based backing - on-disk backing that permits operating without fully loading an AnnData object | senses[11] | 0.95 | the tagger's words |
| senses | in-place - Scanpy's default object transformation mode for memory-efficient pipelines | senses[12] | 0.95 | the tagger's words |
| senses | non-destructive transformation - the optional alternative to in-place transformation | senses[13] | 0.95 | the tagger's words |
| senses | online-learning formulations - algorithm formulations that pipelines can exploit in backed mode | senses[14] | 0.95 | the tagger's words |
| senses | class for representing a graph of neighborhood relations - Scanpy's representation of neighborhood relations among data points | senses[15] | 0.95 | the tagger's words |
| senses | random-walk-based metrics - metrics exposed by Scanpy's neighborhood-graph class but absent from other graph software | senses[16] | 0.95 | the tagger's words |
| senses | static - AnnData's earlier HDF5 backing state | senses[17] | 0.95 | the tagger's words |
| senses | dynamic HDF5 backing - the HDF5 backing state to which AnnData was extended | senses[18] | 0.95 | the tagger's words |
| senses | FLOTILLA - the other Python framework that solves more than one analysis task | senses[19] | 0.95 | the tagger's words |
| senses | data analysis framework - the multi-task software class the paper assigns to FLOTILLA | senses[20] | 0.95 | the tagger's words |
| senses | STUDY - FLOTILLA's class combining data, tools, and plotting functions | senses[21] | 0.95 | the tagger's words |
| senses | simple HDF5-backed class ANNDATA - the contrasting class around which Scanpy is built | senses[22] | 0.95 | the tagger's words |
| senses | large-scale data - a target that the paper says FLOTILLA does not address | senses[23] | 0.95 | the tagger's words |
| senses | graph-based methods - Scanpy's core method family, absent from FLOTILLA | senses[24] | 0.95 | the tagger's words |
| concept_edges | ANNDATA —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. also in: ANNDATA · EXPRESSIONSET | concept_edges[0] | the tagger's words | |
| concept_edges | ANNDATA —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. | concept_edges[1] | the tagger's words | |
| concept_edges | backed mode —distinct-from→ memory mode strength of the relation: 1 also in: backed mode · memory mode | concept_edges[2] | the tagger's words | |
| concept_edges | SCANPY —is-a→ scalable toolkit the relation itself is separately evidenced · strength of the relation: 1 · note: The abstract gives an unhedged class definition. also in: SCANPY · scalable toolkit | concept_edges[3] | 0.95 | the tagger's words |
| concept_edges | preprocessing —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.95 | the tagger's words |
| concept_edges | visualization —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.95 | the tagger's words |
| concept_edges | clustering —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.95 | the tagger's words |
| concept_edges | pseudotime 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. also in: pseudotime and trajectory inference · SCANPY | concept_edges[7] | 0.95 | the tagger's words |
| concept_edges | differential 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. also in: differential expression testing · SCANPY | concept_edges[8] | 0.95 | the tagger's words |
| concept_edges | simulation 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. also in: simulation of gene regulatory networks · SCANPY | concept_edges[9] | 0.95 | the tagger's words |
| concept_edges | FLOTILLA —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. | concept_edges[10] | 0.95 | the tagger's words |
| concept_edges | STUDY —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. also in: STUDY · simple HDF5-backed class ANNDATA | concept_edges[11] | 0.95 | the tagger's words |
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.