5

我正在开发一个小型应用程序,并考虑将 BLAST 或其他本地对齐搜索集成到我的应用程序中。我的搜索只调出了程序,需要安装并作为外部程序调用。

有没有办法让我从头开始实施它?任何预制的图书馆也许?

4

7 回答 7

5

它必须在 C 中,还是 C++ 也可以?如果是这样,您可能想在此处查看 SeqAn 库。

于 2009-09-16T17:46:45.400 回答
5

这个话题也与结果的可重复性有关:使用 NCBI 或 UCSC 提供的原始 blast 二进制文件总是更好,因为它会使您的结果更容易被其他科学家复制,并为您节省大量时间花在编写测试上(比你想象的要多)。

对于日常工作,我经常使用exonerate,这是一个用 C 语言编写的工具,可以进行全局和局部对齐,具有简单的类 unix 界面,并且不需要像使用 blast 那样格式化您的输入。

此外,请记住,人们通常使用 makefile 和脚本的组合来定义管道,而不是从脚本中调用所有内容:大多数编程语言都不适合定义管道,而像 Make 这样的自动构建工具对于脚本任务没有用处. 看看这些例子: http: //skam.sourceforge.net/skam-intro.html http://swc.scipy.org/lec/build.html

于 2009-09-21T15:56:32.713 回答
2

我只是偶然发现了我想要的东西:NCBI C++ Toolkit。感谢所有的建议。

于 2009-10-28T11:31:14.987 回答
1

BLAST算法是在20 年前实现的,现在它是一个非常大的算法,我无法想象它可以从头开始轻松实现。您可以在查看NCBI 工具包中的“blastall”程序的源代码时尝试了解它。更简单的成对 算法(Swith Waterman,Needleman-Wunsch)应该更容易实现:

于 2009-09-16T12:08:28.137 回答
0

Computational Molecular Biology: An Introduction包含Smith-Waterman和其他动态规划对齐算法的代码。

于 2009-09-16T12:03:41.153 回答
0

我通过 blastcl3 客户端二进制文件使用 NetBLAST。我相信 blastcl3 二进制文件是 NetBLAST Web 服务的一个非常瘦的客户端。

如果是这样,嗅探数据包并实现您自己的客户端应该不会太难。根据您的用例,这可能比实现您自己的对齐算法更快/更容易。但是,它确实引入了对 NCBI 的 Web 服务的依赖。

http://www.ncbi.nlm.nih.gov/staff/tao/URLAPI/netblast.html

于 2009-09-16T13:48:07.437 回答
0

我发布了一个类似的问题(在不创建序列文件的情况下运行 BLAST (bl2seq)

基本上,我想出的答案是运行这个命令:

bl2seq -i<(echo sequence1) -j(echo sequence2) -p blastn

这会将 echo 命令的结果通过管道传送到 bl2seq(blast 2 序列)程序。

但我无法通过 Python 调用系统让它工作

于 2010-02-19T17:39:26.330 回答