查看原文
其他

动动手指的单细胞分析手动选点小工具:xSelectCells

鲤小鱼 单细胞天地 2022-08-15

分享是一种态度

在做单细胞分析的时候,时不时会遇到这样的情况:想知道这几个在图上看着很特别的点是哪几个细胞,或是一些可见的小subcluster想要直接标记出来。大多数时候还是有各种各样的解决方法的,包括Seurat自带的一些interactive功能,不过还稍稍不那么趁手(可能是我用得太少哈哈)。

最近恰好看到群友们提到类似的需求,手动从降维图上选出目标细胞来做后续分析,那刚好呀,shiny我熟,类似的功能以前实现过,趁着周末不如赶紧包包做起来嘿嘿🤔

产物就是这里要介绍的这个小小包,github地址:

https://github.com/vikkki/xSelectCells

话不多说先开始:

安装

安装这个小工具之前可以先安装shiny,ploty 以及dplyr, 当然还有Seurat啦。

devtools::install_github('vikkki/xSelectCells')

使用

使用也非常简单,目前就一个函数。需要注意的是作为input的seurat对象需要有umap,以及umap的key需要是 UMAP_。不过一般RunUMAP之后key就已经符合需要了。

xSelectCells::xSelectCells(seurat_obj)
# 或者
barcodes <- xSelectCells::xSelectCells(seurat_obj)

界面如图

如果看不到下面的按钮和信息栏建议把右下窗口拉大一点,或者在浏览器打开(viewer section 上边 show in new window):

xs界面

细胞信息:

xs信息

细胞下载:

选好之后点下载,这时候不会关闭shiny,保存后可以继续选择新的一组细胞。

xs下载

由于xSelectCells()函数会在最终结束shinyApp session的时候返回最后选定的细胞barcodes,所以可以直接点击确认按钮退出选择界面并返回barcode列表:

Listening on http://127.0.0.1:3269
> barcodes
 [1] "GTAGCTAAGTATTGCC-7"  "AGGTGTTCATGGAATA-7"  "TTACCGCAGAGCAACC-10" "GCTTTCGAGGCAGGTT-1" 
 [5] "ATGCATGCACAAATCC-4"  "ACAACCAGTTACGGAG-5"  "CTTCTCTAGGCGATAC-5"  "GAGACTTTCACTGCTC-5" 
···

下游

拿到barcode列表之后,可以做的事情就有很多了,简单的比如将这些细胞从原来的对象里分出成新的对象:

seurat_obj_sub <- subset(seurat_obj, cells = barcodes)

或者在Dimplot里高光一波:

DimPlot(seurat_obj, cells.highlight = c(barcode))

以及重新命名,生成对应metadata等等。相信大家在分析的过程中肯定有更妙的应用。

包的后续

其实从产生想法到构建完成,如此小的包所花的时间意外也有好几天,这期间困扰我最久的(可能有90%的时间)就是shinyApp在作为包的时候的输入输出以及命名空间和环境问题,期间差点弃坑。不过幸好去看了Seurat的源码,才磕磕绊绊完成个这个小小工具。单细胞这么火,其实大佬们的工具真的很强,群友中的大佬也有无数好用的工具和代码。可能xSelectCells的最大意义是练习(笑),但是如果它稍微帮到你一点点,那真的

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存