我正在开发一个小型应用程序,并考虑将 BLAST 或其他本地对齐搜索集成到我的应用程序中。我的搜索只调出了程序,需要安装并作为外部程序调用。
有没有办法让我从头开始实施它?任何预制的图书馆也许?
我正在开发一个小型应用程序,并考虑将 BLAST 或其他本地对齐搜索集成到我的应用程序中。我的搜索只调出了程序,需要安装并作为外部程序调用。
有没有办法让我从头开始实施它?任何预制的图书馆也许?
它必须在 C 中,还是 C++ 也可以?如果是这样,您可能想在此处查看 SeqAn 库。
这个话题也与结果的可重复性有关:使用 NCBI 或 UCSC 提供的原始 blast 二进制文件总是更好,因为它会使您的结果更容易被其他科学家复制,并为您节省大量时间花在编写测试上(比你想象的要多)。
对于日常工作,我经常使用exonerate,这是一个用 C 语言编写的工具,可以进行全局和局部对齐,具有简单的类 unix 界面,并且不需要像使用 blast 那样格式化您的输入。
此外,请记住,人们通常使用 makefile 和脚本的组合来定义管道,而不是从脚本中调用所有内容:大多数编程语言都不适合定义管道,而像 Make 这样的自动构建工具对于脚本任务没有用处. 看看这些例子: http: //skam.sourceforge.net/skam-intro.html http://swc.scipy.org/lec/build.html
我只是偶然发现了我想要的东西:NCBI C++ Toolkit。感谢所有的建议。
BLAST算法是在20 年前实现的,现在它是一个非常大的算法,我无法想象它可以从头开始轻松实现。您可以在查看NCBI 工具包中的“blastall”程序的源代码时尝试了解它。更简单的成对 算法(Swith Waterman,Needleman-Wunsch)应该更容易实现:
Computational Molecular Biology: An Introduction包含Smith-Waterman和其他动态规划对齐算法的代码。
我通过 blastcl3 客户端二进制文件使用 NetBLAST。我相信 blastcl3 二进制文件是 NetBLAST Web 服务的一个非常瘦的客户端。
如果是这样,嗅探数据包并实现您自己的客户端应该不会太难。根据您的用例,这可能比实现您自己的对齐算法更快/更容易。但是,它确实引入了对 NCBI 的 Web 服务的依赖。
我发布了一个类似的问题(在不创建序列文件的情况下运行 BLAST (bl2seq))
基本上,我想出的答案是运行这个命令:
bl2seq -i<(echo sequence1) -j(echo sequence2) -p blastn
这会将 echo 命令的结果通过管道传送到 bl2seq(blast 2 序列)程序。
但我无法通过 Python 调用系统让它工作