【问题标题】:Performing BLAST/SmithWaterman searches directly from my application直接从我的应用程序执行 BLAST/SmithWaterman 搜索
【发布时间】:2010-11-28 18:46:30
【问题描述】:

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

有没有办法让我从头开始实施它?可能有任何预制库吗?

【问题讨论】:

  • 补充:我知道重新实现 BLAST 是徒劳的。我也不能使用在网络上运行的爆炸界面,因为我想定义我自己的序列库来对齐。我很想找到一个提供 blast 和 smith-waterman 以及可能的其他对齐算法的库,可以从我的代码中调用这些算法,而无需将我的序列写到输入文件中并使用复杂的参数启动系统调用来运行对齐.
  • 您是否出于某些原因不想对 BLAST 的本地副本进行“system()”调用?
  • 我不想将序列写入文件,因为这些独立程序需要该文件作为输入。

标签: c mpi sequence bioinformatics


【解决方案1】:

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

【讨论】:

  • 太好了。我会看看它,如果我也可以用 C++ 实现它。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

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

        【讨论】:

          【解决方案6】:

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

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

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

          【讨论】:

            【解决方案7】:

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

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

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

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

            但我无法通过 Python 调用系统使其工作

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多