Выполнение поиска BLAST / SmithWaterman непосредственно из моего приложения

StackOverflow https://stackoverflow.com/questions/1432467

Вопрос

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

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

Это было полезно?

Решение 3

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

Другие советы

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

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

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

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

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

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

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

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

http: //www.ncbi.nlm.nih Пра / персонал / дао / URLAPI / netblast.html

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top