使用易于使用的pythonic api运行ncbi blast
pyblast的Python项目详细描述
手动运行NCBI爆炸当然不是火箭科学,但是 与此相比,模块提供了几个好处:
- 为系统上的每个CPU自动运行一个BLAST进程; 比-num_threads选项获得更好的吞吐量
- 提供一个迭代器api,它为每个
爆炸结果当它们产生时,而不是在结束时
- Result和Hit对象不需要手动分析 结果;所有值都由它们的本地python类型表示(例如 Hit.evalue是float等)
示例
下面是一个简单的例子,其中有一些相关的评论 功能
import pyblast with open('data.fasta') as f: # Use the pyblast.blastx() iterator function for r in pyblast.blastx(f, db='/path/to/swissprot'): msg = 'query {} has {} hits'.format(r.query_id, len(r.hits)) if r.hits: # Use Hit.evalue as a float for comparison min_evalue = sorted([h.evalue for h in r.hits])[0] msg += '; minimum evalue {:f}'.format(min_evalue) print msg
这将产生如下输出
query M00181:167:000000000-A4VBV:1:1101:11880:1874 1:N:0:6 has 6 hits; minimum evalue 0.310000 query M00181:167:000000000-A4VBV:1:1101:17067:1875 1:N:0:6 has 14 hits; minimum evalue 0.200000 query M00181:167:000000000-A4VBV:1:1101:15039:1878 1:N:0:6 has 4 hits; minimum evalue 4.400000 query M00181:167:000000000-A4VBV:1:1101:17090:1895 1:N:0:6 has 6 hits; minimum evalue 1.700000 query M00181:167:000000000-A4VBV:1:1101:15843:1907 1:N:0:6 has 2 hits; minimum evalue 1.800000
API
blastn(input_file, *args, **kwargs)
使用迭代器处理fastainput_file的内容 blastn;生成Result对象。
参数*args和**kwargs控制blastn如何 调用。前者作为没有值的选项传递,而 后者作为带值的选项传递。例如, blastn(some_file, 'ungapped', db='foo/bar')将运行blastn 使用-ungapped-db foo/bar选项。
此外,以下关键字参数是专门处理的,并且 不会传给blast:
- pb_num_processes:要生成的blast进程数;默认值为sysconf(SC_NPROCESSORS_ONLN)
- pb_fields:i可为每次命中检索字段名;默认值为DEFAULT_HIT_FIELDS。有效字段名(及其含义)的列表可以在blastn -help的*** Formatting options部分找到。
blastp(input_file, *args, **kwargs)
请参阅blastn的文档。
blastx(input_file, *args, **kwargs)
请参阅blastn的文档。
Result
爆炸处理单个查询序列的结果。一套 此对象的属性为:
- id:查询序列的标识符;可以是None
- description:查询序列的文本描述;可以是None
- hits:由Hit个对象组成的数组
Hit
Result对象中的单个序列命中。
此对象的属性是请求的字段的名称 爆炸。例如,如果使用pb_fields=['qseqid',...]运行blastn,则可以访问^{tt3}的qseqid值。$ 对象h就像这样:h.qseqid。引用的字段不是 请求的blast值为None。
此外,blast字段被转换为它们的本地python类型。 例如,evalue字段自动转换为浮动字段 点值。
DEFAULT_HIT_FIELDS
为每个Hit对象返回的默认字段。
VERSION
正在使用的pyblast版本。这可以用来 比特征检测更容易确定模块的哪些特征 有空。