运行BLAST(bl2seq)无需创建序列文件
我有一个脚本,用来执行BLAST查询(bl2seq)。
这个脚本的工作流程是这样的:
- 获取序列a和序列b
- 把序列a写入文件filea
- 把序列b写入文件fileb
- 运行命令 'bl2seq -i filea -j fileb -n blastn'
- 从标准输出中获取结果,并进行解析
- 重复这个过程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 模块作为替代方案。