Выполнение поиска BLAST / SmithWaterman непосредственно из моего приложения - PullRequest
5 голосов
/ 16 сентября 2009

Я работаю над небольшим приложением и думаю об интеграции BLAST или других локальных поисков выравнивания в мое приложение. Мой поиск вызвал только те программы, которые нужно установить и вызвать как внешнюю программу.

Есть ли способ, чтобы я реализовал его с нуля? Может быть, есть какая-нибудь готовая библиотека?

Ответы [ 7 ]

5 голосов
/ 21 сентября 2009

Эта тема также связана с воспроизводимостью результатов: всегда лучше использовать исходный двоичный файл, предоставленный NCBI или UCSC, потому что это облегчит ваши результаты для воспроизведения другими учеными и спасет вас много времени ушло на написание тестов (больше времени, чем вы можете себе представить).

Для повседневной работы я часто использовал exonerate , инструмент, написанный на C, который может выполнять как глобальное, так и локальное выравнивание, имеет простой Unix-подобный интерфейс и не требует отформатировать ваш ввод как с Blast.

Кроме того, имейте в виду, что люди обычно используют комбинацию make-файлов и сценариев для определения конвейера вместо вызова всего из скрипта: большинство языков программирования не подходят для определения конвейеров, в то время как автоматизированные инструменты сборки, такие как Make, бесполезны для задач сценариев. Посмотрите на эти примеры: http://skam.sourceforge.net/skam-intro.html http://swc.scipy.org/lec/build.html

5 голосов
/ 16 сентября 2009

Должен ли он быть в C, или C ++ тоже будет в порядке? Если это так, вы можете посмотреть библиотеку SeqAn здесь .

2 голосов
/ 28 октября 2009

Я просто наткнулся на то, что хотел бы: Набор инструментов NCBI C ++ . Спасибо за все предложения, хотя.

1 голос
/ 16 сентября 2009

Алгоритм BLAST был реализован ~ 20 лет назад, сейчас это очень большой алгоритм, и я не могу себе представить, что его легко реализовать с нуля. Вы можете попытаться узнать об этом, посмотрев на источники программы blastall в NCBI toolkit . Более простой алгоритм попарно (Swith Waterman, Needleman-Wunsch) должен быть проще для реализации:

0 голосов
/ 19 февраля 2010

Я опубликовал аналогичный вопрос ( работает BLAST (bl2seq) без создания файлов последовательности )

По сути, ответ, который я получил, заключался в выполнении этой команды:

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

Передает результат команды echo в программу bl2seq (blast 2 sequence).

Но я не смог заставить его работать через систему вызовов из Python

0 голосов
/ 16 сентября 2009

Я использую NetBLAST через двоичный файл клиента blastcl3. Я считаю, что двоичный файл blastcl3 является довольно тонким клиентом для веб-службы NetBLAST.

Если это так, не должно быть слишком сложно вынюхивать пакеты и реализовывать свой собственный клиент. В зависимости от вашего варианта использования это может быть быстрее / проще, чем реализация собственного алгоритма выравнивания. Это, однако, вводит зависимость от веб-сервисов NCBI.

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

0 голосов
/ 16 сентября 2009

Вычислительная молекулярная биология: введение содержит код для Смита-Уотермана и других алгоритмов динамического программирования.

...