Seurat 报错记录

bug千千万,改完又忘,忘了又出……

记录在Seurat分析中各种各样的花式bug们🥹🥹

1. FindVariableFeatures()报错

Error: Cannot add more or fewer meta.features information without values being named with feature names

这个是RNA这个assays下面meta.features的名字里面有NA值,我推测是我在修改基因名或者是取子集的时候导致的bug,正常不会遇到,所以只要重新指定一下就好

data[["RNA"]]@meta.features <- data.frame(row.names = rownames(data[["RNA"]]))

参见 https://github.com/satijalab/seurat/issues/2317
当然,核心问题还是矩阵命名的问题导致的,想办法把基因名重新命名就好了,不能有一些特殊符号,例如‘-’之类的(github垃圾 都没有具体解决方法)

2. FeaturePlot() 显示不是很明显

这个问题其实不算一个bug(你用错了assay导致的弥散另说),其实是需要手动处理一下,把上下限的极值去除掉
If there are expression outliers in the FeaturePlot this can sometimes make it hard to visualize the full range of expression. You can set the min.cutoff and max.cutoff values in FeaturePlot to change the minimum and maximum values displayed. You can set this to a quantile by using for example “q5” for the lower 5%.

3.整合报错

Finding integration vector weights
Error in Embeddings(reduction)[nn.cells2, dims] : subscript out of bounds

这个意思基本就是一个整合要用到的anchor都没找到
至于为啥会这样呢?大概率是交集的基因没有(就是基因名不对应),例如一个是小鼠的(Gad1)一个对象是人类的基因(GAD1),这就不对应,把小鼠的所有基因名转为人的同源基因名再整合就可以了。

4. SplitObject报错

Error: No cells found

检查:

  1. metadata的行名是不是和Seurat object的列名一致(一般都是这个原因,基本上就出现在自己手动构建的对象里面,按正常的方式构建的对象不会有这个问题)
    解决:rownames(data@meta.data)=colnames(data)
  2. 检查对象/metadata里面有没有NA

5. SCTranform()报错

报错是这样子的

Error in .GetSeuratCompat() : could not find function ".GetSeuratCompat"

主要是因为版本问题,GetSeuratCompat是SeuratObject V5的函数,如果用对应的V5 Seurat和SeuratObject是没有问题的。但是我用的是SeuratV4+SeuratObjectV5所以会出现这个问题。解决办法就是卸SeuratObject V5,重装SeuratObject V4。

if (!requireNamespace("remotes", quietly = TRUE)) {
  install.packages("remotes")
}
options(repos = c("https://satijalab.r-universe.dev", getOption("repos")))
remotes::install_version("SeuratObject", "4.1.4")
remotes::install_version("Seurat", "4.4.0", upgrade = FALSE) # remotes will try to upgrade SeuratObject to v5, we need to tell it no

最佳版本配方是:sctransform 0.4.0, seurat 4.4.0, seuratobject 4.1.4

不过实际上是,其实我的R里面版本是没问题的(即,SeuratObject 是4.1.4),但是还是报错了。结果我发现我的conda list下面SeuratObject是5.0,在R里面用remove.package()是删不掉的。所以必须在conda里面强制删除conda remove r-seuratobject --force。这个--force是必须的,因为如果不加,conda下面所有依赖seuratobject的包都会被删个干净。
然后用上面的办法重装,或者直接用CRAN指定版本重装seuratobject v4也行,如下:

install.packages('https://cran.r-project.org/src/contrib/Archive/SeuratObject/SeuratObject_4.1.4.tar.gz',repos=NULL, type = 'source')

同bug可以参考github上的讨论:https://github.com/satijalab/seurat-object/issues/165

最后实测,还是得Seurat V4/V5 + SeuratObject V5, 上面说SeuratObject V4可以都是假的 要么就是Seurat的版本还得再降低🥲


持续更新……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容