Blat_类BLAST 比对工具 & GNU Parallel

Blat

​ Blat,全称 The BLAST-Like Alignment Tool,可以称为"类BLAST 比对工具",对于DNA序列,BLAT是用来设计寻找95%及以上相似至少40个碱基的序列。对于蛋白序列,BLAT是用来设计寻找80%及以上相似至少20个氨基酸的序列。

​ Blat 的主要特点就是:速度快,共线性输出结果简单易读。对于比较小的序列(如 cDNA 等)对大基因组的blat与blast比较比对,blat 无疑是首选。Blat 把相关的呈共线性的比对结果连接成为更大的 比对结果,从中也可以很容易的找到 exons 和 introns。因此,在相近物种的基因同源性分析和EST 分析中,blat 得到了广泛的应用。Blat的比对速度之所以能比Blast快几百倍,是因为此两者之间的比对机制有着本质的差别。Blast是将查询序列索引化,然后线性搜索庞大的目标数据库,期间频繁地访问硬盘数据,时间和空间上的数据相关性较小;Blat则将庞大的目标数据库索引,然后线性搜索查询序列,这种搜索方式在时间和空间上的数据相关性比较大。Blat将数据库索引一次性读入内存,可以反复地高速调用,无需访问硬盘,占用的系统资源很少。只要索引建立,查询序列的量越大,Blat的优势就越明显。

Blat is an alignment tool like BLAST, but it is structured differently. Blat produces two major classes of alignments:

  • at the DNA level between two sequences that are of 95% or greater identity, but which may include large inserts.
  • at the protein or translated DNA level between sequences that are of 80% or greater identity and may also include large inserts.
wget -c https://users.soe.ucsc.edu/~kent/src/blatSrc35.zip
unzip blatSrc35.zip 
cd blatSrc
uname -a
export MACHTYPE="x86_64"
mkdir ~/bin/$MACHTYPE
mkdir $MACHTYPE
make >make$(date +%F).log
echo 'export PATH="/public/home/guixiang/bin/x86_64:$PATH"' >> ~/.bash_profile

基本原理: 首先blat将参考序列拆分成tiles/kmers,其拆分的方式取决于两个参数: -tileSize and -stepSize。其中 -tileSize决定tiles/kmers的大小,一般设定范围是:8-12,预设DNA为11,蛋白质为5;-stepSize决定tiles/kmers移动的步长。

参考链接:Using blat

参考链接:Blat-The BLAST-Like Alignment Tool (详细的使用教程)

参数详解
#blat常见用法
#处理单个job
blat chr11.fa human/test.fa test.psl #输出不含序列
blat chr11.fa human/test.fa -out=pslx test.pslx #输出含序列
blat chr11.fa human/test.fa -out=blast test.blast #输出格式同NABI的blast格式
#并行处理多个jobs
time parallel blat chr{}.fa human/human.fa test_{}.psl ::: {1..22} X Y M


#blat参数
#用法:blat database query [-ooc=11.ooc] output.psl
#database  输入文件必须是其中一种类型:a .fa , .nib or .2bit file
#query 输入文件必须是其中一种类型:a .fa , .nib or .2bit file
#output.psl 输出文件
#-t=type 数据库类型,可选项: dna/prot/dnax
#-q=type 查询序列的类型,可选项:dna/prot/dnax/rnax
#-prot   等同于 -t=prot -q=prot
#-ooc=N.ooc Use overused tile file N.ooc.  N should correspond to the tileSize
#-tileSize=N 设定tiles/kmers的大小
#-stepSize=N 设定tiles/kmers在比对时移动的步长,即两个相邻tiles/kmers之间的距离,预设值是tileSize
#-oneOff=N  如果设定为 1 ,则表示在比对到tile上允许有一个错配碱基(mismatch),预设值是0
#-minMatch=N 设定至少匹配的tile的个数,一般设置值的范围是2-4,通常核苷酸的预设值为2,蛋白质的预设值为1
#-minScore=N 设定最小分值。 由于indel通常会对序列的功能产生影响,所以空位在比对过程中总是对应于一个负分,也就是所谓的空位罚分(Gap penalty)。根据打分机制,这个分值等于匹配碱基分值减去替换分值(mismatch)和空位罚分。预设值为30
#-minIdentity=N 设置序列相似度(sequence identity)最小百分比。通常核苷酸(nucleotide searches)预设值为90,蛋白质和翻译蛋白(protein or translated protein searches)预设值为25
#-maxGap=N 在一定长度序列中,设定两个tiles/kmers之间的允许最大的空位(gap)大小。通常设定范围是0-3,预设值为2,且仅在minMatch > 1时搭配使用
#-noHead 抑制.psl头文件的输出,内容全部均是以制表符为分隔符的文件
#-makeOoc=N.ooc Make overused tile file. Target needs to be complete genome.
#-repMatch=N  在一段序列被标记为overused之前,设定允许tiles/kmers重复次数。如果超过设定值,该tiles/kmers将会被标记为overused。通常当tileSize设定为12时,repMatch则设定为256;当tileSize设定为11时,repMatch则设定为1024;当tileSize设定为10时,repMatch则设定为4096。
#-mask=type Mask out repeats.  Alignments won't be started in masked region but may extend through it in nucleotide searches.  Masked areas are ignored entirely in protein or translated searches. Types are
            #lower - mask out lower cased sequence
            #upper - mask out upper cased sequence
            #out   - mask according to database.out RepeatMasker .out file
            #file.out - mask database according to RepeatMasker file.out
#-qMask=type Mask out repeats in query sequence. 类型选择与参数-mask相同
#-repeats=type 类型选择与参数-mask相同。无论如何重复碱基不会被掩盖(masked),但是在匹配重复区域时将会在psl输出文件中会单独展示其匹配结果,即与其他区域的匹配结果是分开的。
#-minRepDivergence=NN - minimum percent divergence of repeats to allow them to be unmasked.  Default is 15.  Only relevant for masking using RepeatMasker .out files.
#-dots=N     每N个序列就输出一个点,用于展示程序运行的进度
#-trimT      剪切首部的poly-T
#-noTrimA    不剪切尾部的poly-A
#-trimHardA  从psl输出文件中的qSize和alignments中移除poly-A尾巴
#-fastMap    快速的DNA/DNA remapping,要求查询序列长度不超过5000、高相似度和不进行内含子的比对
#-out=type  输出文件格式,格式如下:
 				  # psl - Default.  Tab separated format, no sequence
                  # pslx - Tab separated format with sequence
                  # axt - blastz-associated axt format
                  # maf - multiz-associated maf format
                  # sim4 - similar to sim4 format
                  # wublast - similar to wublast format
                  # blast - similar to NCBI blast format 
                  # blast8- NCBI blast tabular format
                  # blast9 - NCBI blast tabular format with comments
#-fine  对于高质量的mRNAs搜索small initial和terminal exons更为严苛。此选项不推荐应用于ESTs  
		#For high quality mRNAs look harder for small initial and terminal exons.
#-maxIntron=N  设定内含子最大的序列长度. Default is 750000
#-extendThroughN - 允许序列的比对可以从大段N区域延伸

GNU Parallel

#安装编译
wget ftp://ftp.gnu.org/gnu/parallel/parallel-20170822.tar.bz2
tar -jxvf parallel-20170822.tar.bz2 
cd parallel-20170822/
cat README 
./configure && make && sudo make install

#使用
#parallel教程: http://www.gnu.org/software/parallel/parallel_tutorial.html
#parallel中文版教程: http://my.oschina.net/enyo/blog/271612
#parallel与其他Linux命令的搭配使用: http://www.vaikan.com/use-multiple-cpu-cores-with-your-linux-commands/
posted @ 2017-08-31 20:17  AdaWongCorner  阅读(8612)  评论(0编辑  收藏  举报