1. 程式人生 > >在linux中用同一個版本的R 同時安裝 Seurat2 和 Seurat3

在linux中用同一個版本的R 同時安裝 Seurat2 和 Seurat3

在linux中用同一個版本的R 同時安裝 Seurat 2 和 Seurat 3

Seurat  作為單細胞分析中的重量級R包,有多好用用,用過的人都知道。Seurat 分析流程基本涵蓋了單細胞分析中的所有常見分析方法,包括filtering,tSNE,UMAP降維及畫圖等。還有一個重量級功能就是矯正不同實驗之間的批次效應。然而Seurat 2和Seurat 3的矯正方法完全不一樣,得到的結果也不一致。Seurat 2是基於CCA (典型相關性)的,可以矯正腫瘤,外周血及癌旁組織間由於實驗帶來的批次效應,也能很好的矯正用不同的單細胞實驗平臺進行試驗帶來的批次效應。雖然速度慢,效果還是不錯的。而Seurat 3 則是基於樣本間具有相似表達譜的細胞群來進行矯正,對於同一種性質的實驗,由於不同單細胞技術造成的實驗批次效應,seurat 3 能夠很好的矯正。從官網給的pancers矯正結果就可以看到其矯正能力多麼強大。然而正式因為如此強大的矯正能力,對於腫瘤和外周血樣本的矯正卻過了頭,導致不該分在一起的細胞具有了相似的基因表達譜。本人也是做了好幾個課題,發現都存在這樣的問題,因此果斷放棄Seurat 3的矯正方法,繼續用Seurat 2的。但是Seurat 3的 findmarker 這個功能可以一次計算10萬以上的細胞不報錯,而Seurat 2就不行,折衷的方案是同時安裝 Seurat 2和 Seurat 3的包,在記憶體裡切換資料,而不用寫到本地後再用Seurat 3讀取後升級。尤其是對於動輒10幾萬個細胞來說,儲存資料到本地這個操作要花費至少30min, 讀取也要30min.

下面我就告訴大家不用讀寫到本地就可以在Seurat 2 和 Seurat 3之間完美切換,。

其實方法很簡單,將Seurat 2和 Seurat 3 安裝在不同的 library 裡面就行了。

我已經安裝好了,以我自己進行的自由切換為例:

> R.version
               _                           
platform       x86_64-conda_cos6-linux-gnu 
arch           x86_64                      
os             linux-gnu                   
system         x86_64, linux-gnu           
status                                     
major          3                           
minor          6.1                         
year           2019                        
month          07                          
day            05                          
svn rev        76782                       
language       R                           
version.string R version 3.6.1 (2019-07-05)
nickname       Action of the Toes         

 我用的是最新的R版本 3.6.1很好用。

預設的library 是conda 自帶的
> .libPaths()
[1] "/data/home/heshuai/anaconda3/lib/R/library"
預設的Seurat是最新版的 Seurat 3
> library(Seurat)
Registered S3 method overwritten by 'R.oo':
  method        from       
  throw.default R.methodsS3
> packageVersion("Seurat")
[1] ‘3.0.2’

我在另一個library 裡安裝了 Seurat 2

/data/home/heshuai/R/x86_64-conda_cos6-linux-gnu-library

在兩者間自由切換

1. 首先將 Seurat 2 所在的library 載入進來

> .libPaths("/data/home/heshuai/R/x86_64-conda_cos6-linux-gnu-library")
> .libPaths()
[1] "/data/home/heshuai/R/x86_64-conda_cos6-linux-gnu-library" "/data/home/heshuai/anaconda3/lib/R/library"              
> 

2. detach Seurat 3 後加載 Seurat 2, 因為這個時候Seurat 2 所在的library 已經在Seurat 3 之前了,系統會預設先載入Seurat 2 

> detach("package:Seurat", unload = T)
> library(Seurat)
Loading required package: ggplot2
RStudio Community is a great place to get help: https://community.rstudio.com/c/tidyverse.
Loading required package: cowplot

********************************************************
Note: As of version 1.0.0, cowplot does not change the
  default ggplot2 theme anymore. To recover the previous
  behavior, execute:
  theme_set(theme_cowplot())
********************************************************

Loading required package: Matrix
> packageVersion("Seurat")
[1] ‘2.3.4’
>   

現在Seurat 3已經成功的切換成Seurat 2了. 想要載入Seurat 3的時候,將預設library 換到Seurat 2的前面即可。

是不是 so easy