使用 HMMER 进行 PFAM 注释

1. HMMER 简介

HMMER 和 BLAST 类似,主要用于序列比对。

2. HMMER 与 PFAM 的下载安装

安装 HMMER
$ wget ftp://selab.janelia.org/pub/software/hmmer3/3.1b2/hmmer-3.1b2.tar.gz
$ tar zxf hmmer-3.1b2.tar.gz
$ cd hmmer-3.1b2
$ ./configure --prefix=/opt/biosoft/hmmer-3.1b2 && make -j 8 && make install
$ echo 'PATH=$PATH:/opt/biosoft/hmmer-3.1b2/bin/' >> ~/.bashrc
$ source ~/.bashrc
下载 HMMER 软件说明文档
$ wget ftp://selab.janelia.org/pub/software/hmmer3/3.1b2/Userguide.pdf -P  /opt/biosoft/hmmer-3.1b2/

下载 PFAM 数据库
$ cd /opt/biosoft/hmmer-3.1b2/
$ wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/releases/Pfam27.0/Pfam-A.hmm.gz
$ wget ftp://ftp.ebi.ac.uk/pub/databases/Pfam/releases/Pfam27.0/Pfam-B.hmm.gz
$ gzip -d Pfam-A.hmm.gz; gzip -d Pfam-B.hmm.gz
得到 PFAM 数据库的 HMM 文件。 HMM 文件是文本文件,需要将其变成二进制格式,以加快运算速度,同时进行压缩,并建立成索引数据库。
$ hmmpress Pfam-A.hmm
$ hmmpress Pfam-B.hmm

3. 使用 hmmscan 进行 Pfam 注释

Pfam 数据库中每个编号代表一个蛋白质家族。Pfam 分 A 和 B 两个数据库,其中 A 数据库是经过手工校正的高质量数据库, B 数据库虽然质量低些,依然可以用来寻找蛋白质家族的保守位点。Pfam 最新 v27.0 版本的数据库中, A 数据库包含 14,836 个蛋白质家族编号(以 PF 开头); B 数据库包含 20,000 个蛋白质家族编号 (以 PB 开头)。
使用 hmmscan 进行 Pfam 注释示例:

$ /opt/biosoft/hmmer-3.1b2/bin/hmmscan -o out.txt --tblout out.tbl --noali -E 1e-5 /opt/biosoft/hmmer-3.1b2/Pfam-A.hmm file.fasta

生成结果文件 out.txt 和 out.tbl
out.txt 文件信息比较全面,但是不好阅读;
out.tbl 文件则是表格形式的结果,是一般需要的结果。

hmmscan 命令的常用参数:

$ hmmscan [-options]  

-h
    显示帮助信息
-o FILE
    将结果输出到指定的文件中。默认是输出到标准输出。
--tblout FILE
    将蛋白质家族的结果以表格形式输出到指定的文件中。默认不输出该文件。
--domtblout FILE
    将蛋白结构域的比对结果以表格形式输出到指定的文件中。默认不输出该文件。该表格中包含query序列起始结束位点与目标序列起始结束位点的匹配信息。
--acc
    在输出结果中包含 PF 的编号,默认是蛋白质家族的名称。
--noali
    在输出结果中不包含比对信息。输出文件的大小则会更小。
-E FLOAT    default:10.0
    设定 E_value 阈值,推荐设置为 1e-5 。
-T FLOAT
    设定 Score 阈值。
--domE FLOAT    default:10.0
    设定 E_value 阈值。该参数和 -E 参数类似,不过是 domain 比对设定的值。
--cpu
    多线程运行的CPU。默认应该是大于1的,表示支持多线程运行。但其实估计一般一个hmmscan程序利用150%个CPU。并且若进行并行化调用hmmscan,当并行数高于4的时候,会报错:Fatal exception (source file esl_threads.c, line 129)。这时,设置--cpu的值为1即可。

SSH 隧道

1. 反向隧道

学校关闭了对服务器所有外端口的访问。于是要想在校外登录实验室的服务器,则需要有一台有固定 IP 的外网机器。实验室的服务器能连接上该外网机器,同时来开启一个 ssh 反向隧道,以供外网机器连接到实验室服务器。于是本地机器可以先连接到外网机器,再连接到实验室服务器。
实验室的服务器不需要有固定的 IP,有个用户名为 chenlianfu ;外网服务器的 IP 为 123.123.123.123 ;外网服务器的用户名为 waiwang。

在内网服务器上输入命令,建立一个和外网机器的 ssh 隧道,来保证外网机器能和内网机器进行连接
$ autossh -M 4321 -N -f -R 2222:localhost:22 waiwang@123.123.123.123
输入 123.123.123.123 机器 waiwang 用户的密码来构建反向通道。

-M 推荐加上此参数,可能好些,貌似是发送和接受测试数据用。
-N -f 这两个参数配合使用,让隧道在后台运行。
-R 构建反向隧道,将本地机器的 22 号端口映射成为远程服务器的 2222 端口。

此外,若使用 ssh 也可以运行上述命令,但是容易断掉反向隧道。

在 IP 为 123.123.123.123 的机器上则通过下面命令来连接内网机器:
$ ssh -p 2222 chenlianfu@localhost
输入内网机器 chenlianfu 用户的密码通过反向隧道来连接内网机器。
这时,只需要连接有固定 IP 的外网机器,即可再连接内网服务器。

PBJelly2利用Pacbio数据进行scaffolding

1.PBJelly2 简介

PBJelly2 用于利用 Pacbio 数据进行基因组补洞和 scaffold 连接。

2.安装 PBJelly2

安装 HDF:
$ wget http://www.hdfgroup.org/ftp/HDF5/current/bin/linux-centos6-x86_64/hdf5-1.8.15-patch1-linux-centos6-x86_64-shared.tar.gz
$ tar zxf hdf5-1.8.15-patch1-linux-centos6-x86_64-shared.tar.gz
$ mv hdf5-1.8.15-patch1-linux-centos6-x86_64-shared /opt/biosoft/hdf5-1.8.15-patch1
$ export HDF5INCLUDEDIR=/opt/biosoft/hdf5-1.8.15-patch1/include/
$ export HDF5LIBDIR=/opt/biosoft/hdf5-1.8.15-patch1/lib/
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/
$ export C_INCLUDE_PATH=$C_INCLUDE_PATH:/opt/biosoft/hdf5-1.8.15-patch1/include/

安装 Blasr(需求 HDF v1.8.0或以上版本):
$ wget https://github.com/PacificBiosciences/blasr/archive/master.zip -O blasr.zip
$ unzip blasr.zip
$ mv blasr-master/ /opt/biosoft/blasr
$ cd /opt/biosoft/blasr
$ make -j 8
$ echo 'PATH=$PATH:/opt/biosoft/blasr/alignment/bin/' >> ~/.bashrc

安装Python模块 Networkx v1.7
$ wget https://pypi.python.org/packages/source/n/networkx/networkx-1.7.tar.gz
$ tar zxf networkx-1.7.tar.gz
$ cd networkx-1.7
$ sudo /usr/local/bin/python setup.py install

安装Python模块 pyparsing
$ wget https://pypi.python.org/packages/source/p/pyparsing/pyparsing-2.0.3.tar.gz
$ tar zxf pyparsing-2.0.3.tar.gz
$ cd pyparsing-2.0.3
$ sudo /usr/local/bin/python setup.py install

安装Python模块 numpy
$ wget https://pypi.python.org/packages/source/n/numpy/numpy-1.9.2.tar.gz
$ tar zxf numpy-1.9.2.tar.gz 
$ cd numpy-1.9.2
$ sudo /usr/local/bin/python setup.py install

安装Python模块 h5py
$ wget https://pypi.python.org/packages/source/h/h5py/h5py-2.5.0.tar.gz
$ cd h5py-2.5.0
$ export LIBRARY_PATH=/opt/biosoft/hdf5-1.8.15-patch1/lib/:$LIBRARY_PATH
$ /usr/local/bin/python setup.py build
$ sudo /usr/local/bin/python setup.py install

安装Python模块 pysam
$ https://pypi.python.org/packages/source/p/pysam/pysam-0.8.3.tar.gz
$ tar zxf pysam-0.8.3.tar.gz 
$ cd pysam-0.8.3
$ sudo /usr/local/bin/python setup.py install

安装Python模块 intervaltree
$ wget https://pypi.python.org/packages/source/i/intervaltree/intervaltree-2.0.4.tar.gz
$ tar zxf intervaltree-2.0.4.tar.gz
$ cd intervaltree-2.0.4
$ sudo /usr/local/bin/python setup.py install

安装 PBJelly2
$ wget http://sourceforge.net/projects/pb-jelly/files/latest/download -O PBSuite.tar.gz
$ tar zxf PBSuite.tar.gz -C /opt/biosoft/
$ SWEETPATH=`ls /opt/biosoft/PBSuite* -d`
$ echo "perl -p -i -e 's#export SWEETPATH=.*#export SWEETPATH=$SWEETPATH#' $SWEETPATH/setup.sh" | sh
$ echo "source $SWEETPATH/setup.sh" >> ~/.bashrc

3. 使用 PBJelly2 进行补洞

首先创建配置文件 Protocol.xml,内容如下:

<jellyProtocol>
    <reference>基因组fasta文件的路径</reference>  
    <outputDir>输出文件路径</outputDir>
    <blasr>-minMatch 8 -minPctIdentity 70 -bestn 1 -nCandidates 20 -maxScore -500 -nproc 24 -noSplitSubreads</blasr>
    <input baseDir="输入Pacbio数据文件所在的文件夹">
        <job>Pacbio数据文件名称</job>
    </input>
</jellyProtocol>

然后依次运行下6步:

$ Jelly.py setup Protocol.xml
$ Jelly.py mapping Protocol.xml
$ Jelly.py support Protocol.xml
$ Jelly.py extraction Protocol.xml
$ Jelly.py assembly Protocol.xml -x "--nproc=24"
$ Jelly.py output Protocol.xml

--nproc 参数设置运行线程数。

输出结果文件为 jelly.out.fasta 。

4. 使用 PBJelly2 进行 scaffold 连接

使用rsync进行数据同步

1. rsync 命令作用

rsync 主要用于同步 2 台机器的文件。这里,同步的意思是:

1. 若目的端文件的源端的文件内容不一致,则使目的端文件和源端的文件内容一致。默认下,程序会比较两端文件的时间戳和大小,如果一致,则不会同步。
2. 默认下,若两端都有的文件,不会修改rwx权限和modify time。
3. 源端的路径必须有读权限,目的端必须有写权限,才能正常同步。

2. rsync 常用命令和参数

常用命令示例:
$ rsync -vrP -e 'ssh -p 22' SRC USER@HOST:DEST
可以使用 rsync 替代 scp。因为 scp 不能断点续传。

常用参数:
-v
    输出日志信息,-vvv (多个v)则会输出更多的信息。
-r
    递归,传输文件夹需要加此参数。
-P
    相当同时使用 --partial(断点续传) --progress(显示传输进度)这2个参数。
-e  default: ssh
    设置传输方式。如果ssh端口是 1234,则需要使用参数 -e 'ssh -p 1234' 。
--delete
    删除在目的端删存在而源端不存在的文件,配合 -r 使用。
-z
    使用gzip压缩后传输。
-t
    将源端文件的modify time同步过去。
-p
    将源端文件的rwx权限同步过去。
-I
    程序会比较文件内容是否一致来进行同步,速度慢。

使用PacBioToCA修正Pacbio数据

1. PacBioToCA 简介

PacBioToCA 是 Celera Assembler 的一个模块,用于Pacbio数据的校正。因此,使用 PacBioToCA 需要安装 Celera Assembler。
利用 PacBioToCA 进行校正时:如果 Pacbio 数据量 > 20x 时,可以进行自我校正,而不需要其它更为精确的数据;推荐 Pacbio 数据量 > 50x 时进行自我校正;通常 > 15x 的 Pacbio 数据即可得到很好的组装结果。

2. 安装 Celera Assembler

推荐使用源码安装,直接下载二进制版本,可能提示错误:/lib64/libc.so.6: version `GLIBC_2.14′ not found

$ wget http://sourceforge.net/projects/wgs-assembler/files/wgs-assembler/wgs-8.3/wgs-8.3rc2.tar.bz2
$ tar jxf wgs-8.3rc2.tar.bz2 -C /opt/biosoft/
$ cd /opt/biosoft/wgs-8.3rc2/kmer
以下使用 make,不要使用 -j 参数进行多线程编译,会出错。
$ make && make install && cd ..
$ cd src && make && cd ..
$ echo 'PATH=$PATH:/opt/biosoft/wgs-8.3rc2/Linux-amd64/bin/' >> ~/.bashrc

如果进行 Pacbio 数据的自我校正,则需要 JAVA 1.8 版本
$ wget http://javadl.sun.com/webapps/download/AutoDL?BundleId=106240 -O jre1.8.0_45.tar.gz
$ tar zxf jre1.8.0_45.tar.gz -C /opt/biosoft
$ echo 'PATH=/opt/biosoft/jre1.8.0_45/bin/:$PATH' >> ~/.bashrc
$ source ~/.bashrc

3. PacBioToCA 的使用

3.1 将错误率低的测序数据转换为 FRG 数据

Celera Assembler 软件输入的测序数据的文件格式是 FRG 格式。PacBioToCA 输入的错误率低的数据需要 FRG 格式。
1. 使用 fastqToCA 将 fastq 数据转换为 FRG 格式
一般情况下是利用错误率较低的 Illumina 数据来对 Pacbio 数据进行校正。 因此需要将 Illumina 的 Fastq 文件转换成 FRG 格式。 FRG 文件是文本文件,其中包含有 fastq 文件的路径和一些测序信息,比如插入片段长度、测序方向和碱基质量格式等。
fastqToCA 的常用示例和常用参数:

$ fastqToCA -insertsize 500 50 -libraryname pe500 -mates reads.1.fastq,reads.2.fastq > pe500.frg

-insertsize
    设置插入片段长度,为2个值,前者为插入片段长度,后者为标准差。
-libraryname
    文库的ID
-reads
    单端测序的 fastq 文件路径。
-mates
    双端测序的 fastq 文件路径。若双端数据交叉在一个文件中,则该参数后只有一个路径;若双端数据在2个fastq文件中,则2个路径用逗号分割。
-technology  default:illumina
    测序技术。可选的值有:none, sanger, 454, illumina(读长 < 160bp), illumina-long(任意读长), moleculo, pacbio-ccs, pacbio-corrected, pacbio-raw。
-type  default:sanger
    碱基质量格式。可选的值有:sanger, solexa, illumina。
-innie
    测序方向为 5'-3' <-> 3'-5',适合小片段测序文库。
-outtie
    测序方向为 3'-5' <-> 5'-3',适合大片段文库。

2. 使用 sffToCA 将 SFF 数据为 FRG 格式
Roche/454 数据格式为 SFF。
sffToCA 的常用示例和常用参数:

$ sffToCA  -libraryname LIB -output NAME IN.SFF ...

-insertsize
    设置插入片段长度,为2个值,前者为插入片段长度,后者为标准差。
-libraryname
    文库的ID。
-output
    输出文件的前缀。

3.2 使用 pacBioToCA/PBcR 进行 Pacbio 数据的修正

pacBioToCA 能对 Pacbio 数据进行校正,也能进行调用 runCA 进行基因组组装。
pacBioToCA 的输入文件为:

1. pacbio.spec   该文件包含一些参数信息,以 参数=值 表示。必须提供该文件,该文件内容为空,则全部使用默认参数。
2. pacbio.fastq  Pacbio测序的fastq文件,对该文件中的数据进行校正。
3. seq.frg        Illumina或454数据由 fatsqToCA 转换得到的 FRG 格式文件。如果不提供该文件,则进行自我校正。

pacBioToCA 的常用例子(示例数据)和参数:

$ pacBioToCA -libraryname out_prefix -s pacbio.spec -fastq pacbio.fastq seq1.frg seq2.frg

必须参数:
-libraryname STRING
    设定输出文件的前缀。
-s FILE
    从指定的参数文件获取额外的参数。若该文件内容为空,则使用默认的参数。
-fastq FILE
    输入需要校正的 Pacbio 数据。

可选参数:
-length INT    default:500
    pacBioToCA 对长度大于此值的测序 reads 进行修正。
-partitions INT    default:200
    将用于校正的数据分成指定份数,进行计算。内存不够,则需要增大该值。若内存足够,减小该值,可以减少计算时间。若该值太小(< 总线程数),软件会中途运行runCorrection.sh报错并停止运行。
-threads INT    default:max
    使用的线程数。默认为所有可用的线程数。
-shortReads
    如果用于辅助校准的序列长度都 <= 100bp,则使用该参数。
-genomeSize INT    default:0
    设置基因组大小。设置改值后,在其它默认条件下,如果校正后的数据量 >25x,则会进行基因组组装。不设置该值,可能等同于设置该值为 5000000 (从软件输出信息中查知)。
-maxCoverage INT    default:40
    默认下,最多校正 40x 的数据量。
-maxGap INT
    默认下,如果有一段 pacibo-read 区域没有 short-read 覆盖,则会打断 pacbio-read。此值设定所能允许的没有 short-read 覆盖的最大长度。当然,若此段区域没有其它 pacbio-reads 重叠,则也会进行打断。

此外,在 pacbio.spec 文件中常设置的参数为:

若不进行基因,则需要设置:
assemble=0

软件默认设置最大内存使用量设置为系统最大可使用的内存量,若设定最大使用内存为 64G,则设置:
ovlMemory=64

使用 CA 8 版本对大基因组(>100Mbp)进行校正,设置:
maxGap=1500
ovlHashBlockLength=1000000000
ovlRefBlockLength=1000000000
使用Illumina数据进行校正:
blasr=-noRefineAlign -advanceHalf -noSplitSubreads -minMatch 10 -minPctIdentity 70 -bestn 24 -nCandidates 24
自我校正:
blasr=-minReadLength 200 -maxScore -1000 -maxLCPLength 16 -bestn 24 -nCandidates 24
ovlThreads=16
下面一个参数设置并行数。其值推荐设置为 总线程数 / ovlThreads值 。设置为2,表示每个 blasr 程序运行消耗 16 线程,并行运行 2 个 blasr 程序。
ovlConcurrency=2

若进行基因组组装。默认参数适用于单倍体数据或近亲杂交数据。对于大基因组或双倍体基因组,则需要设置:
asmUtgErrorRate=0.10
asmCnsErrorRate=0.10
asmCgwErrorRate=0.10
asmOBT=1
asmObtErrorRate=0.08
asmObtErrorLimit=4.5
utgGraphErrorRate=0.05
utgMergeErrorRate=0.05
ovlHashBits=24
ovlHashLoad=0.80

linux下测试磁盘的读写IO速度

转载于:http://blog.chinaunix.net/uid-24250828-id-3239100.html

有时候我们在做维护的时候,总会遇到类似于IO特别高,但不能判定是IO瓶颈还是软件参数设置不当导致热盘的问题.这时候通常希望能知道磁盘的读写速度,来进行下一步的决策.

下面是两种测试方法:
(1)使用hdparm命令
这是一个是用来获取ATA/IDE硬盘的参数的命令,是由早期Linux IDE驱动的开发和维护人员 Mark Lord开发编写的( hdparm has been written by Mark Lord , the primary developer and maintainer of the (E)IDE driver for Linux, with suggestions from many netfolk).该命令应该也是仅用于Linux系统,对于UNIX系统,ATA/IDE硬盘用的可能比较少,一般大型的系统都是使用磁盘阵列的.

使用方法很简单
# hdparm -Tt /dev/sda

/dev/sda:
Timing cached reads: 6676 MB in 2.00 seconds = 3340.18 MB/sec
Timing buffered disk reads: 218 MB in 3.11 seconds = 70.11 MB/sec

可以看到,2秒钟读取了6676MB的缓存,约合3340.18 MB/sec;
在3.11秒中读取了218MB磁盘(物理读),读取速度约合70.11 MB/sec

(2)使用dd命令
这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.
另外由于这是一个免费软件,基本上×NIX系统上都有安装,对于Oracle裸设备的复制迁移,dd工具一般都是首选.

在使用前首先了解两个特殊设备
/dev/null 伪设备,回收站.写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO

测试方法:
a.测试磁盘的IO写速度
# time dd if=/dev/zero of=/test.dbf bs=8k count=300000
300000+0 records in
300000+0 records out
10.59s real 0.43s user 9.40s system
# du -sm /test.dbf
2347 /test.dbf

可以看到,在10.59秒的时间里,生成2347M的一个文件,IO写的速度约为221.6MB/sec;
当然这个速度可以多测试几遍取一个平均值,符合概率统计.

b.测试磁盘的IO读速度
# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/mapper/VolGroup00-LogVol00
19214 9545 8693 53% /
/dev/sda1 99 13 82 14% /boot
none 506 0 506 0% /dev/shm

# time dd if=/dev/mapper/VolGroup00-LogVol00 of=/dev/null bs=8k
2498560+0 records in
2498560+0 records out
247.99s real 1.92s user 48.64s system

上面的试验在247.99秒的时间里读取了19214MB的文件,计算下来平均速度为77.48MB/sec

c.测试IO同时读和写的速度
# time dd if=/dev/sda1 of=test.dbf bs=8k
13048+1 records in
13048+1 records out
3.73s real 0.04s user 2.39s system
# du -sm test.dbf
103 test.dbf

上面测试的数据量比较小,仅作为参考.

相比两种方法:
前者是linux上专业的测试IDE/ATA磁盘的工具,但是使用范围有局限性;(此试验仅仅使用了测试磁盘IO的参数,对于其他参数及解释参考man手册)
后者可以通用,但不够专业,也没有考虑到缓存和物理读的区分,测试的数据也是仅作参考,不能算是权威.

/usr/bin/ld: cannot find -lxxx 的解决办法

在软件编译过程中,经常会碰到类似这样的编译错误:

/usr/bin/ld: cannot find -lhdf5

这表示找不到库文件 libhdf5.so,若是其它库文件,则是 cannot find -lxxx 了,其中 xxx 是库文件的名字。

解决方法有:

1. 安装此库文件和相关软件

一般库文件属于某个软件,google搜索该软件并安装,或者使用 yum 安装。

2. 将库文件所在路径添加到gcc的搜索路径

使用以下命令查询gcc能否搜寻到指定的库文件:

$ gcc -lhdf5 --verbose

查询库文件 libhdf5.so 是否能在搜索路径中找到。

若安装了软件,找到了库文件的路径。但是依然会提示上述错误。则表示gcc的搜索路径不包含该库文件所在的路径。将库文件所在的路径加入到搜寻路径中的方法为:

2.1 使用 /etc/ld.so.conf 配置文件

将库文件所在的路径加入到 /etc/ld.so.conf 尾部,并使之生效:

$ sudo echo '/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> /etc/ld.so.conf
libhdf5.so 在路径 /opt/biosoft/hdf5-1.8.15-patch1/lib/ 下,将该路径加添加到配置文件中
$ sudo ldconfig
运行该命令,重新载入 /ext/ld.so.conf 中的路径,使修改生效。

2.2 修改环境变量

$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/
修改环境变量 LD_LIBRARY_PATH,加入库文件所在路径。使用 export 命令使修改生效。

$ echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/biosoft/hdf5-1.8.15-patch1/lib/' >> ~/.bashrc
$ source ~/.bashrc
将上述 export 命令加入到配置文件 ~/.bashrc,使之永久生效。

$ export LIBRARY_PATH=/opt/biosoft/hdf5-1.8.15-patch1/lib/:$LIBRARY_PATH
若修改变量 LD_LIBRARY_PATH 不奏效,则修改变量 LIBRARY_PATH 。

DISCOVAR的使用

1. DISCOVAR简介

DISCOVAR 是有 ALLPATHS-LG 软件开发团队做出来的软件。主要用于利用 PE 250bp 数据与参考基因组的比对结果,对基因组进行 Variants calling 的同时,进行基因组的组装。特别是近期公布的 DISCOVAR de novo (experimental) 还能进行基因组的 De novo 组装。

2. DISCOVAR的下载和安装

2.1 DISCOVAR的下载和安装

此软件的安装需要GCC 4.7或以上版本。

$ wget ftp://ftp.broadinstitute.org/pub/crd/Discovar/latest_source_code/LATEST_VERSION.tar.gz
$ tar zxf LATEST_VERSION.tar.gz
$ cd discov*
$ ./configure --prefix=/opt/biosoft/discovar && make -j 4 && make install
$ cd ..
$ rm -rf discov* LATEST_VERSION.tar.gz

2.2 DISCOVAR Denovo的下载和安装

此软件的安装需要GCC 4.7或以上版本,jemalloc 3.6.0或以上版本和samtools(如果使用bam文件,则需要)。

$ wget ftp://ftp.broadinstitute.org/pub/crd/DiscovarExp/LATEST_VERSION.tar.gz
$ tar zxf LATEST_VERSION.tar.gz
$ cd discov*
$ sudo yum install *malloc*
如果没有上一步,则在make过程中会提示错误“/usr/bin/ld: cannot find -ljemalloc”
$ ./configure --prefix=/opt/biosoft/discovarDenovo && make -j 4 && make install
$ echo 'export MALLOC_PER_THREAD=1' >> ~/.bashrc
上一步设置用于allowing per-threads memory management,能提高计算性能。
$ cd ..
$ rm -rf discov* LATEST_VERSION.tar.gz

3. 软件使用的注意事项

1. 强烈推荐使用 PCR-free protocol library 数据;数据量推荐为 ~60x,略大于或小于该值也是 OK 的。
2. 必须使用 Illumina MiSeq 或 HiSeq 2500 测序仪产生的 >=250 bp 长度的 Paired End 数据,并且首尾 reads 要有重叠。如果 PE 250bp 数据,则 Insert Size 长度要为 400-500 bp(需要注意的是软件的 manual 中可能写成 700bp,这是不对的)。
3. 只能使用一个文库的数据。,不支持输入 mate paired 数据。
4. DISCOVAR de novo (experimental) 能进行基因组的 de novo 组装,支持基因组大小可达 ~3 GB。

3. 软件的使用

3.1 DISCOVAR 的使用

软件的输入文件是 sort 过后的 Bam 文件,一个常用例子:

$ Discovar READS=sample-reads.bam REFERENCE=sample-genome.fasta              \
         REGIONS='10:30892106-30933760' OUT_HEAD=./discovar-variants/assembly\
         TMP=./discovar-variants/tmp

软件常用参数:

READS (String)
由逗号分割的一些 bam 文件,或内容为每行一个bam文件路径的 list 文件。
REGIONS (String)
对指定区域进行分析。多个区域则用逗号分割。区域的写法为 chr:start-sotp。如果 REGIONS=all,则对所有区域进行分析。
TMP (String)
指定临时文件路径
OUT_HEAD (String)
输出文件的前缀路径
NUM_THREADS (unsigned int) default: 0
使用的线程数。
REFERENCE (String)
参考序列 fasta 文件。若提供此文件,则能进行 variant calling,并给出 VCF 文件。

3.2 DISCOVAR de novo (experimental) 的使用

软件的输入文件是 sort 过后的 Bam 文件。程序在运行的时候会使用最大的线程数进行运算。

$ DiscovarExp --help special
上述命令用来查看软件的详细参数。
$ DiscovarExp READS=sample-reads.bam OUT_DIR=discovarexpOut
上述是软件的常用命令。同时,软件的参数非常少。
$ ls discovarexpOut/a.final/a.lines.fasta
查看主要结果。

4. DISCOVAR结果

4.1 结果表现形式

Understanding DISCOVAR output
图中,每个单独的箭头称为 edge,这些 edges 代表着序列;从起点到终点,有很多种不同的路径,称之为 lines;上图中有 4 个 cells,其中 3 个 cells 有 2 个 paths,有 1 个 cell 有 3 个 paths。
这种 multiple paths 可能表示:杂合位点;染色体变异;难以测序的位点等。

4.2 DISCOVAR 结果文件

生成的结果文件位于 discovar-variants/ 文件夹下,主要的结果文件是:

assembly.final.fasta 所有的 edges 序列 (edges overlap by K-1 bases)
assembly.final.fasta0 所有的 edges 序列 (without overlaps)
assembly.final.dot dot格式的组装图
assembly.final.variant VCF结果文件

4.3 DISCOVAR de novo 结果文件

生成的结果文件位于 discovarexpOut/a.final/ 文件夹下,主要结果文件有:

a.lines.fasta 多个 paths 中仅选择第一个 path,得到的 lines 序列的 fasta 文件。
a.lines.efasta 标准的 efasta 文件,有所有的 paths 结果。
a.fasta 所有的 edges 序列
a.lines 二进制文件
a.lines.src 上一个文件的文本形式结果

5. 总结

Discovar 能根据 Illumina 测序数据比对到基因组上的结果来进行基因组 de novo 组装,得到 edges 序列;若在提供了基因组序列的情况下,还能进行 Vaiants calling。
Discovar de novo (experimental) 能根据 Illumina 测序数据比对到基因组上的结果来进行基因组 de novo 组装,得到 edges 序列。相比与前者,还能得到 lines 序列,这是比较完整的序列文件。

RTL8188CE 802.11b无线网卡驱动的安装

lspci

03:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter (rev 01)
$ lspci -nn|grep -i net
03:00.0 Network controller [0280]: Realtek Semiconductor Co., Ltd. RTL8188CE 802.11b/g/n WiFi Adapter [10ec:8176] (rev 01)
0c:00.0 Ethernet controller [0200]: Realtek Semiconductor Co., Ltd. RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 07)

EL Repo

在网站http://elrepo.org/tiki/DeviceIDs上搜索10ec:8176

$ rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
$ yum search  kmod-r8192ce
$ yum install kmod-r8192ce