前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Seurat2与Seurat3兼容与切换

Seurat2与Seurat3兼容与切换

作者头像
生信技能树jimmy
发布2020-03-30 14:32:28
1.8K0
发布2020-03-30 14:32:28
举报

作者 | 周运来

男,

一个长大了才会遇到的帅哥,

稳健,潇洒,大方,靠谱。

一段生信缘,一棵技能树,

一枚大型测序工厂的螺丝钉,

一个随机森林中提灯觅食的津门旅客。

在单细胞数据分析时,常常用到Seurat(https://satijalab.org/seurat/install.html)这个R语言包。Seurat 分析流程基本涵盖了单细胞分析中的所有常见分析方法,包括filtering,tSNE,UMAP降维及可视化等,还有一个重量级功能就是矫正不同实验之间的批次效应。同时,Seurat团队也在积极对其进行扩展和升级。这不,今年4月份正式推出3.0,在8月份又推出3.1,其实3x版本之间的差异是比较小的。真正困惑我们的是2x 与3x 之间差别:

  • 函数名称变了
  • seurat对象数据结构变了
  • 整合分析的算法变了

我们知道他是在往好的方向来变,可是Seurat2依然有他的一些优点,简单对比一下:

  • 已经有文献引用,应用成熟
  • 我之前的数据就是用2x做的,文章都快发了,不能换做3x吧
  • CCA虽然速度慢,但是矫正用不同的单细胞实验平台进行试验带来的批次效应还是很好的
  • 3x的算法虽然可以实现垮平台、器官、物种的整合,但是由于强大的矫正功能,对于肿瘤和外周血样本的矫正有时候却过了头。
  • Seurat 3的 findmarker 这个功能可以一次计算10万以上的细胞,而Seurat 2就不行

那么,折衷的方案就是同时安装 Seurat 2和 Seurat 3的包,通过数据格式整理把2x和3x的优点都利用起来。

不管是在Linux还是Windows里面,均可采取的办法就是:

将Seurat 2和 Seurat 3 安装在不同的 library 里面。

安装3x

先查看当前的library :

> .libPaths()
[1] "D:/R-3.5.1/library"

我把新版本的seurat(3x)装在这个路径下,这个很好装,因为托管在了CRAN上面:

# Enter commands in R (or R studio, if installed)
install.packages('Seurat')
library(Seurat)

当然可以在install.package里面指定安装的路径,也可以通过.libPaths()去修改默认的安装路径。安装后:

> packageVersion("Seurat")
[1] ‘3.1.0’

安装2x

可以参照官网给的示例来安装,因为3x与2x的名称一样都叫Seurat就不能装在同一个library路径下,所以要改变安装路径。同比之下,今年monocle升级后,直接叫monocle3了,它就可以安装在同一个路径下。

# Install the devtools package from Hadley Wickham
install.packages('devtools')
# Replace '2.3.0' with your desired version

.libPaths("D:/R-3.5.1/library2")
devtools::install_version(package = 'Seurat', version = package_version('2.3.0'))   #lib='D:/R-3.5.1/library2'

加载的时候,为防止万一:

library(Seurat,lib.loc = 'D:/R-3.5.1/library2')
packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library2')
[1] ‘2.3.0’

在切换的时候,先去加载:

detach("package:Seurat",unload = T)

2x 与3x Seurat对象的区别

这直接导致了2x生成的对象不能直接用3来分析,反之亦然。

先来看看2x的对象结构:

detach("package:Seurat",unload = T)
.libPaths("D:/R-3.5.1/library2")

#source("https://z.umn.edu/archived-seurat")
#devtools::install_version(package = 'Seurat', version = package_version('2.3.0'))  #lib='D:/R-3.5.1/library2'
#?install_version
library(Seurat,lib.loc = 'D:/R-3.5.1/library2')
packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library2')

[1] ‘2.3.0’
pbmc_small@raw.data@ # count 矩阵
pbmc_small@data@i # 均一化之后的数据
pbmc_small@scale.data # 标准化之后的数据
pbmc_small@var.genes # 高变基因
pbmc_small@is.expr # 
pbmc_small@ident  # 分类信息
pbmc_small@meta.data # 元数据
pbmc_small@project.name # 项目名称

而 seurat 3x呢,是这样的:

detach("package:Seurat",unload = T)
.libPaths("D:/R-3.5.1/library")
.libPaths()

[1] ‘3.1.0’

library(Seurat,lib.loc = 'D:/R-3.5.1/library')
packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library')

3x可以分析多套数据,所以在结构上做了调整。

pbmc_small@assays$RNA@counts  # counts  矩阵
pbmc_small@meta.data # 元数据
pbmc_small@active.assay # 当前用的数据
pbmc_small@active.ident # 当前用的ident  
pbmc_small@graphs # 图数据
pbmc_small@neighbors # 临近数据
pbmc_small@reductions # 降维结果
pbmc_small@project.name # 项目名称

原来2x的对象放在了assays的里面:

不仅数据结构,函数名也变了,所以要清楚相应的函数以及数据结构,这样才能灵活运用3x和2x来挖掘单细胞转录组的数据。

2x to 3x

如果我已经有了一个2x的对象,如何用它来创建一个3x的分析对象呢?就是把矩阵从2x 用 3x的CreateSeuratObject传到3x里面。

2x 对象:

library(Seurat,lib.loc = 'D:/R-3.5.1/library2')
packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library2')
[1] ‘2.3.0’
Seurat2_obj<-pbmc_small

转化为3x对象:

detach("package:Seurat",unload = T)
.libPaths("D:/R-3.5.1/library")
.libPaths()

library(Seurat,lib.loc = 'D:/R-3.5.1/library')
packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library')
[1] ‘3.1.0’
mypbmc<-CreateSeuratObject(Seurat2_obj@raw.data)

所以懂了这对象的数据结构后,就可以按照自己的意愿做数据分析了。

最后

我该用哪个版本的?

  • 如果刚开始做数据分析,尽快用3x做吧,毕竟是升级版,功能多样,也更合理。
  • 如果已经用2x做过一段时间数据分析了,那就不要轻易换了。
  • 最好是两个版本的都能用的像我这么溜。

最后的最后

把这个R包的说明文档打印出来一个一个对照学习。祝大家学习愉快。


注 | 参考 在linux中用同一个版本的R 同时安装 Seurat2 和 Seurat3的教程(https://www.jb51.net/article/167941.htm)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 单细胞天地 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装3x
  • 安装2x
  • 2x 与3x Seurat对象的区别
  • 2x to 3x
  • 最后
  • 最后的最后
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档