Vol. 01 · No. 1 · Beta Edition
Node reference

Preprocessing nodes.

Standard scRNA-seq preprocessing. Quality Control is one node that computes the metrics, opens the interactive QC Workspace (MAD-based recommendations, Raw Data Mode, thresholds that update the plots live without re-running) and applies the filters. Then Scrublet doublet detection, normalization, log transform, highly variable gene selection and scaling.

06 nodesCategory · preprocessin 18 templates

Recommended order

Quality Control → (Doublet Detection) → Normalize → Log1p → Highly Variable Genes → Scale → PCA. Open the QC Workspace from the node card before committing to thresholds — see the QC Workspace page.

Scale keeps hvg_only on by default: X keeps only the highly variable genes, the full gene set is preserved in adata.raw for DEG and gene plots, and the dense-matrix memory cost drops by roughly an order of magnitude on large data.

Common pitfalls

Wrong pipeline order. Never run Scale before Normalize — scaling raw counts produces meaningless PCA results.

Mouse mito prefix. Mouse uses lowercase mt-, human uses MT-. The wrong prefix gives 0% mitochondrial reads for every cell.

After Scale, adata.X holds z-scores, not expression. Plot nodes default to use_raw, which reads the log-normalised values Scale preserved; if you switch it off, pick an expression layer explicitly.

Keep save_counts on in Normalize. It stores raw counts in layers["counts"], which count-based steps downstream rely on.

Check the QC filter list on the node card. Since v0.24.0 the card lists exactly which filters will run; a Quality Control node edited in older versions through the workspace may have had Max Genes / Max Counts switched on unintentionally.

Quality Control node

Quality Control

qualityControlsince v0.9.0-beta.29

Filter cells/genes by QC metrics. Unified node (replaces qcMetrics + qcVisualization). Use the QC Workspace toolbar button for interactive threshold exploration. Each filter has its own enable toggle. Built-in plot replaces the old separate qcVisualization node.

Node LibraryscRNA-seqSpatial
InAnnData
OutAnnData (filtered, QC obs columns)
Parameters (33)
NameTypeDefaultDescription
show_plotcheckboxtrueGenerate built-in QC plot.
plot_typeselectviolinviolin/scatter/histogram/highest_expr_genes/scatter_matrix.
color_byobs column—Obs column to color cells by (empty = auto QC_label coloring — PASS/FAIL).
group_colorscolor map—Canonical categorical color overrides for the active color_by owner. Empty color_by uses obs['QC_label']; null preserves the existing plot palette.
layertext—Data layer to use for QC calculation (empty = X matrix).
mito_prefixtextMT-"MT-" human, "mt-" mouse.
ribo_prefixtextRPS,RPLRibosomal gene prefixes.
hb_prefixtextHBHemoglobin gene prefix.
filter_min_genescheckboxtrueEnable minimum genes per cell filter.
min_genesnumber200Min genes per cell.
filter_max_genescheckboxfalseEnable maximum genes per cell filter.
max_genesnumber5000Max genes per cell (doublet filter).
filter_min_countscheckboxfalseEnable minimum counts per cell filter.
min_countsnumber500Minimum total UMI counts per cell.
filter_max_countscheckboxfalseEnable maximum counts per cell filter.
max_countsnumber50000Maximum total UMI counts per cell.
filter_max_pct_mitocheckboxtrueEnable mitochondrial percentage filter.
max_pct_mitonumber20Max mito percentage.
filter_max_pct_ribocheckboxfalseEnable ribosomal percentage filter.
max_pct_ribonumber50Max ribosomal percentage.
filter_max_pct_hbcheckboxfalseEnable hemoglobin percentage filter.
max_pct_hbnumber5Maximum hemoglobin gene percentage.
filter_min_cellscheckboxtrueEnable minimum cells per gene filter.
min_cellsnumber3Min cells expressing a gene.
raw_data_modecheckboxfalseFor raw/unfiltered droplet data (Cellranger raw).
n_madsnumber3MAD multiplier for recommended thresholds (median ± n_mads × MAD). Only applied when raw_data_mode is ON; otherwise standard MAD×5 is used. Lower values (e.g. 2) are more aggressive at removing outliers; higher values (e.g. 5) are more permissive. Tunable inline in the QC Workspace modal header; changes update the `rec:` buttons instantly (recommendations are recomputed client-side from cell_data, no backend re-run). Click 'Auto-fill MAD recommendations' to apply the rec values to the actual threshold sliders. Valid range 1–10.
clip_percentilenumber1Lower percentile used to clip QC Workspace plot axes when raw_data_mode is ON. Value 1 means axes are clipped to [1, 99] percentile. Set to 0 to disable clipping even in Raw Mode. Ignored entirely when raw_data_mode is OFF. Tunable inline in the modal header; Plotly axes re-clip instantly via useMemo (no backend re-run). Valid range 0–10. Note: this only affects the modal view — it does not modify filter values or the underlying data.
percent_toptext—Calculate % counts from top N genes as a JSON array of integers, e.g. [50, 100, 200]. Omit or null to skip.
log1p_metricscheckboxfalseCalculate log1p-transformed QC metrics.
metricsarray["n_genes_by_counts", "total_counts", "pct_counts_mt"]JSON array of QC metric names to include in the built-in plot. Omit this parameter to use the default metrics.
log_scalecheckboxfalseUse log scale for axes in histogram/scatter plots.
font_sizetext—Font size for plot labels. null = matplotlib default.
publication_qualitycheckboxfalseGenerate high-resolution (300 DPI) publication-quality figure.
Normalize node

Normalize

normalize

Normalize total counts per cell (scanpy normalize_total).

Node LibraryscRNA-seqSpatial
InAnnData
OutAnnData (normalized X, layers["counts"])
Parameters (5)
NameTypeDefaultDescription
target_sumnumber10000Target counts per cell (1e4 = CP10K).
save_countscheckboxtrueSave raw counts to layers["counts"].
layerlayer—Layer to normalize (empty = X matrix).
exclude_highly_expressedcheckboxfalseExclude top genes from normalization factor.
max_fractionnumber0.05Threshold for "highly expressed".
Log1p node

Log1p

log1p

log(x+1) transformation. Run after Normalize, before HVG/PCA.

Node LibraryscRNA-seqSpatial
InAnnData (normalized)
OutAnnData (log-transformed X)
Parameters (5)
NameTypeDefaultDescription
save_normalizedcheckboxtrueSave normalized+log1p to layers["normalized"].
layerlog1p_layer_select—Layer to transform (empty = X matrix).
baselog1p_base_select—null = natural log, 2/10 for log2/log10.
chunkedlog1p_chunked_checkboxfalseProcess in chunks for very large datasets.
chunk_sizelog1p_chunk_size10000Number of elements per chunk.
Highly Variable Genes node

Highly Variable Genes

highlyVariableGenes

Identify highly variable genes (HVGs) that drive biological variation.

Node LibraryscRNA-seqSpatial
InAnnData (log-transformed)
OutAnnData (var["highly_variable"])
Parameters (10)
NameTypeDefaultDescription
n_top_genesnumber20001000-3000 typical.
flavorselectseurat"seurat" log, "seurat_v3" raw counts, "cell_ranger".
layerlayer—Data layer to use.
batch_keyobs column—obs column for batch-aware selection.
subsetcheckboxfalseDirectly subset adata to HVGs.
min_meannumber0.0125Minimum mean expression cutoff (seurat/cell_ranger flavors).
max_meannumber3Maximum mean expression cutoff.
min_dispnumber0.5Minimum dispersion cutoff.
spannumber0.3LOESS smoothing span (seurat_v3 flavor only).
n_binsnumber20Number of expression bins.
Scale node

Scale

scale

Scale to unit variance and zero-center. Required before PCA. Auto-saves adata.raw.

Node LibraryscRNA-seqSpatial
InAnnData
OutAnnData (X scaled, adata.raw set)
Parameters (4)
NameTypeDefaultDescription
max_valuenumber10Clip values above this.
zero_centercheckboxtrueSubtract mean (centering).
hvg_onlycheckboxtrueScale only the highly-variable genes (requires highlyVariableGenes upstream). This is the standard scanpy workflow and the default. Cuts the dense-matrix RAM blow-up ~10x on large data; the full gene set is kept in adata.raw for DEG/plots, and X keeps only the HVG.
save_log1pcheckboxtrueSave pre-scale log1p to layers["log1p"].
Doublet Detection node

Doublet Detection

doubletDetection

Detect doublets using Scrublet. Run early in the pipeline.

Node LibraryscRNA-seq
InAnnData
OutAnnData (obs["predicted_doublet"], obs["doublet_score"])
Parameters (6)
NameTypeDefaultDescription
modeselectfilter"filter" removes; "label" only marks.
expected_doublet_ratenumber0.06~0.008 × cells/1000.
thresholdnumber—null = auto-detect.
n_prin_compsnumber30PCs for simulated doublets.
min_gene_variability_pctlnumber85Percentile for gene variability filtering.
batch_sizenumber100000Maximum number of observed cells processed in each independent Scrublet batch. Datasets larger than this are split into consecutive batches; default 100,000.