动动手指的单细胞分析手动选点小工具:xSelectCells
分享是一种态度
在做单细胞分析的时候,时不时会遇到这样的情况:想知道这几个在图上看着很特别的点是哪几个细胞,或是一些可见的小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):
细胞信息:
细胞下载:
选好之后点下载,这时候不会关闭shiny,保存后可以继续选择新的一组细胞。
由于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的最大意义是练习(笑),但是如果它稍微帮到你一点点,那真的