Как сравнить реализации алгоритма Смита – Уотермана?

Предположим, что у вас есть две реализации алгоритма Смита-Уотермана (с любой эвристикой, которую они применяют для ускорения) для локального выравнивания геномных последовательностей.

Я хотел бы знать, можно ли быть уверенным, что эти реализации хорошо справляются с выравниванием (т.е. программа написана правильно). Как я могу сравнить это?

Это вопрос по ДНК? Не могли бы вы дать больше контекста вопросу? Улучшенная маркировка также может помочь.
Они не применяют никакой эвристики для ускорения. Существенной особенностью алгоритма динамического программирования является то, что он дает вам один из правильных ответов. Вам не нужно ускорять его, потому что он работает в режиме реального времени. Это важный момент, и я предлагаю вам изменить свой вопрос.
Я не уверен, что «то есть» — правильное слово. Качество выравнивания зависит от матриц замещения и штрафов за пропуски и не имеет ничего общего с правильностью.
Вам нужно уточнить вопрос. Смит-Ватерманн — это особый алгоритм. Других его реализаций нет. Могут быть дополнительные шаги, которые используются вместе с ПО, и если вы хотя бы не сообщите названия этих пакетов, мы не можем комментировать, чем один из них может быть лучше другого. Что касается сравнения, тот, который делает вашу работу разумно хорошо за меньшее время, является лучшей реализацией. Чтобы проверить, правильно ли написана программа, нужно посмотреть ее исходный код. По сути, это поиск ошибок.

Ответы (2)

Есть только две возможности согласования Смита-Уотермана с заданной матрицей затрат. Это либо правильно, либо нет.

Честно говоря, что бы вы ни использовали, маловероятно, что чистая реализация Смита-Уотермана неверна. Это не так сложно, на самом деле. В Smith-Waterman есть много эвристических улучшений, но если вы оба а) уверены, что не хотите их тестировать б) уверены, что они не используются, вы всегда можете сгенерировать множество случайных последовательностей и выровнять их. в парах. Если какая-либо пара не соответствует одному и тому же результату таким же образом, что-то не так, и вам следует продолжить расследование.

Я полагаю, что технически на ваш вопрос можно ответить только на Stack Exchange в области вычислительной техники. Прагматичный ответ биологии таков: проблемы нет. Это настолько хорошо зарекомендовавший себя алгоритм, что его реализация на любом авторитетном сайте или у любого авторитетного поставщика, скорее всего, будет приемлемой. Никакой эвристики не задействовано, поэтому, если вы сравните разные реализации, вы должны получить похожие ответы. Я говорю похожие, а не идентичные, потому что может быть более одного сопоставления с одним и тем же баллом, но выбрано только одно. Как правило, нет никакой разницы.

Я предполагаю, что есть один аспект алгоритма Смита-Уотермана, который может различаться в разных реализациях, но именно за него вы, пользователь, несете полную ответственность — система подсчета очков. Ваше основное предположение заключается в том, что две последовательности связаны, и вы просите программу дать вам попарное выравнивание, которое «лучше всего» выражает эту связь. «Лучший» в программе означает наивысший балл по системе, которая присваивает различное значение выравниванию различных пар всех 20 аминокислот (матрица сравнения для белков) и наказывает за введение пробела (чтобы учесть вставка или удаление) и расширение однажды введенного пробела.

Какие у вас есть варианты и когда может возникнуть необходимость их реализовать? Вы можете выбирать из различных сравнительных матриц, полученных путем выравнивания блоков последовательностей одного и того же белка в организмах с разным эволюционным разделением. Эти матрицы отличаются тем, что для замены одних аминокислот требуется замена только одного основания в кодоне, тогда как для других требуются изменения во всех трех положениях кодона. Последние менее вероятны в короткие промежутки времени эволюции (например, между мышью и крысой), чем в более длинные (например, между мышью и бактерией). Поэтому в идеале вы должны использовать матрицу сравнения, наиболее подходящую для сравниваемых последовательностей.

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