Bioops

Bioinformatics=(ACGAAG->AK)+(#!/bin/sh)+(P(A|B)=P(B|A)*P(A)/P(B))

利用Biperl进行本地blast(Bioperl HOWTO翻译10)

| Comments

BLAST

英文原文

(译者注:可以先参考这两篇文章:1)本地blast   2)perl脚本提取BLAST结果中的信息【以tblastn为例】 )

bioperl有很多序列分析软件的接口,这意味着可以用bioperl来运行其他序列分析程序,更确切地说,可以提取程序运行结果并进行分析。在这里让我们来用最常用的序列分析软件,BLAST,作举例说明。首先要获取并安装BLAST (ftp)。(译者注:BLAST+和BLAST有很大的不同,此文默认使用的是BLAST。)然后用formatdb将序列文件索引并生成的一个叫“db.fa”的数据库文件,然后再看下面的代码。

和前面一样,我们要用一个模块,这次是Bio::Tools::Run::StandAloneBlast。先创建一个BLAST对象,并用new()方法设定blastall的运行参数,然后以一个序列对象作为输入。程序运行后将结果输入到另一个“report”对象。

1
2
3
4
5
6
7
8
9
use Bio::Seq;
use Bio::Tools::Run::StandAloneBlast;
$blast_obj = Bio::Tools::Run::StandAloneBlast->new(-program  => 'blastn',
                                                   -database => 'db.fa'));
$seq_obj = Bio::Seq->new(-id  =>"test query",
                         -seq =>"TTTAAATATATTTTGAAGTATAGATTATATGTT");
$report_obj = $blast_obj->blastall($seq_obj);
$result_obj = $report_obj->next_result;
print $result_obj->num_hits;

blastall()方法是核心,运行BLAST并提取运行结果。blastall生成的结果是一个“report”对象。利用这个对象,可以按照自己的需求访问或输出结果中的数据。report对象($report_obj)和result对象($result_obj)都来自SearchIO模块。后面的SearchIO HOWTO会更详细的介绍如何从这些对象中提取分析数据。

这里给出一个用SearchIO从BLAST结果文件中提取所需结果的例子。(译者注:这里是先单独运行BLAST并生成一个结果文件,然后使用SearchIO从结果文件创建一个report对象,而上面例子是用bioperl运行BLAST后获取一个report对象。)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
use Bio::SearchIO;
$report_obj = new Bio::SearchIO(-format => 'blast',
                                  -file   => 'report.bls');
while( $result = $report_obj->next_result ) {
    while( $hit = $result->next_hit ) {
      while( $hsp = $hit->next_hsp ) {
         if ( $hsp->percent_identity > 75 ) {
           print "Hit\t", $hit->name, "\n",
                   "Length\t", $hsp->length('total'),
                   "\n", "Percent_id\t", $hsp->percent_identity, "\n";
         }
       }
     }
}

此代码是提取大于75%一致性的HSP的信息。

有时候使用Bio::Tools::Run::StandAloneBlast的时候会出现一些错误。(译者注:后面的就不翻译了,主要是说使用bioperl调用BLAST等其他程序时会有可能出错之类。我的经验是,Bio::Tools::Run::StandAloneBlast只适用于UNIX/LINUX系统下能直接在终端运行BLAST相关命令的情况(复制相关程序到/usr/bin/或设定PATH profile)。Windows下没成功经验,有兴趣的自己搜一下。建议不用Bioperl调用外部程序,可如上面第二个例子,先用blast生成结果,然后再用bioperl提取结果中想要的部分。)

Sometimes you’ll see errors when you try to use Bio::Tools::Run::StandAloneBlast that have nothing to do with Bioperl. Make sure that BLAST is set up properly and running before you attempt to script it using Bio::Tools::Run::StandAloneBlast. There are some notes on setting up BLAST in the INSTALL file.

Bioperl enables you to run a wide variety of bioinformatics programs but in order to do so, in most cases, you will need to install the accessory bioperl-run package. In addition there is no guarantee that there is a corresponding parser for the program that you wish to run, but parsers have been built for the most popular programs. You can find the bioperl-run package on the download page.

Comments