R/ClusterDR.R

Defines functions ClusterDR PCATools

Documented in ClusterDR PCATools

#'Run PCA and Jackstaw and plots.
#' @param object Seurat object
#' @param npcs Compute N PC dims
#' @param jackstraw Run jackstraw
#' @param plotdir Where to export plots.
#' @export
PCATools <- function(object,npcs=50,jackstraw=T,plotdir='./'){
  object <- RunPCA(object = object, npcs = npcs, verbose = FALSE)
  if(jackstraw==TRUE){
    object <- JackStraw(object = object, num.replicate = 100,dims = npcs)
    object <- ScoreJackStraw(object = object,dims=1:npcs)
  }
  object <- LogSeuratCommand(object = object)
  object
}

#'Run all Dimension Reduction methods and find marker genes between clusters
#' @param object Seurat object
#' @param dim Which dimensions to use as input features
#' @param n.neighbors n number of neighbors for umap
#' @param k K prarma for find neifhbors
#' @algorithm Algorithm for modularity optimization (1 = original Louvain algorithm; 2 = Louvain algorithm with multilevel refinement; 3 = SLM algorithm; 4 = Leiden algorithm). Leiden requires the leidenalg python.
#' @param DM Run diffusion map
#' @param UMAP Run UMAP
#' @param TSNE Run TSNE
#' @param findallmarkers T/F run findallmarkers
#' @param resolution Resolution param for FindCluster
#' @param n.components How many components to compute for Dim reductions (UMAP,DM,etc)
#' @param min.dist minimum distance parameter for RunUMAP function. Controls how tightly to compress the umap points together
#' @import dplyr tidyr Seurat
#' @export

ClusterDR <-function(object,dims,n.neighbors=30,k=20,algorithm=1,DM=F,UMAP=T,TSNE=T,findallmarkers=T,resolution=0.5,n.components=2,min.dist=0.3){

  if(TSNE==TRUE){
     object <- RunTSNE(object = object, reduction = "pca",dims = dims)
  }
  if(UMAP==TRUE){
    object <- RunUMAP(object = object, reduction = "pca", n.neighbors = n.neighbors,n.components = n.components,dims = dims,min.dist=min.dist)
  }
  if(DM==TRUE){
    object <- RunDiffusion(object = object,dims=dims)
  }
  object <- FindNeighbors(object = object,dims=dims,k.param = k)
  object <- FindClusters(object = object,resolution=resolution)
  object$var_cluster <- object@active.ident
  if(findallmarkers==TRUE){
      object@misc[["findallmarkers"]] <- FindAllMarkers(object = object, only.pos = TRUE, min.pct = 0.25, logfc.threshold = 0.25)
  }

  object
}
Morriseylab/scExtras documentation built on July 10, 2024, 6:41 a.m.