軟件升級(jí)雖然是一件值得高興的是,但是代碼變化太大卻不是一件好消息。比如說Seurat,這個(gè)單細(xì)胞分析最常用的R包,它的2.x版本和3.x版本的變化就是翻天覆地。
為了能夠重現(xiàn)別人的代碼,你可能需要重裝2.3.4版本的Seurat,官方提供了安裝腳本
source("https://gist.githubusercontent.com/satijalab/beb9bb50dedc75ee023bd5d9be5fe684/raw/e103577735a2fba9da2ccca14ce1ac33e46c1bc4/old_seurat.R")
但是在window下安裝會(huì)出一個(gè)報(bào)錯(cuò)

這個(gè)時(shí)候需要手動(dòng)安裝Seurat,要求有Rtools才能進(jìn)行編譯
install.packages('Seurat', repos = 'https://satijalab.org/ran', type = "source")
可以設(shè)置install.packages里的參數(shù)lib.loc,讓Seurat安裝到其他的文件加,就不會(huì)替換原來的Seurat,同時(shí)用library加載的時(shí)候,也需要設(shè)置lib.loc.
上面是簡(jiǎn)單可行易操作的方法,唯一的問題是你不能同時(shí)加載兩個(gè)Seurat版本,當(dāng)然你也不會(huì)想這樣子做,所以這是一個(gè)偽需求。
下面就是瞎折騰環(huán)節(jié), 我要將Seurat的2.3.4版本單獨(dú)搞出一個(gè)R包,Seurat2,這樣子就可以同時(shí)加載這兩個(gè)R包。
下載Seurat 2.3.4
wget https://satijalab.org/ran/src/contrib/Seurat_2.3.4.tar.gz
解壓縮它
tar xf Seurat_2.3.4.tar.gz
cd Seurat
刪除MD5文件,因?yàn)樗鼤?huì)做文件檢驗(yàn)
rm MD5
修改里面所有的Seurat替換成Seurat2, seurat替換成seurat2
find . -type f -print0 | xargs -0 sed -i "s/Seurat/Seurat2/g"
find . -type f -print0 | xargs -0 sed -i "s/seurat/seurat2/g"
這種無差別的替換會(huì)有一個(gè)問題,會(huì)把一些這類http://www.satijalab.org/seurat非代碼信息中的seurat替換成seurat2,不過這并不影響實(shí)際函數(shù)的使用。
將R/seurat.R重名為R/seurat2.R
mv R/seurat.R R/seurat2.R
修改R和src文件夾中的所有函數(shù),將里面的Seurat更改為Seurat2
tar -czf Seurat2.tar.gz Seurat
注意: 目前未修改測(cè)試數(shù)據(jù)集的對(duì)象,所以不能用Seurat2來運(yùn)行pbmc_small的例子
目前我將其上傳到GitHub,所以可以用devtools進(jìn)行安裝。由于代碼只是簡(jiǎn)單修改,存在bug,不建議嘗試使用。
devtools::install_github("xuzhougeng/Seurat2")