Выполнение поиска BLAST / SmithWaterman непосредственно из моего приложения
-
07-07-2019 - |
Вопрос
Я работаю над небольшим приложением и думаю об интеграции 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