天子呼來不上船,
自稱臣是菜鳥團(tuán)。
在這里宪萄,和國際同行一起學(xué)習(xí)單細(xì)胞數(shù)據(jù)分析瞧预。
最近在R4上安裝Seurat V4 的時候屎债,有可能會遇到這樣的報錯:
Error: package or namespace load failed for ‘Seurat’: object ‘markvario’ is not exported by 'namespace:spatstat'
遇到報錯第一步肯定是先去瀏覽器查詢啦。方法是:復(fù)制Error:
后面的信息垢油,黏貼到瀏覽器(必應(yīng)或者Google)盆驹,按搜索按鈕就可以了。相信我滩愁,你并不孤獨躯喇。果然有很多人遇到這個問題了,而且已經(jīng)給出了解決方案硝枉,并在Seurat問答池中形成討論:
https://github.com/satijalab/seurat/issues/4226
https://github.com/satijalab/seurat/issues/4243
https://github.com/satijalab/seurat/issues/4222
主要原因是:Seurat依賴的R包spatstat
升級了廉丽,這是一個分析空間數(shù)據(jù)的R包,在Seurat中是分析空間轉(zhuǎn)錄組數(shù)據(jù)的支持包妻味,對應(yīng)的主要函數(shù)是Seurat::RunMarkVario()
正压。
可以看到,是2021年3月13號更新的重大升級责球,為什么說是重大升級呢焦履?從1.64升級到2.01,一般的小修小補是不會動個位數(shù)的雏逾,如可升級到1.67嘉裤。而在這次升級中,把原來的函數(shù)spatstat::markvario
變成了 spatstat.core::markvario
所以從新安裝的時候會有上面的報錯栖博。就是Seurat所依賴的函數(shù)變了屑宠,無法再調(diào)用到。這個時候我們可以怎么辦呢笛匙?
- 安裝舊版本的spatstat侨把。你不是更新了嗎犀变?我用舊的。
remove.packages(grep("spatstat", installed.packages(), value = T))
.rs.restartR()
devtools::install_version("spatstat", version = "1.64-1")
- 改Seurat函數(shù)秋柄。你不是依賴的函數(shù)名變了嗎获枝?我直接改你的源碼,讓Seurat符合新的依賴環(huán)境骇笔。
這個工作已經(jīng)由Seurat的開發(fā)者完成了省店,當(dāng)然可能提交到CRAN還需要一點時間驳遵,但是根據(jù)Github上面的信息是复,應(yīng)該已經(jīng)同步好了。
- 修改Seurat的命名空間谢澈。不推薦芦劣,這種方法是不在命名空間文件中出現(xiàn)spatstat粗俱,因為目前我還沒有空間數(shù)據(jù),我不用它為什么要加載它呢虚吟?當(dāng)然寸认,這要求懂一些R包構(gòu)建的基本知識,不然串慰,不知道修改哪里呀偏塞。
R包就是一系列文件及其編譯文件,R包一共有5種states:
source
bundled
binary
installed
in-memory
install.packages()
和devtools::install_github()
都是從source, bundled, binary這些states轉(zhuǎn)成 installed states邦鲫,而library()
則是使installed package變成in-memory灸叼。
library一如字面意思所言:圖書館。install
的過程是我們買書(R包)庆捺,為什么會有不同的安裝方式呢古今?因為不同的書放在不同的商城,所以我們要從不同的地方來采購疼燥。install.packages()
是從CRAN標(biāo)準(zhǔn)庫安裝沧卢,devtools::install_github()
是從菜市場安裝。買來之后醉者,library()
就是拿出來讀了但狭,想讀哪本書,就拿哪一本撬即。所以立磁,在安裝R包之前要知道這個包在那個倉庫放著的,百度R包名字即可剥槐。
R包的基本形態(tài)有以下幾種:
這些都對應(yīng)一個文件唱歧,可以在.libPath()
輸出的路徑下查看。
那么,如何快速查看一個R包的依賴環(huán)境呢颅崩?
library(Seurat)
packageVersion('Seurat')
[1] ‘4.0.0’
我們使用pacman
這個R包開查看几于。
# install.packages('pacman')
library(pacman)
p_info(Seurat)
Package: Seurat
Version: 4.0.0
Date: 2021-01-27
Title: Tools for Single Cell Genomics
Description: A toolkit for quality control, analysis, and exploration of single cell RNA sequencing
data. 'Seurat' aims to enable users to identify and interpret sources of heterogeneity
from single cell transcriptomic measurements, and to integrate diverse types of single
cell data. See Satija R, Farrell J, Gennert D, et al (2015) <doi:10.1038/nbt.3192>,
Macosko E, Basu A, Satija R, et al (2015) <doi:10.1016/j.cell.2015.05.002>, Stuart T,
Butler A, et al (2019) <doi:10.1016/j.cell.2019.05.031>, and Hao, Hao, et al (2020)
<doi:10.1101/2020.10.12.335331> for more details.
查看依賴關(guān)系:
p_depends(Seurat)
$Depends
[1] "methods"
$Imports
[1] "cluster" "cowplot" "fitdistrplus" "future" "future.apply" "ggplot2" "ggrepel" "ggridges" "graphics" "grDevices" "grid"
[12] "httr" "ica" "igraph" "irlba" "jsonlite" "KernSmooth" "leiden" "lmtest" "MASS" "Matrix" "matrixStats"
[23] "miniUI" "patchwork" "pbapply" "plotly" "png" "RANN" "RColorBrewer" "Rcpp" "RcppAnnoy" "reticulate" "rlang"
[34] "ROCR" "Rtsne" "scales" "scattermore" "sctransform" "SeuratObject" "shiny" "spatstat.core" "spatstat.geom" "stats" "tibble"
[45] "tools" "utils" "uwot"
$LinkingTo
[1] "Rcpp" "RcppEigen" "RcppProgress"
$Suggests
[1] "ape" "rsvd" "testthat" "hdf5r" "S4Vectors" "SummarizedExperiment" "SingleCellExperiment"
[8] "MAST" "DESeq2" "BiocGenerics" "GenomicRanges" "GenomeInfoDb" "IRanges" "rtracklayer"
[15] "Rfast2" "monocle" "Biobase" "VGAM" "limma" "metap" "enrichR"
[22] "mixtools"
查看反向依賴關(guān)系:
p_depends_reverse(Seurat)
$Imports
[1] "CDSeq" "DUBStepR" "scMappR" "Signac" "SignacX" "SoupX"
$Suggests
[1] "BisqueRNA" "clustree" "conos" "DIscBIO" "dyngen" "nanny" "rliger" "Rmagic"
[9] "singleCellHaystack" "treefit" "VAM"
寫一個R包,對我們普通用戶來說只是安裝加載使用沿后,而對開發(fā)者而言沿彭,決定開源以后,就像第一次送孩子進(jìn)學(xué)校:他和老師和同學(xué)處的好嗎尖滚?他餓了不會在課堂上就大哭起來吧喉刘?能不能聽老師的教育呀?