第二讲:如何有效的管理自己的生信软件

2.1 软件的安装与管理

安装生信软件是非常让人头疼的一件事。在我读PhD期间,它占据了我大约1/5的时间。这一讲,我将给大家介绍如何快速安装和管理自己的生信软件。

2.1.1 软件安装

生信学习中有很多的软件。大部分都需要安装附加软件(dependencies)。由于大家电脑或者服务器的设置不同,快速而有效的软件安装通常比较困难。下面我给大家介绍两个常用的工具:brewconda (对于docker这里我不在具体讲述,感兴趣的同学可以自行网上搜索教程)。

2.1.1.1 如何使用brew

brew 主要提供了两个版本,在Linux系统上它以linuxbrew呈现,在MacOS系统上它以homebrew呈现。这里我以linuxbrew为例给大家展示如何使用brew

下载linuxbrew

$ git clone https://github.com/Linuxbrew/brew.git ~/.linuxbrew (## 可以根据自己的喜好更改安装路径,这里我选择的是$HOME)

.bashrc里设置linuxbrew的路径 (根据自己的喜好适当调整路径设置)

PATH="$HOME/.linuxbrew/bin:$PATH"
export MANPATH="$(brew --prefix)/share/man:$MANPATH"
export INFOPATH="$(brew --prefix)/share/info:$INFOPATH"

对于不熟悉.bashrc的同学,可以参考我的第一讲.

常用的brew语句

$ brew search   ## 查找所需的软件
$ brew install/uninstall  ##安装/卸载所需的软件
$ brew link/unlink  ##对于特定版本的软件进行关联/解除关联
$ brew cleanup ## 清理缓存

2.1.2 如何使用conda

bioconda中提供了很多生信使用的工具,依托anaconda或者miniconda,人们可以很方便的安装自己想要的工具。在安装自己喜欢的工具之前,同学们可以登录

https://bioconda.github.io/recipes.html

去查询自己所需的软件是否被bioconda收录。

对于conda的安装, 如果喜欢anaconda (内置了很多软件,如果空间充足可以选择这个),同学们可以登录

https://www.anaconda.com/download

去下载自己所需的版本。

如果喜欢miniconda(anaconda的简化版),同学们可以登录

https://conda.io/miniconda.html

去下载自己喜欢的版本。

Note:anaconda/miniconda主要有两个不同的版本,一个是预先安装了python2,另一个是预先安装了python3。 请根据自己喜好自由选择。

设置conda

$ conda config --add channels defaults
$ conda config --add channels conda-forge
$ conda config --add channels bioconda

conda安装软件

$ conda install -m 

2.2 不同版本软件的管理

对于大部分的服务器,大家都喜欢用module去管理软件。两种常用的管理系统是ModulesLmodLmod对于Modules的设置是完全兼容的。反之则不那么友善。

  1. 如果大家的服务器上已经装了module,大家可以通过对自己.bashrc的设置来实现对自己软件的管理:
$ export MODULEPATH=/full/path/to/your/modulefiles:$MODULEPATH

或者用:

$ module use /full/path/to/your/modulefiles

在这之前,大家需要建立一个modulefiles folder

$ mkdir -p /path/to/your/modulefiles

下面我以samtools为例给大家介绍如何设置module。首先建立一个samtools folder

$ mkdir -p /full/path/to/your/modulefiles/samtools

然后进入samtoolsfolder

$ cd /full/path/to/your/modulefiles/samtools

在该folder里建立一个文本,例如1.8。 具体内容如下:

#%Module######################################################################
#
# samtools modulefile
#
proc ModulesHelp { } {
    puts stderr "Sets up the paths you need to use samtools version 1.8"
}
set sys     [uname sysname]
set version samtools ##设置工具的名字
set tool    1.8 ##设置版本号
if { [is-loaded $tool] && ! [is-loaded $tool/$version] } {
    module unload $tool
}

module load htslib/1.8 ##这里可以load所需的附加软件

prepend-path PATH /Users/yyuan/Tools/samtools-1.8/bin ##设置软件的路径
prepend-path BAM_ROOT /Users/yyuan/Tools/samtools-1.8 ## 设置bam library
prepend-path LD_LIBRARY_PATH /Users/yyuan/Tools/samtools-1.8/lib ##设置library 
prepend-path MANPATH /Users/yyuan/Tools/samtools-1.8/share/man ##设置manual

设置完成后大家可以进行如下操作

$ source ~/.bashrc ##这里也可以重新登录自己的服务器
$ module show samtools/1.8

去查看自己的设置是否成功。

  1. 如果自己的系统中没有安装module,那该怎么办呢?下面我给大家介绍如何安装Modules(这里最好要有root权限)。

下载modules

$ wget http://downloads.sourceforge.net/project/modules/Modules/modules-4.2.1/modules-4.2.1.tar.gz

解压modules

$ tar -xvzf modules-4.2.1.tar.gz

安装modules(这里需要root权限,如果没有root权限,可以修改设置,这里我不在讲解怎么修改)

$ cd modules-4.2.1
$ ./configure
$ make
$ make install

设置modulepath

$ vim /usr/local/Modules/init/modulerc (# modify "module use --append /full/path/to/your/modulefiles")

.bashrc中设置module

case "$0" in
          -sh|sh|*/sh)  modules_shell=sh ;;
       -ksh|ksh|*/ksh)  modules_shell=ksh ;;
       -zsh|zsh|*/zsh)  modules_shell=zsh ;;
    -bash|bash|*/bash)  modules_shell=bash ;;
esac
module() { eval `/usr/bin/tclsh /usr/local/Modules/libexec/modulecmd.tcl $modules_shell $*`; }
# ~/.bashrc: executed by bash(1) for non-login shells.
# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)
# for examples

# If not running interactively, don't do anything
case $- in
    *i*) ;;
      *) return;;
esac

source /usr/local/Modules/init/modulerc
source /usr/local/Modules/init/profile.sh

完成以上设置后,大家可以

$ source ~/.bashrc ##这里也可以重新登录自己的服务器
$ module -h

去查看自己的设置是否成功。

对于Lmod的设置,稍许有些复杂,感兴趣的同学可以到:

https://sourceforge.net/projects/lmod/files

进行下载。

具有的安装步骤可以参考:

https://lmod.readthedocs.io/en/latest

Lmod文件的设置不同于modules, 通常它以.lua为后缀。模板如下tmp.lua

help("Sets up the paths you need to use  version ")
local version = ''
local tool = ''
whatis( [[]] )
whatis( [[Compiled with gcc/xxxx]] )
conflict("xxxxx")

if (mode() == "load") then
  if (isloaded("") ~= true) then
    load("")
  end
end
if (mode() ~= "whatis") then
prepend_path("PATH","/path/to/your/tool")
end

希望大家相互学习,多批评指正!

版权所有者 Andy. Twitter: @Yuxuan_Yuan; Wechat: yyx8671;微信公众号:生信人生

你可能感兴趣的:(第二讲:如何有效的管理自己的生信软件)