运行BLAST(bl2seq)无需创建序列文件

6 投票
5 回答
2787 浏览
提问于 2025-04-15 19:10

我有一个脚本,用来执行BLAST查询(bl2seq)。

这个脚本的工作流程是这样的:

  1. 获取序列a和序列b
  2. 把序列a写入文件filea
  3. 把序列b写入文件fileb
  4. 运行命令 'bl2seq -i filea -j fileb -n blastn'
  5. 从标准输出中获取结果,并进行解析
  6. 重复这个过程2000万次

程序bl2seq不支持管道操作。有没有办法做到这一点,而不需要写入或读取硬盘?

顺便说一下,我使用的是Python。

5 个回答

1

这个bl2seq程序是来自BioPerl的吗?如果是的话,看起来你不能直接把数据通过管道传给它。不过,你可以用Bio::Tools::Run::AnalysisFactory::Pise自己写个小程序,这样做是比较推荐的。不过,你得用Perl语言来写。

如果这个bl2seq是别的东西,那就忽略这条信息吧。不管怎样,你可能需要提供更多的细节。

4

根据你使用的操作系统,你可能可以用类似于bash的进程替代的东西。我不太确定在Python中怎么设置这个,但基本上你是在使用一个命名管道(或者叫命名文件描述符)。如果bl2seq尝试在文件中随机访问,那就不行,但如果它只是顺序读取文件,那应该是可以的。

1

你怎么知道 bl2seq 不支持管道?顺便说一下,管道是操作系统的一个功能,而不是程序本身。如果你的 bl2seq 程序有输出,不管是输出到屏幕上还是文件里,你都应该能处理这些输出。可以查看 bl2seq 的帮助文件,里面会有选项说明,比如 -o 选项,用来输出到文件。这样你就可以处理这个文件了。

另外,既然你在用 Python,你还可以考虑使用 BioPython 模块作为替代方案。

撰写回答