b5842dc0410ffc8f3e6cfb47581794a0069cd13f max Fri Apr 18 15:52:46 2025 -0700 adding PrepSCTFindMarkers(obj) to seurat script for findallmarkers() diff --git src/cbPyLib/cellbrowser/R/cellbrowser.R src/cbPyLib/cellbrowser/R/cellbrowser.R index 89ed425..9ea3ebd 100644 --- src/cbPyLib/cellbrowser/R/cellbrowser.R +++ src/cbPyLib/cellbrowser/R/cellbrowser.R @@ -392,30 +392,31 @@ #if ("avg_log2FC" %in% colnames(markers)) #avgs <- -partition$avg_log2FC #else #avgs <- -partition$avg_logFC #ord <- order(partition$p_val_adj < 0.05, avgs) #res <- x[ord] #naCount <- max(0, length(x) - markers.n) #res <- c(res[1:markers.n], rep(NA, naCount)) #return(res) #} if (.hasSlot(object, "misc") && !is.null(x = object@misc["markers"][[1]])) { message("Found precomputed markers in obj@misc['markers']") markers <- object@misc["markers"]$markers } else { message("Running FindAllMarkers(), using wilcox test, min logfc diff 0.25") + PrepSCTFindMarkers(object = obj) markers <- FindAllMarkers( object, do.print = TRUE, only.pos = TRUE, logfc.threshold = 0.25, min.pct = 0.25 ) } message("Writing top ", markers.n, ", cluster markers to ", fname) #markers.order <- ave(x = rownames(x = markers), markers$cluster, FUN = markers.helper) #top.markers <- markers[markers.order[!is.na(x = markers.order)], ] require(dplyr); #markers %>% group_by(cluster) %>% top_n(n = markers.n, wt = avg_logFC) markers %>% group_by(cluster) %>% dplyr::filter(avg_log2FC > 1) %>% slice_head(n = markers.n) %>% ungroup() -> topMarkers write.table(x = topMarkers, file = fname, quote = FALSE, sep = "\t", col.names = NA)