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.