HelenaLC / muscat

Multi-sample multi-group scRNA-seq analysis tools
161 stars 33 forks source link

I cannot compute pbHeatmap #133

Open bkheira opened 7 months ago

bkheira commented 7 months ago

Hello everyone,

I am using the Muscat Pipeline following the tutorial found on Bioconductor. I start from a Seurat Object that I convert into an SCE object and run the same pipeline as the tutorial. I preped the SCE : sce <- prepSCE(sce, kid = "ident", # subpopulation assignments gid = "orig.ident", # group IDs sid = "orig.echantillon", # sample IDs drop = TRUE) # drop all other colData columns and I agregated the data : pb <- aggregateData(sce, assay = "counts", fun = "sum", by = c("cluster_id", "sample_id")) and the I did a pseudobulk DS : res <- pbDS(pb, method = "edgeR") . Everything worked well and I could extract the results to do some volcano plots. But I can't make a pbHeatmap :

> print(pbHeatmap(sce, res, top_n = 10))
Error in rowVars(x, rows = rows, cols = cols, na.rm = na.rm, refine = refine,  : 
  Argument 'x' must be of type logical, integer or numeric, not 'list'.
5: rowVars(x, rows = rows, cols = cols, na.rm = na.rm, refine = refine, 
       center = center, dim. = dim., useNames = useNames, ...)
4: rowSds(x, na.rm = TRUE)
3: .z_norm(xs)
2: pbHeatmap(sce, res, top_n = 10)
1: print(pbHeatmap(sce, res, top_n = 10))

I get that there is a problem normalizing the data but I don't where the problematic list is. Can you help me please ?

Best regards, Kheira

rishikadaswani commented 4 months ago

Hi, I am having this issue as well. Were you able to resolve it?

professor-sagittarius commented 2 months ago

Hi Kheira, I'm not part of the dev team, but I might be able to help. I have seen this error occur when there are no genes in any clusters that pass the internal filters of pbHeatmap, i.e. FDR < 0.05 and log2FC > 1. You can remove these filters and display each cluster's top 10 genes sorted by p_adj.loc by specifying the options below. Keep in mind that the resulting heat map may not contain significant DGEs though; the fdr and lfc filters should be set accordingly.

print(pbHeatmap(sce, res, fdr = 1, lfc = 0, top_n = 10))