CentOS7下安装用户自己的perl模块

CentOS7系统默认设置下,每当用户登录时,会自动在其家目录下生成名为perl5的文件夹。该文件夹是用于安装用户自己的perl模块,以利于用户使用一些生物信息学软件对perl模块的需求。但是有一部分人觉得该文件夹比较打乱家目录的布局,可以采用以下两种方法来解决。

1. 关闭Perl模块local::lib功能

CentOS7系统下,每次登录用户,会运行配置文件/etc/profile.d/perl-homedir.sh,查看该内容,可以发现生成$HOME/perl5文件夹是执行了如下命令:

# perl -Mlocal::lib
    该命令是执行了Perl的local::lib模块,默认设置下,能自动生成$HOME/perl5文件夹,并设置好相关的perl5环境变量,优先使用用户本地的perl模块。

执行以下命令修改/etc/profile.d/perl-homedir.sh文件中的PERL_HOMEDIR值为0,则不会执行以上命令,从而不会自动生成$HOME/perl5文件夹,关闭Perl模块local::lib功能。

# perl -p -i -e 's/PERL_HOMEDIR=1/PERL_HOMEDIR=0/' /etc/profile.d/perl-homedir.sh

此外,也可以考虑删除掉perl-home软件包,相当于删除local::lib模块:

查找系统中的perl-home软件包的名字,并删除之
# rpm -qa | grep perl-home
# rpm -e perl-homedir-1.008010-4.el7.noarch

2. 改变Perl模块local::lib的默认路径

第一种方法关闭了Perl模块local::lib功能,导致没有root权限的人无法安装perl模块,会带来一些软件无法使用。推荐在第一种方法的基础上,再自行安装local::lib模块到用户家目录中指定的文件夹中。

下载local::lib模块并手动安装到家目录下的.perl5隐藏文件夹下:
$ wget https://cpan.metacpan.org/authors/id/H/HA/HAARG/local-lib-2.000024.tar.gz
$ tar zxf local-lib-2.000024.tar.gz
$ cd local-lib-2.000024/
$ perl Makefile.PL --bootstrap=$HOME/.perl5
    通--bootstrap参数将模块安装到指定的文件夹
$ make test && make install
$ cd .. && rm local-lib-2.000024 -rf

设置每次登录用户后,启用local::lib功能并识别$HOME/.perl5目录:
$ echo 'eval "$(perl -I$HOME/.perl5/lib/perl5 -Mlocal::lib=$HOME/.perl5)"' >> ~/.bashrc
    执行perl -Mlocal::lib=$HOME/.perl5命令能建立$HOME/.perl5文件夹并自动设置perl5的环境变量。
$ source ~/.bashrc
$ echo $PERL5LIB
    检查perl5的模块识别路径
$ cpan -i XML::Simple
    安装一个最常用的Perl5模块。

本方法将perl5的模块安装路径由perl5改变到了.perl5隐藏文件夹。其实没有太大意义,只是对完美主义的强迫症犯者有帮助而已。

生物信息学平台Galaxy的安装与使用

1. Galaxy初步安装

推荐使用root用户安装,首先下载软件
$ git clone https://github.com/galaxyproject/galaxy.git
$ cd galaxy
联网下载并安装一些依赖的软件和模块
$ sh run.sh
    安装完毕后,Galaxy开始运行。此时,Galaxy只能在本地机器上访问

若需要联网访问,则生成Galaxy的配置文件,并设置相关参数。
$ cp config/galaxy.yml.sample config/galaxy.yml
运行在其它机器上使用指定的IP地址通过8080端口访问Galaxy
$ perl -p -i -e 's/^(\s+)http:.*/${1}http: 122.205.95.116:8080/' config/galaxy.yml

此外,还需额外开启防火墙8080端口后,再次启动Galaxy
$ sh run.sh

使用BGI Online CLI下载华大基因释放的数据

1. 华大基因释放数据邮件信息

在华大基因测序完成后,释放数据的邮件信息示例:

XXX老师:

您好!

您该项目 XXXXX 数据已上传,请按照以下说明操作:

1. 下载GUI软件并解压,链接:https://pan.genomics.cn/ucdisk/s/AZjime
Windows64位系统(推荐使用):双击GUI-win\GUI-win-3.0目录下Windows批处理文件bgionline_gui.bat,打开登录界面

Windows32位系统:参考上述链接下的帮助文档

OS X和Linux系统:将当前路径移到解压文件夹,在命令行执行“sh bgionline.sh”登录界面

2. 输入账号、密码
账号:20190227F18FTSCCWLI4389
密码:WHFUNrdmE_20190227

2. 安装BGI Online CLI

若在windonws图形化界面中下载数据,则比较简单方便。若数据量较大,推荐使用Linux命令行下载数据,直接下载到服务器上。则需要安装BGI Online CLI软件:

安装软件
$ pip install bgionline
更新软件
$ pip install --upgrade bgionline 

3. 使用命令行方式下载数据

$ bo login
Logging into https://app.bgionline.cn:1001
Username: 20190227F18FTSCCWLI4389
Password: WHFUNrdmE_20190227
    输入邮件中的用户名和密码,即可生成相应的配置文件夹~/.bgionline/。
ou are now logged in. Your configurations are stored in /share/disk02_8T/home/chenlianfu/.bgionline/setting. 

Use bo select to choose your working project...

Available projects:

+-------+--------------------------------------+-------------------------+
| index | project id                           | project name            |
+-------+--------------------------------------+-------------------------+
|   0   | 3d7d64df-b0a6-439a-a443-fb73058f9925 | 20190227F18FTSCCWLJ4389 |
+-------+--------------------------------------+-------------------------+
Pick a numbered choice :0
    选择一个目标项目。
Setting current project to: 20190227F18FTSCCWLJ4389 

$ bo ls
F18FTSCCWLJ4389_FUNrdmD/
    可以列出选定项目中的文件信息
$ bo tree
/
└──F18FTSCCWLJ4389_FUNrdmD
   └──Upload_Delivery_F18FTSCCWLJ4389_FUNrdmD_PureSequence
        ├──BGI_result
        │    └──Separate

4 directories 
    以树形式列出选定项目中所有的文件夹层次信息

$ bo dowload / ./
    将项目中的所有文件夹下载到当前工作目录下。

使用wtdbg2利用三代数据进行基因组de novo组装

wtdbg2软件下载与安装

$ wget https://github.com/ruanjue/wtdbg2/archive/v2.2.tar.gz -O ~/software_packages/wtdbg-v2.2.tar.gz
$ tar zxf /share/disk02_8T/home/chenlianfu/software_packages/wtdbg-v2.2.tar.gz -C /opt/biosoft/
$ cd /opt/biosoft/wtdbg2-2.2/
$ make -j 4
$ echo 'PATH=$PATH:/opt/biosoft/wtdbg2-2.2' >> ~/.bashrc
$ source ~/.bashrc

wtdbg2软件使用

进行基因组装
$ wtdbg2 -t 16 -i reads.fa.gz -fo prefix -L 5000

得到一致性序列
$ wtpoa-cns -t 16 -i prefix.ctg.lay -fo prefix.ctg.lay.fa

利用三代reads的比对结果对基因组序列进行打磨修正
$ minimap2 -t 16 -x map-pb -a prefix.ctg.lay.fa reads.fa.gz | samtools view -Sb - >prefix.ctg.lay.map.bam
$ samtools sort prefix.ctg.lay.map.bam prefix.ctg.lay.map.srt
$ samtools view prefix.ctg.lay.map.srt.bam | ./wtpoa-cns -t 16 -d prefix.ctg.lay.fa -i - -fo prefix.ctg.lay.2nd.fa

Linux系统下使用MegaCli软件对磁盘阵列进行操作

若管理的服务器比较多,服务器的硬盘经常会坏掉。可以使用megacli命令来查看磁盘阵列中的磁盘是否损坏。

1. CentOS6系统下安装MegaCli软件

在一些rpm网站中搜索megacli。然后下载megacli的rpm包进行安装:

# wget http://rpmfind.net/linux/Mandriva/devel/cooker/x86_64/media/non-free/release/megacli-8.02.21-1-mdv2012.0.x86_64.rpm
# rpm -ivh megacli-8.02.21-1-mdv2012.0.x86_64.rpm

megacli的使用需要依赖libsysfs库文件
# yum install libsysfs
# ln -s /usr/lib64/libsysfs.so.2.0.1 /usr/lib64/libsysfs.so.2.0.2

2. 使用megacli命令查看磁盘

# megacli -PDList -aALL 
此命令可以查看所有物理磁盘的信息。
若Media Error Count和Other Error Count的值大于0,则表示磁盘可能坏掉了。

# megacli -LDInfo -LALL -aAll 
此命令查看所有逻辑磁盘的信息。

使用高版本SMRT Analysis软件对Pacbio reads进行基因组De novo组装

1. SMRT Analysis简介

SMRT Analysis软件是由Pacbio Science公司开发的软件,现在是SMRT Link软件的一部分,用于对Pacbio Long Reads数据进行分析。其2.3版本仅能用于对Pacbio RSII测序仪获得的h5格式测序数据进行,该版本持续了较长一段时间。后来Pacbio测序仪增添Sequel平台后,SMRT Analysis软件更新到3.0,增加支持对Pacbio Sequel测序仪获得的bam格式数据进行分析。现在(2018.09.02)最新版本的SMRT Analysis到了5.1版本。

2. 下载并安装SMRT Link软件

将SMRT Link安装到CentOS 6.9系统中。安装软件前需要做一些准备:

首先,确定主机名是localhost并指向127.0.0.1的IP地址。刚安装完毕的系统一般都满足此要求。
保证/etc/hosts文件中含有以下一行信息:
127.0.0.1    localhost

其次,修改/etc/security/limits.conf文件,尾部增添如下4行:
chenlianfu      soft    nproc   10240
chenlianfu      hard    nproc   102400
chenlianfu      soft    nofile  10240   
chenlianfu      hard    nofile  102400
注意chenlianfu是安装SMRT Analysis软件所使用的用户的用户名。
该步骤用于增加chenlianfu用户的权限,这是与SMRT软件较高的资源消耗和较多的并行化相关的。
此外,注意此步骤过后,从新登陆

然后,修改/etc/sysconfig/iptables文件,增加5432(PostGresql数据库需要)、9090和8243(软件网页端使用tomcat提供服务时需要9090和8423)端口。在该文件中正确的位置增加如下两行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9090 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8243 -j ACCEPT
然后重启防火墙,让修改生效:
# /etc/init.d/iptables restart

最后,启动PostGresql数据库。
# /etc/init.d/postgresql initdb
# /etc/init.d/postgresql start
# chkconfig postgresql on

从Pacbio Science官网下载SMRT Link软件

将SMRT Link安装到 ~/biosoft 目录下
$ mkdir ~/biosoft
$ cd ~/biosoft
$ wget https://downloads.pacbcloud.com/public/software/installers/smrtlink_5.1.0.26412.zip
$ unzip smrtlink_5.1.0.26412.zip
    要求输入密码,可以从下载该软件的网页中找到。
$ ./smrtlink_5.1.0.26412.run
    根据提示一步一步进行配置,基本都是直接使用默认值,按Enter键即可。
    设置软件临时文件夹的时候,要选择一个较大分区所对应的目录。我将其设置为/home/chenlianfu/biosoft/tmp/smrtlink
$ /home/chenlianfu/biosoft/smrtlink/admin/bin/services-start
    启动SMRT Link软件。

3. 使用HGAP4进行基因组De novo组装

1. SMRT Link软件必须要在Chrome浏览器中打开。在Chrome浏览器中输入安装有SMRT Link软件机器的IP地址,并接:9090,例如:192.168.30.1:9090,就可以连接到软件的用户登陆界面,输入用户名admin,密码admin则会进入软件。

2. 点击Data Management,再点击VIEW OR IMPORT SEQUENCE DATA,点击IMPORT并从下拉菜单中点击Sequel Sequence Data,从弹出的浏览设置中选择路径/home/chenlianfu/biosoft/smrtlink/install/smrtlink-release_5.1.0.26412/bundles/smrtinub/install/smrtinub-release_5.1.0.25847/private/pacbio/canneddata/lambdaTINY/m150404_101626_42267_c100807920800000001823174110291514_s1_p0.subreadset.xml,点击IMPORT,运行一段时间后,导入数据成功。

3. 返回到软件主界面,点击SMRT Analysis,点击CREATE NEW ANALYSIS,在Analysis Application下拉菜单中选择Assembly(HGAP 4),Analysis Name栏随便填写字符串Lambda_HGAP4,在Genome Length栏将基因组大小修改为58000,在Data Sets中勾选lambda/007_tiny,最后点击START,开始程序运行。

4. 值得注意的是公司给的测序数据文件夹中常常不包含sts.xml、adapters.fasta和scraps bam等文件,而在总的xml文件中却包含了这些信息,需要将其对应的行(第7行到第15行)删除掉后再运行HGAP4,否则程序运行会失败。

5. 程序运行结果在/home/chenlianfu/biosoft/smrtlink/userdata/jobs_root/目录下的一个数字编号(按运行顺序从000001开始编号)的文件夹中。该文件夹中的的主要结果文件(也可以在网页中下载):
./tasks/pbcoretools.tasks.contigset2fasta-0/file.fasta 最终的基因组组装结果。
./tasks/pbcoretools.tasks.gather_fasta-1/file.fasta 按某个长度

使用TeamViewer突破内网封锁远程连接服务器

1. TeamViewer作用

经常由于学校对端口的封锁,在校外难以使用OpenSSH连接学校内网的服务器。这个时候,可以在学校内网的服务器上开启图形化界面运行TeamViewer软件,同时在外网的笔记本电脑上同时运行TeamViewer软件。在两个软件上输入相同的用户名和密码,则可以通过该软件连接学校内网的服务器桌面,从而对内网服务器进行操作。

2. 内网服务器上安装TeamViewer软件

我的服务器系统是CentOS 6.9 64位系统,在TeamViewer网站上下载Linux 64位版本的TeamViewer软件。目前最新是V13版本的TeamViewer,貌似支持CentOS7。对于CentOS 6则下载V12版本的TeamViewer

# wget https://dl.tvcdn.de/download/version_12x/teamviewer_12.0.93330.i686.rpm
# yum install teamviewer_13.2.13582.x86_64.rpm

然后再内网服务器进入图形化桌面,在桌面上的各种菜单中寻找TeamViewer图标启动软件,输入用户名和密码登陆软件软件或记录其ID和密码。

3. 外网笔记本电脑上TeamViewer软件安装和使用

在TeamViewer官网下载windows系统的软件安装并运行。登陆用户名和密码进入软件控制远程服务器,或输入ID和密码来控制远程服务器。

使用ossutil命令下载诺禾致源释放的数据

1. 诺禾致源释放数据的内容

在诺禾致源释放数据的邮件中,可以找到如下示例内容:

AccessKeyId: LTAI2SeW6yzC54B2
AccessKeySecret: XTpXkjeqATP29sft8YE30ueN6UafCX 
预设OSS路径: oss://novo-data-nj/customer-Cbd6p59N/ 
区域: 华东1(杭州)

2. 在CentOS系统上安装ossutil软件

$ wget  wget http://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/50452/cn_zh/1524643963683/ossutil64 -O ~/bin/ossutil
$ chmod 755 ~/bin/ossutil

3. 使用ossutil下载数据

先配置用户名和密码。可以在邮件中找到ID和Key。
$ ossutil config -e oss://novo-data-nj/customer-Cbd6p59N/ -i LTAI2SeW6yzC54B2 -k XTpXkjeqATP29sft8YE30ueN6UafCX
再下载数据到当前目录。可以在邮件中找到数据文件路径。
$ ossutil cp -r -f --jobs 3 --parallel 2 oss://novo-data-nj/customer-Cbd6p59N/ ./
    -r 表示复制目录;-f表示强制覆盖已有的文件结果;--jobs 3 表示从3个位置下载同一个文件;--parallel 2 表示同时下载2个文件。

启用windows10的linux子系统

1. 首先,在windows10中启用开发者模式。按windows+x键,打开系统管理菜单;点击应用和功能,再点击主页;点击更新和安全,再点击开发者选项,勾选开发人员模式。在联网情况下,系统会安装高级开发功能。

2. 然后,启用windows10的linux子系统。按windows+x键,打开系统管理菜单,点击页面右边的程序和功能;在弹出的页面中点击启用和关闭windows功能,在继续弹出的页面中勾选适用于Linux的Windows子系统,点击确定,并重启windows10系统。

3. 最后,按windows键,点击并打开应用商店;在搜索栏搜索linux,然后选择一个喜欢的linux发行版本,比如debian或ubuntu等,进行下载和安装。

4. 我选择了debian进行下载和安装,最后,提示输入用户名和密码。该用户自动是超级管理员用户,可以使用sudo su -命令切换到root用户。

5. 使用windows系统下的linux子系统,相比于使用linux虚拟机更加方便,更少消耗内存。

6. window10下的debian子系统是最小安装的系统,很多软件无法使用。需要先对apt源进行修改后再安装软件。对/etc/apt/sources.list文件内容进行修改,将内容修改成如下内容(163源):

deb http://mirrors.163.com/debian/ jessie main non-free contrib
deb http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-updates main non-free contrib
deb-src http://mirrors.163.com/debian/ jessie-backports main non-free contrib
deb http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib
deb-src http://mirrors.163.com/debian-security/ jessie/updates main non-free contrib

再安装软件:

# apt-get update
# apt-get install openssh-client
# apt-get install openssh-server

# apt-get remove vim-common
# apt-get install vim

使用github进行项目开发与程序维护

1. github简介

我对GitHub不甚了解。现在很多生物信息学软件的Paper中都提供了软件的Github网址。

个人理解,GitHub能很方便用于开源软件的存储和代码维护。软件开发人员在Github网站注册一个账户后,相当于在Github服务器上有了账户和密码;开发某个项目的软件后,可以将软件源代码通过该账号和密码上传到Github服务器上;每次软件维护和代码上传,都会详细记录更新的内容;其它人可以将代码下载,并进行修改,形成软件的分支。

2. 在Github软件上注册用户

Github注册页面注册一个账户,Username: train-chenlianfu;Email address:910432211@qq.com;Password: train123456;再点击Create an account,完成注册。

3. 安装git软件

在CentOS系统上,虽然自带git软件,但是推荐使用高版本git,否则可能版本过低,导致不能兼容https而不能使用。

下载并安装最新版本git软件:

$ wget https://github.com/git/git/archive/v2.17.0.tar.gz -O git-v2.17.0.tar.gz
$ tar zxf git-v2.17.0.tar.gz 
$ cd git-2.17.0/
$ make configure
$ ./configure --prefix=/opt/sysoft/git-2.17.0
$ make -j 24
$ make install
$ echo 'PATH=/opt/sysoft/git-2.17.0/bin/:$PATH' >> ~/.bashrc
$ source ~/.bashrc
$ cd .. && rm -rf git-2.17.0

4. 在GitHub创建一个项目

新注册账号会弹出需要验证邮箱地址的信息,在邮箱收件箱中点击链接,进入GitHub主页;

点击GitHub主页右上角的加号“+”,弹出一个菜单,点击New repository;

在Repository name栏输入一个软件名称,例如:blast_tools;

再勾选Initialize this repository with a README,表示给本项目直接生成一个文件README.md;

在Add a license下拉菜单中选择GNU General Public License v3.0,表示本项目是开源项目,软件中自动增加一个文件LICENSE;

点击Create repository,创建项目。

5. 使用git管理代码的上传和更新

从GitHub上下载blast_tools软件:

$ git clone https://github.com/train-chenlianfu/blast_tools.git
$ cd blast_tools/
$ ls
LICENSE  README.md

在当前工作目录下生成文件夹blast_tools,该文件夹中包含两个文件:LICENSE和README.md。
其中README.md中仅包含一行内容:“# blast_tools”;该文件内容能直接显示在GitHub网站的本项目主页上;#号表示该行使用加粗加黑加大字体显示。

其实,在当前文件夹下,还存在一个隐藏文件夹.git,该文件夹

在blast_tools/文件夹中写软件代码,例如编写了perl程序blast.pl,并修改了README.md文件内容。

点击GitHub主页最右上角的用户图标,在下拉菜单中选择Settings,进入用户设置;在左边一栏中点击SSH and GPG keys;再点击New SSH key;在Title一栏中随意输入字符train_ssh;再在Key一栏中输入OpenSSH的公钥(点击进入本博客OpenSSH公钥生成方法的介绍文章);最后点击Add SSH key;添加公钥后,则可以将本地的软件代码通过git命令同步到GitHub网址上。

将本地修改或增加的文件上传到GitHub上:

$ git config user.email "910432211@qq.com"
$ git config user.name "train-chenlianfu"
  以上两行命令设置该项目对应的GitHub项目的用户名和邮箱地址,用于修改.git/config配置文件内容。

$ git add *
  对当前工作目录中的所有文件提出更改。当然git add命令后可以接指定的多个文件或文件夹。

$ git rm -r files
  删除文件或文件夹。若直接使用系统的rm命令,则仅删除本地的。使用git rm命令则可以删除githhub上的文件。

$ git commit -m "first submit"
  提交本次改动,本次改动的所有文件,在GitHub中全部被批注成"first submmit"。
  程序会自动检测有有多少个文件有改动,插入多少字符,删除多少字符等。这些改动信息会存于本地.git文件夹中。

$ git push origin master
  将改动信息和文件推送到origin(GitHub项目)的master分支(一个项目可能有多个分支,此处将本地改动推送到主分支)上。可能会弹出界面需要输入用户名和密码。
  origin是一个远程项目,在.git/config配置文件中有定义origin指向了GitHub的网址https://github.com/train-chenlianfu/blast_tools.git。 

先写到这儿,后续分支什么的还没怎么理解。以后需要的时候再了解。