Linux中的三个语言环境

写在前面的

上期推文主要专注于数据挖掘的小工具,要批量挖掘一些物种的序列信息有两种途径:一种是使用NCBI的在线批量网站batch entrez,这种方法适合挖掘数据量(序列条数)在2000条以内的数据。如果数据量超过了2000,可以考虑entrez direct本地数据挖掘工具。

语言环境管理

        这次要分享的内容是Linux中语言环境的管理,通常就做生物信息而言,一般会用到R,Perl和Python三种编程语言。当然有些生物信息软件是以C语言或者Java为基础编写的。例如NGS数据第一步的FastQC软件就是以Java为基础写的。FastQC当前版本对除了对OPENJDK1.8版本会报错以外,其余Java版本我还没有遇到过报错。这次为什么专门要写R,Perl还有Python在Linux系统中环境管理的推文呢,主要是我个人在日常的生物信息学分析中遇到过很多坑。其实这些弯路大家没有必要走,写在这里纯粹是为大家在遇到这些坑时提供便利解决的途径。

Perl环境的管理

        Linux系统会自带perl语言,系统自带的perl在/usr/bin目录下,但是Linux系统一般只允许一个perl存在。它不能同时允许两个perl的存在。(也不是绝对不允许)下面举一个我犯过错而且很多朋友也犯过错的例子,先在系统自带的perl里安装了较多Perl程序包后,突然某一天可能要处理宏基因组扩增子数据了,这是就会想到安装qiime或者qiime2,由于qiime的手动安装非常麻烦,要处理很多依赖和兼容性问题,很多人都会选择使用conda安装qiime。当选择conda安装qiime时,可能直接一路回车敲下去。最后导致安装好一切分析完数据后,某天要使用过去安装的perl程序包分析数据时却报错无法找到perl环境了。这是因为conda在安装软件时会自动把软件依赖的所有程序都安装好,例如安装qiime的时候就会自动把qiime依赖的perl安装好。但是Linux系统通常只允许存在一个perl,这时系统自带的perl和conda安装的perl就会起冲突。导致以前安装的perl包不能使用了。对于这种情况的解决办法,一个是在用conda安装比较复杂的软件时,最好是将这个软件安装在一个独立的虚拟环境里。例如用conda安装qiime最好如下安装方式

#create是创建一个虚拟环境
conda env create -n your_qiime_version --file your_qiime_version-conda.yml
#使用qiime时
source activate qiime2
#使用完后关闭工作环境
source deactivate

R语言的管理

        一般情况下Linux不会自带R语言,所以这时就需要自己手动安装R语言,但是R的一大缺陷在于兼容性差,R新版本不会兼容旧版本的程序包,R新版本的程序包也不会兼容旧版本的程序包,R新版本程序包也不会兼容旧版本R。所以最好在安装R语言之前选择一个最合适的版本,一般是较为稳定的,很多程序包都能互相兼容的版本。具体可以在bioconductor中查看大多数R语言包都支持什么版本的R。安装R语言则用如下方式,以3.5.3为例
在百度或者Bing搜索R for Linux

wget https://cran.r-project.org/src/base/R-3/R-3.5.3.tar.gz
tar -xvf R-3.5.3.tar.gz
cd R-3.5.3/
./configure prefix=/home/xiongdy/software/R/R-3.5.3
make
make install
echo 'PATH=$PATH:~/software/R/R-3.5.3/bin' >> ~/.bashrc
source ~/.bashrc

安装好R语言后安装一些分析的包

#从终端启动R
R
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
if (!requireNamespace("BiocManager"))
  install.packages("BiocManager")
#安装bioconductor包
BiocManager::install(c("DESeq2","limma","GenomicFeatures","NOISeq")))#从R源安装包
install.packages(c("ggplot2","WGCNA")
#退出
q()

另外也可以安装Rstudio,在服务器的网页端可以直接打开Rstudio
如果是在个人PC端的Ubuntu系统中安装R语言则

#在https://cran.r-project.org/bin/linux/ubuntu中复制最新版本的R地址deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
#在最后一行加入复制的地址deb https://cloud.r-project.org/bin/linux/ubuntu bionic-cran35/
sudo gedit /etc/apt/sources.list
#在https://cran.r-project.org/mirrors.html中选择中国的镜像
#选择https://mirrors/ustc.edu.cn/CRAN/
#将sources.list中的R地址修改为deb https://mirrors/ustc.edu.cn/CRAN/bin/linux/ubuntu bionic-cran35/
#保存,关闭
sudo apt-get update
#如果报错提示无密钥等信息则输入
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys E298A3A825C0D65DFD57CBB651716619E084DAB9sudo apt-get updatasudo apt-get install r-base

Python管理

         Linux系统一般也会自带Python,但是原装Python是2.7.x版本的,并没有3.x版本的。然而python2.x与3.x的语法也有不同,导致了目前基于python开发的软件分为了两大阵营,一类支持2.x,一类支持3.x,在生物信息领域使用的NGS数据分析软件中就有分属于两大阵营中的软件,例如宏基因组分析中常用的一个软件eggNOG支持python2.x,但是另外一个RSeQC软件支持3.x。与Perl不同的是,Linux支持存在多个版本的python,另外由于miniconda3在安装的时候会自动安装python3,而且miniconda3在安装以后会自动把python默认优先选择它自己的python3,所以当要使用到python2或者其他版本的python时就要选择切换python版本了。切换python版本的方法如下

python --version
Python 2.7.6
alias python='~/miniconda3/bin/python3.6.3'
python --version
Python 3.6.3

        这里还需额外注意的是最好把两个python对应的pip都设置好路径,因为当python版本切换时对应的pip是不会切换的,所以就需要为pip设置路径用于防止python切换后无法正常使用pip的问题,例如设置pip2是调用python2的pip,设置pip3是调用python3的pip。

总结

        R,Perl和Python同为生物信息分析中重要的语言,除了作为编程语言功能外还是很多软件支持的依赖。这里要注意的是:Linux系统自带了Perl和Python,但是Linux系统只能支持一个Perl的存在,对于其他如qiime类的软件需要用perl最好把这些软件安装在一个独立的虚拟环境中,对于python由于系统支持多个版本的python所以只需要知道如何快速切换python版本就行。对于R语言,由于大部分系统并不自带这个语言,所以只要选择一个合适的版本安装就行。

作者信息

熊东彦,中国科学院武汉病毒研究所在读研究生。擅长方向:转录组学,宏基因组学,R语言编程,Perl语言编程。近期推文:生物信息学分析实用小技巧