dviraran / SingleR

SingleR: Single-cell RNA-seq cell types Recognition (legacy version)
GNU General Public License v3.0
263 stars 98 forks source link

converting integrated Seurat objects by convertSingleR2Browser #101

Open akhst7 opened 5 years ago

akhst7 commented 5 years ago

So I successfully created a singler object from the combined/integrated Seurat object but I can't convert it to upload and visualize it in the SinglerR website. I get this effort message;

Error in.rowNamesDF<-(x, value = value) : invalid 'row.names' length

I know why I get this, coming from virtually two Seruat objects together . Is there any way to get over this so I can visualize data ?

Thanks.

dviraran commented 5 years ago

Look at the code of that function and run it line-by-line, find where its failing and fix it.

sunkh1026 commented 5 years ago

I got the same issue here, while I used only one Seurat object. Here's the code:

singler = CreateSinglerObject(counts = seuratObj$SCT@data, ...)
singler$meta.data$orig.ident = seuratObj@active.ident
singler$meta.data$xy = seuratObj@reductions$umap@cell.embeddings # umap, instead of tSNE
singler$meta.data$clusters = seuratObj@active.ident
singler.new = convertSingleR2Browser(singler)

Error in .rowNamesDF<-(x, value = value) : invalid 'row.names' length

Please advise. Thanks!

akhst7 commented 5 years ago

@dviraran and @sunkh1026

I have not carefully looked at this yet, but the issue appears to be the very first part of convertSingleR2Browser. Here is a traceback;

6: stop("invalid 'row.names' length")

5: .rowNamesDF<-(x, value = value) 4: row.names<-.data.frame(*tmp*, value = value) 3: row.names<-(*tmp*, value = value) 2: rownames<-(*tmp*, value = cell.names) 1: convertSingleR2Browser(PA.combined.singler)`

This part of code gives an error;

`labels1 = data.frame() if (!is.null(singler$singler[[1]]$SingleR.single$labels1)) { labels1 = as.data.frame(sapply(singler$singler, FUN = function(x) x$SingleR.single$labels1)) if (!is.null(singler$singler[[1]]$SingleR.single.main)) { labels1.main = as.data.frame(sapply(singler$singler, FUN = function(x) x$SingleR.single.main$labels1)) labels1 = cbind(labels1, labels1.main) colnames(labels1) = c(ref.names, paste0(ref.names, ".main")) } else { colnames(labels1) = c(ref.names) }

rownames(labels1) = cell.names }`

The only thing I can find is that label1 and label has different dimension;

dim(labels1) [1] 13436 4

dim(labels) [1] 15677 6

This is pretty much as far as I can go at this point. I really need a pointer to fix this.

Thanks.

biobug16 commented 4 years ago

Hi All, I am also struggling with the same issue. Did you guys manage to solve this issue? Kindly share your troubleshooting experience.

Thanks in advance

akhst7 commented 4 years ago

@bharati16mehani,

I don't think this issue is solved but you can use the new SingleR version and plot similar t-SNE or UMAP plots by using ggplot2 or ggpubr or write your own Shiny scripts, then you don't need this web resource.