直接从我的应用程序执行BLAST / SmithWaterman搜索

时间:2009-09-16 11:43:55

标签: c mpi sequence bioinformatics

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

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

7 个答案:

答案 0 :(得分:5)

它必须在C中,还是C ++也可以?如果是这样,您可能需要查看SeqAn库here

答案 1 :(得分:5)

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

对于日常工作,我经常使用exonerate,一个用C编写的工具,可以进行全局和局部对齐,具有简单的类似unix的界面,不需要格式化你的输入与爆炸一样。

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

答案 2 :(得分:2)

我偶然发现了我想要的东西:The NCBI C++ Toolkit。谢谢你提出的所有建议。

答案 3 :(得分:1)

BLAST算法在大约20年前实现,它现在是一个非常大的算法,我无法想象它可以从头开始实现。在查看NCBI toolkit中'blastall'程序的来源时,您可以尝试了解它。 一个更简单的pairwise算法(Swith Waterman,Needleman-Wunsch)应该更容易实现:

答案 4 :(得分:0)

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

答案 5 :(得分:0)

我通过blastcl3客户端二进制文件使用NetBLAST。我相信blastcl3二进制文件对于NetBLAST Web服务来说是一个相当瘦的客户端。

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

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

答案 6 :(得分:0)

我发布了一个类似的问题(running BLAST (bl2seq) without creating sequence files

基本上,我提出的答案是运行此命令:

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

将echo命令的结果传递给bl2seq(blast 2序列)程序。

但我无法通过Python的调用系统来实现它