cbc5e17ce713a7076a9f95991e10262079780cc8 max Fri May 16 10:27:58 2025 -0700 overload -c to skip internal markers diff --git src/cbPyLib/cellbrowser/R/cellbrowser.R src/cbPyLib/cellbrowser/R/cellbrowser.R index b34b02f..7dc0341 100644 --- src/cbPyLib/cellbrowser/R/cellbrowser.R +++ src/cbPyLib/cellbrowser/R/cellbrowser.R @@ -387,32 +387,43 @@ if (length(levels(Idents(object))) > 1) { #markers.helper <- function(x) { #partition <- markers[x,] # Seurat4 changed the field name! grrrr... #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) #} + hasMarkers = FALSE if (.hasSlot(object, "misc") && !is.null(x = object@misc["markers"][[1]]) ) { + hasMarkers = TRUE message("Found precomputed markers in obj@misc['markers']") + } + + if (skip.markers) { + message("Not using precomputed markers, as --skipMarkers was set") + hasMarkers = FALSE + } + + if (hasMarkers) { + message("Using precomputed markers") markers <- object@misc["markers"]$markers } else { message("Running FindAllMarkers(), using wilcox test, min logfc diff 0.25") if ("SCT" %in% names(object@assays)) { message("Looks like an SCT object, so running PrepSCTFindMarkers()") PrepSCTFindMarkers(object = object) } markers <- FindAllMarkers( object, do.print = TRUE, only.pos = TRUE, logfc.threshold = 0.25, min.pct = 0.25 ) }