Seurat2与Seurat3兼容与切换

男,

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

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

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

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

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

在单细胞数据分析时,常常用到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 :

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

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

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

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

1> packageVersion("Seurat")
2[1] '3.1.0’

安装2x

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

1# Install the devtools package from Hadley Wickham
2install.packages('devtools')
3# Replace '2.3.0' with your desired version
4
5.libPaths("D:/R-3.5.1/library2")
6devtools::install_version(package = 'Seurat', version = package_version('2.3.0'))   #lib='D:/R-3.5.1/library2'

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

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

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

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

2x 与3x Seurat对象的区别

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

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

1detach("package:Seurat",unload = T)
2.libPaths("D:/R-3.5.1/library2")
3
4#source("https://z.umn.edu/archived-seurat")
5#devtools::install_version(package = 'Seurat', version = package_version('2.3.0'))  #lib='D:/R-3.5.1/library2'
6#?install_version
7library(Seurat,lib.loc = 'D:/R-3.5.1/library2')
8packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library2')
9
10[1] '2.3.0’

1pbmc_small@raw.data@ # count 矩阵
2pbmc_small@data@i # 均一化之后的数据
3pbmc_small@scale.data # 标准化之后的数据
4pbmc_small@var.genes # 高变基因
5pbmc_small@is.expr # 
6pbmc_small@ident  # 分类信息
7pbmc_small@meta.data # 元数据
8pbmc_small@project.name # 项目名称

而 seurat 3x呢,是这样的:

1detach("package:Seurat",unload = T)
2.libPaths("D:/R-3.5.1/library")
3.libPaths()
4
5[1] '3.1.0’
6
7library(Seurat,lib.loc = 'D:/R-3.5.1/library')
8packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library')

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

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

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

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

2x to 3x

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

2x 对象:

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

转化为3x对象:

1detach("package:Seurat",unload = T)
2.libPaths("D:/R-3.5.1/library")
3.libPaths()
4
5library(Seurat,lib.loc = 'D:/R-3.5.1/library')
6packageVersion("Seurat",lib.loc = 'D:/R-3.5.1/library')
7[1] '3.1.0’
8mypbmc<-CreateSeuratObject(Seurat2_obj@raw.data)

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

最后

我该用哪个版本的?

  • 如果刚开始做数据分析,尽快用3x做吧,毕竟是升级版,功能多样,也更合理。

  • 如果已经用2x做过一段时间数据分析了,那就不要轻易换了。

  • 最好是两个版本的都能用的像我这么溜。

最后的最后

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


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

(0)

相关推荐

  • 技术贴 | R语言:ggplot绘图的Y轴截断和拼接

    导读 记录一个产生Y轴截断ggplot绘图的方法.先用coord_cartesian根据Y轴把图截断成上下两份,接着用ggarrange拼接到一起,实现去不要的部分 一.准备依赖包 ggarrange ...

  • 单细胞工具箱|Seurat官网标准流程

    学习单细胞转录组肯定先来一遍Seurat官网的标准流程. 数据来源于Peripheral Blood Mononuclear Cells (PBMC),共2700个单细胞, Illumina Next ...

  • 仅需一招,轻松搞定R包

    最近很多人问我的问题都是R包安装的问题.在之前R包只要更新到最新版本,且能够联网,就可以轻松安装.,但现在随着R的功能越来越多,越来越强大.R包也越来越难安装了.并且什么人都可以开发发布R包,很多垃圾 ...

  • R的lib没有被指定的解决办法(因为‘lib’没有被指定)as ‘lib’ is unspecified

    情况一:'lib'没有被指定 在Windows上运行R,而不是以管理员身份运行.当安装一个软件包时,以下命令不起作用: install.packages("zoo") Instal ...

  • Seurat学习与使用(一)

    简介Seurat是一个r包,被设计用于单细胞rna-seq数据的细胞质控和分析.Seurat旨在使用户能够识别和解释单细胞转录组数据中的异质性来源,同时提供整合不同类型的单细胞数据的函数.目前Seur ...

  • Seurat2和Seurat3共存的方法

    软件升级虽然是一件值得高兴的是,但是代码变化太大却不是一件好消息.比如说Seurat,这个单细胞分析最常用的R包,它的2.x版本和3.x版本的变化就是翻天覆地. 为了能够重现别人的代码,你可能需要重装 ...

  • 关于国家医疗保障信息平台切换期间暂停医保结算服务的公告

    广大参保人.各参保单位: 为进一步加强医疗保障信息化建设,按照国家和省医疗保障局的统一部署,现定于2021年5月10日8时起正式切换上线国家医疗保障信息平台.信息平台切换上线期间,将暂停全市医疗保险. ...

  • 4.12复盘:高低切换的方式

    复盘最想赞美今天江龙船艇的多头,在这种高位股出现巨大亏钱效应的日子里,一次次坚决的扫板,直到尾盘竞价还在加单.作为短线接力选手,我真的佩服这样的决心. 今天是典型高低切换的行情,类似2018.3.23 ...

  • 12.25复盘:次新高低切换

    12.25盘中思路记录 1.次新周五龙头华能水电高开过多,量能不匹配加速形态,预期回落.贵州燃气竞价完毕符合预期,可以+1,但担心受次新回落预期影响,没有加仓. 2.高位次新滞胀,低位次新机会较明显, ...

  • Eclipse中git项目分支切换

    Eclipse中git项目分支切换

  • 掏空安卓?这个国产系统完全兼容安卓App

    大家好,欢迎来到黑马公社. 就在这几天,整个数码圈子都被华为的鸿蒙系统刷屏了! 别的不说,单就华为对鸿蒙系统的后台应用优化就足以让黑马眼馋. 可惜的是,黑马空有设备却没有通过审核.不得已,鸿蒙系统的这 ...

  • 炉石传说怎么切换账号?

    奇迹与你同行 炉石传说怎么切换账号? 炉石传说的套牌很难攒,并且每天给的奖励也不多,所以很多人都是玩多个账号来体验不同的套牌是很有必要的,毕竟不充钱想要体验到当前最好用的卡组只能这么办了. 那么炉石传 ...

  • 一个手机两个健康码怎么切换

    家中老人不会弄健康码,出门不是特别方便,因此常常绑定在家中儿女的手机上.那么一个手机两个健康码怎么切换,一起来看看. 1.打开微信>我>支付. 2.点击医疗健康. 3.点击电子健康卡. 4 ...

  • 吴冠中 | 东西画种兼容,水彩起了沟通作用

    艺水彩2019-11-08 11:29:00 吴冠中 别名荼 (1919-2010) 生于江苏宜兴农村 当代世界画坛有极大影响的画家, 从师林风眠.潘天寿等名家,留学法国, 在西方艺术中心巴黎,专攻西 ...