Skip to contents

Runs the Monocle3 algorithm on a Seurat object.

Usage

RunMonocle3(
  srt,
  assay = NULL,
  slot = "counts",
  reduction = DefaultReduction(srt),
  clusters = NULL,
  graph = NULL,
  partition_qval = 0.05,
  k = 50,
  cluster_method = "louvain",
  num_iter = 2,
  resolution = NULL,
  use_partition = NULL,
  close_loop = TRUE,
  root_pr_nodes = NULL,
  root_cells = NULL,
  seed = 11
)

Arguments

srt

A Seurat object.

assay

The name of the assay in the Seurat object to use for analysis. Defaults to NULL, in which case the default assay of the object is used.

slot

The slot in the Seurat object to use for analysis. Default is "counts".

reduction

The reduction used. Defaults to NULL, in which case the default reduction of the Seurat object is used.

clusters

The cluster variable in the Seurat object to use for analysis. Defaults to NULL, in which case use Monocle clusters is used.

graph

The name of the graph slot in the Seurat object to use for analysis. Defaults to NULL, in which case Monocle graph is used.

partition_qval

The q-value threshold for partitioning cells. Defaults to 0.05.

k

The number of nearest neighbors to consider for clustering. Defaults to 50.

cluster_method

The clustering method to use. Defaults to "louvain".

num_iter

The number of iterations for clustering. Defaults to 2.

resolution

The resolution parameter for clustering. Defaults to NULL.

use_partition

Whether to use partitions to learn disjoint graph in each partition. If not specified, user will be prompted for input. Defaults to NULL.

close_loop

Whether to close loops in the graph. Defaults to TRUE.

root_pr_nodes

The root nodes to order cells. If not specified, user will be prompted for input. Defaults to NULL.

root_cells

The root cells to order cells. If not specified, user will be prompted for input. Defaults to NULL.

seed

The random seed to use for reproducibility. Defaults to 11.

Examples

if (interactive()) {
  data("pancreas_sub")
  # Use Monocle clusters to infer the trajectories
  pancreas_sub <- RunMonocle3(srt = pancreas_sub, reduction = "UMAP")
  names(pancreas_sub@tools$Monocle3)
  trajectory <- pancreas_sub@tools$Monocle3$trajectory
  milestones <- pancreas_sub@tools$Monocle3$milestones

  CellDimPlot(pancreas_sub, group.by = "Monocle3_partitions", reduction = "UMAP", label = TRUE, theme_use = "theme_blank") + trajectory + milestones
  CellDimPlot(pancreas_sub, group.by = "Monocle3_clusters", reduction = "UMAP", label = TRUE, theme_use = "theme_blank") + trajectory
  FeatureDimPlot(pancreas_sub, features = "Monocle3_Pseudotime", reduction = "UMAP", theme_use = "theme_blank") + trajectory

  ## Select the lineage using monocle3::choose_graph_segments
  # cds <- pancreas_sub@tools$Monocle3$cds
  # cds_sub <- monocle3::choose_graph_segments(cds, starting_pr_node = NULL, ending_pr_nodes = NULL)
  # pancreas_sub$Lineages_1 <- NA
  # pancreas_sub$Lineages_1[colnames(cds_sub)] <- pancreas_sub$Monocle3_Pseudotime[colnames(cds_sub)]
  # CellDimPlot(pancreas_sub, group.by = "SubCellType", lineages = "Lineages_1", lineages_span = 0.1, theme_use = "theme_blank")

  # Use Seurat clusters to infer the trajectories
  pancreas_sub <- Standard_SCP(pancreas_sub)
  CellDimPlot(pancreas_sub, group.by = c("Standardclusters", "CellType"), label = TRUE, theme_use = "theme_blank")
  pancreas_sub <- RunMonocle3(srt = pancreas_sub, clusters = "Standardclusters")
  trajectory <- pancreas_sub@tools$Monocle3$trajectory
  CellDimPlot(pancreas_sub, group.by = "Monocle3_partitions", reduction = "StandardUMAP2D", label = TRUE, theme_use = "theme_blank") + trajectory
  CellDimPlot(pancreas_sub, group.by = "Monocle3_clusters", reduction = "StandardUMAP2D", label = TRUE, theme_use = "theme_blank") + trajectory
  FeatureDimPlot(pancreas_sub, features = "Monocle3_Pseudotime", reduction = "StandardUMAP2D", theme_use = "theme_blank") + trajectory

  # Use custom graphs and cell clusters to infer the partitions and trajectories, respectively
  pancreas_sub <- Standard_SCP(pancreas_sub, cluster_resolution = 5)
  CellDimPlot(pancreas_sub, group.by = c("Standardclusters", "CellType"), label = TRUE)
  pancreas_sub <- RunMonocle3(
    srt = pancreas_sub,
    clusters = "Standardclusters", graph = "Standardpca_SNN"
  )
  trajectory <- pancreas_sub@tools$Monocle3$trajectory
  CellDimPlot(pancreas_sub, group.by = "Monocle3_partitions", reduction = "StandardUMAP2D", label = TRUE, theme_use = "theme_blank") + trajectory
  CellDimPlot(pancreas_sub, group.by = "Monocle3_clusters", reduction = "StandardUMAP2D", label = TRUE, theme_use = "theme_blank") + trajectory
  FeatureDimPlot(pancreas_sub, features = "Monocle3_Pseudotime", reduction = "StandardUMAP2D", theme_use = "theme_blank") + trajectory
}