生信软件札记

更新R和R包

2020-07-20  本文已影响0人  果蝇饲养员的生信笔记

三个月前R 4.0版本就已经正式上线了,之前怕麻烦就一直没更新,而现在由于要用到新版本的R包,才想起顺便一起更新了R。

目前在官网上的最新版R是2020-06-22的4.0.2版本。我直接把原来的R 3.6整个卸载了,再下载了新版本来安装(https://mirrors.tongji.edu.cn/CRAN/src/base/R-4/R-4.0.2.tar.gz)。

新版本的R已经不能够使用以前安装的R包了,全部都要重新安装。就算是把之前R 3.6里面的library文件夹整个复制到4.0里面,也会提示这些包太旧了,需要更新。干脆全部都升级一遍吧。

options("repos" = c(CRAN="https://mirrors.tongji.edu.cn/CRAN/"))
options(BioC_mirror="http://mirrors.tuna.tsinghua.edu.cn/bioconductor")
update.packages() #更新已经安装的包

然后发现安装Bioconductor包时报错了,去官网看看,原来是需要安装3.11版本了。

if (!requireNamespace("BiocManager", quietly = TRUE))
 install.packages("BiocManager")
BiocManager::install(version = "3.11")

然后直接更新所有的Bioconductor包。然而又报错了,还是因为有些包太旧了,需要重新安装,不是更新,是re-install。尤其是TxDb、org.db这种,本身体积就很大,好不容易下载完了,安装一半告诉我缺了啥其它的包,等我装好了它说的那个包,回来再安装它,又重新下载一遍,而且常常反复好几次,使人崩溃。我就在不断报错和安装中耗费了一个下午。

弄完之后才去网上查了查有没有更新R和全部R包的捷径,竟然真的有。Y叔有一个R包叫做rvcheck,据说可以一键更新所有R包。

install.packages("rvcheck")
library(rvcheck)
check_r()
check_bioc('ggtree')
check_cran('emojifont')
check_github("GuangchuangYu/clusterProfiler")
update_all()  #更新所有的CRAN、Bioconductor、Github R包

下次可以试一试这个方法。此外还知道了,R每年发行一次,Bioconductor每年发行两次,最好是每个月都要更新一次所有的R包。

然后就是随便看一看。org.Dm.eg.db的版本是3.11.4,包含了GO数据,All mappings were based on data provided by: Gene Ontology http://current.geneontology.org/ontology/go-basic.obo With a date stamp from the source of: 2020-05-02。也是有KEGG pathway的,Mappings were based on data provided by: KEGG GENOME ftp://ftp.genome.jp/pub/kegg/genomes With a date stamp from the source of: 2011-Mar15。但是KEGG的版本很旧了。所以我们还是使用自制的KEGG.db,当天的最新版本。

remotes::install_github("YuLab-SMU/createKEGGdb")
library(createKEGGdb)
create_kegg_db("dme")
install.packages("KEGG.db_1.0.tar.gz",repos=NULL,type="source")
library(KEGG.db)

另外想起以前遇到的的一个问题,从自己筛选的基因的symbol转换到KEGG ID,大部分基因就丢失了,经常会找不到富集的通路。现在可以看一看这个KEGG.db。

> frame1 = toTable(KEGGPATHID2EXTID)
> frame2 <- toTable(KEGGPATHID2NAME)
> head(frame1)
  pathway_id gene_or_orf_id
1   dme00010   Dmel_CG10160
2   dme00010   Dmel_CG10202
3   dme00010   Dmel_CG10467
> head(frame2)
  path_id                                path_name
1   00010             Glycolysis / Gluconeogenesis
2   00020                Citrate cycle (TCA cycle)
3   00030                Pentose phosphate pathway
> length(unique(frame1$pathway_id)) 
[1] 136
> length(unique(frame1$gene_or_orf_id))
[1] 3238

实际上只有136条通路和3238个相关基因,比我想象的要少。再看看org.Dm.eg.db里面的2011年的PATH,就更少了。可能确实就是这么少了。

> length(keys(Dm,"PATH"))
[1] 127
> gene.df <- bitr(keys(Dm,"ENTREZID"),fromType="ENTREZID",
+                 toType="PATH",OrgDb = org.Dm.eg.db)
'select()' returned 1:many mapping between keys and columns
Warning message:
In bitr(keys(Dm, "ENTREZID"), fromType = "ENTREZID", toType = "PATH",  :
  90.96% of input gene IDs are fail to map...
> head(gene.df)
   ENTREZID  PATH
2     30971 00310
16    30986 00903
17    30986 01100
> length(unique(gene.df$ENTREZID))
[1] 2261
上一篇下一篇

猜你喜欢

热点阅读