Linux中Java程序调用Blast进行序列匹配

来源:互联网 发布:mac 图片浏览 编辑:程序博客网 时间:2024/05/29 07:35

这几天在进行一个DNA序列管理Web程序,需要使用查询序列与数据库中保存的序列进行匹配,但是由于序列比较长,而且数据库里面存在的序列较多,因此如果自己手动写一个动态规划算法会比较麻烦,因此决定使用现在常用的Blast做序列的比对。

使用Blast进行序列比对,一般有两个步骤:1、格式化数据库,2、在数据库中查询相应序列并返回结果。 

下面根据我的编程经历介绍一下如何在Linux中使用Java调用Blast进行序列比对。

首先,下载Blast程序对应的压缩包,然后把blast文件解压,将对应的bin目录下的文件拷贝到系统中相应的位置(例如:/usr/local/bin),在使用过程中用户可以根据具体情况建立软链接。

其次,进行序列数据库的格式化。

Linux中使用formatdb进行序列数据库的格式化,格式化命令:"formatdb -i DBfile1 -p (T/F) -o (T/F)",下面介绍一下具体参数

-i:输入需要格式化序列库的绝对路径,序列库一般一般使用的是fasta文件。

-o [T/F]:判断是否分析序列名并建立序列名索引。“T”表示建立序列名索引,“F” 表示不建立序列名索引。默认值为F。

-p [T/F]:选择建库的类型,“T”表示建立的是蛋白质数据库,“F”表示建立的是核酸数据库,缺省值为T。

通过Java调用formatdb代码段为:

Process process = Runtime.getRuntime.eexec("formatdb -i DBFile -p T -o T");

process.waitFor(); //等待命令执行结束,获取执行结果

程序运行结束后,如果建立的是核酸库,-o为F时,会输出**.nhr,**.nin,**.nsp文件,-o为T时,还会多输出**.hsd,**.nsi,**.nni和**.nnd文件。类似的,当建立的是蛋白质也会输出相应的文件:[-o F]--**.phr,**.pin,**.psq;[-o T]--**.psd,**.psi,**.pni,**.pnd。


最后,序列比对并返回结果

Blast的主程序是blastall,序列比对命令:“blastall -p 比对程序 -i querySequence -d Database -o result -b [0-N] -T [T/F]”,下面介绍一下具体参数:

-p--确定使用哪个程序进行比对,一共有下面5种取值:

blastp--蛋白质序列与蛋白质库做比对;

blastx--核酸序列与蛋白质库做比对;

blastn--核酸序列与核酸库作比对;

tblastn--蛋白质序列与核酸库作比对;

tblastx--核酸序列与核酸库在蛋白质级别作比对。

-d -- 搜索的数据库名称,该数据库为formatdb格式化后的结果;

-i -- 需要查询的序列文件对应的绝对路径;

-o -- 比对结果输出文件;

-b [0-N] -- 显示比对结果的最大数目,缺省值为250;

-T [T/F] -- 产生HTML格式的输出,缺省值为F。

通过Java调用formatdb代码段为:

Process process = Runtime.getRuntime.eexec("blastall -p 比对程序 -i querySequence -d Database -o resultFile -b [0-N] -T [T/F]");

process.waitFor(); //等待命令执行结束,获取执行结果

此外,还有许多其他的参数可以选择,下面简要介绍几个重要的参数:

-G -- 打开一个gap的罚分,默认为0;

-e -- 期望值,缺省值为10,表示比对结果中由于随机偶然性产生的匹配结果不大于10,其值越小表示比对结果越可信。

-m -- 比对结果输出格式,缺省值为0,即pairwise格式,此外用户还可以需求在1~11选择。

0 = pairwise

1 = query-anchored showing identities

2 = query-anchored no identities

3 = flag query-anchored, show identities

4 = flag query-anchored, no identities

5 = query-anchored no identities and blunt ends

6 = flat query-anchored, no identities and blunt ends

7 = XML Blast output

8 = tabular

9 = tabular with comment lines

10 = ASN, text

11 = ASN, binary




0 0
原创粉丝点击