前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Seurat2和Seurat3共存的方法

Seurat2和Seurat3共存的方法

作者头像
生信技能树jimmy
发布2020-03-30 10:37:40
9110
发布2020-03-30 10:37:40
举报
文章被收录于专栏:单细胞天地单细胞天地

软件升级虽然是一件值得高兴的是,但是代码变化太大却不是一件好消息。比如说Seurat,这个单细胞分析最常用的R包,它的2.x版本和3.x版本的变化就是翻天覆地。

为了能够重现别人的代码,你可能需要重装2.3.4版本的Seurat,官方提供了安装脚本

代码语言:javascript
复制
source("https://gist.githubusercontent.com/satijalab/beb9bb50dedc75ee023bd5d9be5fe684/raw/e103577735a2fba9da2ccca14ce1ac33e46c1bc4/old_seurat.R")

但是在window下安装会出一个报错, 提示无法在Windows下安装MacOS的版本

这个时候需要手动安装Seurat,注意,这里要求有Rtools才能进行编译

代码语言:javascript
复制
install.packages('Seurat', repos = 'https://satijalab.org/ran', type = "source")

可以设置install.packages里的参数lib.loc,让Seurat安装到其他的文件加,就不会替换原来的Seurat,同时用library加载的时候,也需要设置lib.loc.

上面是简单可行易操作的方法,唯一的问题是你不能同时加载两个Seurat版本,当然你也不会想这样子做,所以这是一个伪需求。

下面就是瞎折腾环节, 我要将Seurat的2.3.4版本单独搞出一个R包,Seurat2,这样子就可以同时加载这两个R包。

下载Seurat 2.3.4

代码语言:javascript
复制
wget https://satijalab.org/ran/src/contrib/Seurat_2.3.4.tar.gz

解压缩它

代码语言:javascript
复制
tar xf Seurat_2.3.4.tar.gz
cd Seurat

删除MD5文件,因为它会做文件检验

代码语言:javascript
复制
rm MD5

修改里面所有的Seurat替换成Seurat2, seurat替换成seurat2

代码语言:javascript
复制
find . -type f -print0 | xargs -0 sed -i "s/Seurat/Seurat2/g"
find . -type f -print0 | xargs -0 sed -i "s/seurat/seurat2/g"

这种无差别的替换会有一个问题,会把一些这类http://www.satijalab.org/seurat非代码信息中的seurat替换成seurat2,不过这并不影响实际函数的使用。

R/seurat.R重名为R/seurat2.R

代码语言:javascript
复制
mv R/seurat.R R/seurat2.R

之后将修改后的文件进行打包

就能用install.packages("Seurat2.tar.gz",repos=NULL,type="source")

进行安装了

代码语言:javascript
复制
tar -czf Seurat2.tar.gz Seurat

注意: 目前未修改测试数据集的对象,所以不能用Seurat2来运行pbmc_small的例子

目前我将其上传到GitHub,所以可以用devtools进行安装。由于代码只是简单修改,存在bug,不建议尝试使用。

代码语言:javascript
复制
devtools::install_github("xuzhougeng/Seurat2")

代码测试,数据来自文献https://www.nature.com/articles/srep39921

代码语言:javascript
复制
library(Seurat)
library(Seurat2)

molecules <- read.delim("~/tung/molecules.txt",header = TRUE,
                        row.names = 1)

# 使用Seurat2进行分析
obj <- CreateSeurat2Object(raw.data = molecules, 
                          min.cells = 3, #筛选至少在3个细胞中表达的基因
                          min.genes = 200) #筛选至少有200个基因表达的细胞
obj <- FilterCells(obj, 
                   subset.names = c("nUMI","nGene"), 
                   low.thresholds = c(25000, 6000),
                   high.thresholds = c(Inf, Inf))
obj <- NormalizeData(
  object = obj, 
  normalization.method = "LogNormalize", 
  scale.factor = 10000
)

obj <- FindVariableGenes(
  object = obj,
  mean.function = ExpMean, #计算x轴的值的方法
  dispersion.function = LogVMR, #计算y轴的值的方法
  do.plot = F,
  x.low.cutoff = 0.0125, 
  x.high.cutoff = 3, 
  y.cutoff = 0.5
)

obj <- ScaleData(
  object = obj, 
  vars.to.regress = c("nUMI")
)

obj <- RunPCA(
  object = obj, 
  pc.genes = obj@var.genes, 
  do.print = FALSE
)

pca_to_use <- 14 #上一步主成分的个数
obj <- FindClusters(
  object = obj, 
  reduction.type = "pca", 
  dims.use = 1:pca_to_use,  # 
  resolution = 1.0, 
  print.output = 0, 
  save.SNN = TRUE
)

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档