scVelo is a scalable toolkit for RNA velocity analysis in single cells. This function runs scVelo workflow on a Seurat object.
Usage
RunSCVELO(
srt = NULL,
assay_X = "RNA",
slot_X = "counts",
assay_layers = c("spliced", "unspliced"),
slot_layers = "counts",
adata = NULL,
group_by = NULL,
linear_reduction = NULL,
nonlinear_reduction = NULL,
basis = NULL,
mode = "stochastic",
fitting_by = "stochastic",
magic_impute = FALSE,
knn = 5,
t = 2,
min_shared_counts = 30,
n_pcs = 30,
n_neighbors = 30,
stream_smooth = NULL,
stream_density = 2,
arrow_length = 5,
arrow_size = 5,
arrow_density = 0.5,
denoise = FALSE,
denoise_topn = 3,
kinetics = FALSE,
kinetics_topn = 100,
calculate_velocity_genes = FALSE,
top_n = 6,
n_jobs = 1,
palette = "Paired",
palcolor = NULL,
show_plot = TRUE,
save = FALSE,
dpi = 300,
dirpath = "./",
fileprefix = "",
return_seurat = !is.null(srt)
)Arguments
- srt
A Seurat object.
- assay_X
Assay to convert as the main data matrix (X) in the anndata object.
- slot_X
Slot name for assay_X in the Seurat object.
- assay_layers
Assays to convert as layers in the anndata object.
- slot_layers
Slot names for the assay_layers in the Seurat object.
- adata
An anndata object.
- group_by
Variable to use for grouping cells in the Seurat object.
- linear_reduction
Linear reduction method to use, e.g., "PCA".
- nonlinear_reduction
Non-linear reduction method to use, e.g., "UMAP".
- basis
The basis to use for reduction, e.g., "UMAP".
- mode
Velocity estimation model to use, e.g., "stochastic".
- fitting_by
Method used to fit gene velocities, e.g., "stochastic".
- magic_impute
Flag indicating whether to perform magic imputation.
- knn
The number of nearest neighbors for magic.MAGIC.
- t
power to which the diffusion operator is powered for magic.MAGIC.
Minimum number of counts (both unspliced and spliced) required for a gene.
- n_pcs
Number of principal components (PCs) used for velocity estimation.
- n_neighbors
Number of nearest neighbors used for velocity estimation.
- stream_smooth
Multiplication factor for scale in Gaussian kernel around grid point.
- stream_density
Controls the closeness of streamlines. When density = 2 (default), the domain is divided into a 60x60 grid, whereas density linearly scales this grid. Each cell in the grid can have, at most, one traversing streamline.
- arrow_length
Length of arrows.
- arrow_size
Size of arrows.
- arrow_density
Amount of velocities to show.
- denoise
Boolean flag indicating whether to denoise.
- denoise_topn
Number of genes with highest likelihood selected to infer velocity directions.
- kinetics
Boolean flag indicating whether to estimate RNA kinetics.
- kinetics_topn
Number of genes with highest likelihood selected to infer velocity directions.
- calculate_velocity_genes
Boolean flag indicating whether to calculate velocity genes.
- top_n
The number of top features to plot.
- n_jobs
The number of parallel jobs to run.
- palette
The palette to use for coloring cells.
- palcolor
A vector of colors to use as the palette.
- show_plot
Whether to show the PAGA plot.
- save
Whether to save the PAGA plots.
- dpi
The DPI (dots per inch) for saving the PAGA plot.
- dirpath
The directory to save the PAGA plots.
- fileprefix
The file prefix to use for the PAGA plots.
- return_seurat
Whether to return a Seurat object instead of an anndata object. Default is TRUE.
Examples
data("pancreas_sub")
pancreas_sub <- RunSCVELO(srt = pancreas_sub, assay_X = "RNA", group_by = "SubCellType", linear_reduction = "PCA", nonlinear_reduction = "UMAP")
#> Python module 'scvelo' is required for velocity analysis but is not installed.
#> To install, run: PrepareEnv() and then check_Python('scvelo')
#> Error in RunSCVELO(srt = pancreas_sub, assay_X = "RNA", group_by = "SubCellType", linear_reduction = "PCA", nonlinear_reduction = "UMAP"): Required Python module 'scvelo' is not available. Please install it first.
head(pancreas_sub[[]])
#> orig.ident nCount_RNA nFeature_RNA S_score G2M_score nCount_spliced nFeature_spliced
#> CAGCCGAAGCGATATA SeuratProject 10653 3295 0.33188155 0.54532743 10653 3295
#> AGTGTCATCGCCGTGA SeuratProject 4596 2053 -0.07156909 -0.08865353 4596 2053
#> GATGAAAAGTTGTAGA SeuratProject 14091 3864 0.08940628 0.77610326 14091 3864
#> CACAGTACATCCGTGG SeuratProject 5484 2510 -0.25927997 -0.25941831 5484 2510
#> CGGAGCTCATTGGGCC SeuratProject 7357 2674 -0.11764368 0.46237856 7357 2674
#> AGAGCTTGTGTGACCC SeuratProject 6498 2516 -0.11406432 -0.17830831 6498 2516
#> nCount_unspliced nFeature_unspliced CellType SubCellType Phase
#> CAGCCGAAGCGATATA 1587 1063 Ductal Ductal G2M
#> AGTGTCATCGCCGTGA 1199 803 Pre-endocrine Pre-endocrine G1
#> GATGAAAAGTTGTAGA 2166 1379 Ngn3 low EP Ngn3 low EP G2M
#> CACAGTACATCCGTGG 1339 859 Endocrine Beta G1
#> CGGAGCTCATTGGGCC 976 745 Ductal Ductal G2M
#> AGAGCTTGTGTGACCC 822 591 Ductal Ductal G1
names(pancreas_sub@assays)
#> [1] "RNA" "spliced" "unspliced"
FeatureDimPlot(pancreas_sub, c("stochastic_length", "stochastic_confidence"))
#> Warning: stochastic_length,stochastic_confidence are not in the features of srt.
#> Error in FeatureDimPlot(pancreas_sub, c("stochastic_length", "stochastic_confidence")): There are no valid features present.
FeatureDimPlot(pancreas_sub, "stochastic_pseudotime")
#> Warning: stochastic_pseudotime are not in the features of srt.
#> Error in FeatureDimPlot(pancreas_sub, "stochastic_pseudotime"): There are no valid features present.
VelocityPlot(pancreas_sub, reduction = "UMAP", plot_type = "stream")
#> Error in check_R("metR"): could not find function "check_R"
CellDimPlot(pancreas_sub, group.by = "SubCellType", reduction = "UMAP", pt.size = NA, velocity = "stochastic")
#> Error in check_R("metR"): could not find function "check_R"
pancreas_sub <- Standard_SCP(pancreas_sub, normalization_method = "SCT", nonlinear_reduction = "tsne")
#> [2025-09-08 16:17:12.333683] Start Standard_SCP
#> [2025-09-08 16:17:12.333812] Checking srtList... ...
#> Warning: Failed to check Seurat version compatibility: 'list' object cannot be coerced to type 'double'
#> Error in check_R("glmGamPoi"): could not find function "check_R"
pancreas_sub <- RunSCVELO(srt = pancreas_sub, assay_X = "SCT", group_by = "SubCellType", linear_reduction = "Standardpca", nonlinear_reduction = "StandardTSNE2D")
#> Python module 'scvelo' is required for velocity analysis but is not installed.
#> To install, run: PrepareEnv() and then check_Python('scvelo')
#> Error in RunSCVELO(srt = pancreas_sub, assay_X = "SCT", group_by = "SubCellType", linear_reduction = "Standardpca", nonlinear_reduction = "StandardTSNE2D"): Required Python module 'scvelo' is not available. Please install it first.