Шрифт:
Интервал:
Закладка:
Есть разные модификации BLAST: BLASTp (выравнивание аминокислотных последовательностей), BLASTn (выравнивание нуклеотидных последовательностей), BLASTx (выравнивание всех возможных транслятов нашей нуклеотидной последовательности против банка аминокислотных последовательностей), TBLASTx (выравнивание всех возможных транслятов нашей нуклеотидной последовательности против всех транслятов банка нуклеотидных последовательностей). Еще нужно знать, что Nr Data Base — (non redundant) — это база, против которой обычно прогоняют BLAST, в которой нет повторяющихся последовательностей, из которой убраны дубли для того, чтобы не гонять BLAST по одним и тем же последовательностям. И score — это вес выравнивания.
А если на нашу последовательность при поиске налипло, например, не одна, а двадцать последовательностей. При этом возникает задача написать все эти последовательности друг под другом, чтобы увидеть, в какой мере они совпадают, что консервативно (устойчиво повторяется), а что нет, и как устроена наша аминокислотная последовательность. Эта задача называется
Множественное выравнивание
Множественное выравнивание — это такой способ написания нескольких последовательностей друг под другом (может быть, с пропусками в каких-то позициях в разных последовательностях), чтобы в каждом столбце стояли гомологичные позиции.
Для этой задачи тоже есть «золотой стандарт». Это выравнивание, которое бы получилось, если бы мы выровняли друг под другом последовательности, которые имеют одинаковую пространственную структуру. То есть две экспериментально установленные пространственные структуры белка сопоставляем и отмечаем, какие аминокислотные остатки друг под другом встали (эти остатки соответствуют гомологичным позициям). Это — биологически обоснованное выравнивание. Возникает задача — найти способ (построить алгоритм и определить параметры), который выравнивает последовательности "золотого стандарта" (то есть последовательности, для которых пространственная структура известно) правильно. Если такой алгоритм построен, то есть надежда, что он выровняет последовательности с неизвестной пространственной структурой тоже правильно.
Для решения задачи множественного выравнивания можно попробовать написать многомерную матрицу и построить методом динамического программирования с просмотром многомерной матрицы. Тогда количество вершин будет порядка Ln, где L — длина, а n — количество последовательностей. Так как типичное количество последовательностей в семействе белков сотни, то 300 аминокислот дадут 300100 — это очень много, этот алгоритм для множественного выравнивания не подходит.
Тогда придумали метод прогрессивного выравнивания. Зная расстояния между любой парой последовательностей, мы можем построить выравнивание, определить вес выравнивания, и построить какое-то бинарное дерево. Затем мы обходим это дерево, последовательно проводя парные выравнивания наиболее близких последовательностей. Объединяем, получаем выравнивание. Соединяем суперпоследовательности, получаем следующее выравнивание. В конце концов, получаем выравнивание в корне.
Такое постепенное построение выравнивание решает задачу, которую мы не можем сформулировать математически. В биоинформатике очень часто нельзя построить математическую формулировку задачи, которую мы решаем. Поэтому формулировка задачи, которую решает алгоритм BLAST, выглядит так: мы находим то, что находит программа BLAST. Также мы не можем сказать, что мы оптимизируем при множественном выравнивании.
Одна и та же биологическая задача может приводить к разным математическим постановкам одной и той же задачи. Есть примеры, когда одна и та же задача может быть построена так, что она будет математически решаемой или математически не решаемой. Есть класс задач, для которых не существует хороших алгоритмов. Но при построении множественных выравниваний мы решаем с помощью данного алгоритма, без формулировки математической задачи.
Дальше идет задача
предсказания вторичной структуры РНК
Вторичная структура РНК — структура, образуемая спаренными основаниями на однонитевой молекуле РНК. Биологическая роль вторичной структуры: структурная (РНК — рибосомная, тРНК), регуляция (рибопереключатели, аттенюация, микроРНК), рибозимы, стабильность РНК.
На рисунке показана типичная вторичная структура РНК и разные формы представления вторичной структуры РНК:
Вся РНК состоит из петель и спиралей (указано на рисунке). Петли бывают следующих типов: шпилька, внутренняя, выпячивание, множественная, псевдоузел. Так вот, возникает задача установить, кто с кем спарен. Биологическая формулировка этой задачи звучит так: дана последовательность РНК, определить ее правильную вторичную структуру. «Золотой стандарт» — тРНК и рРНК. Количество возможных вторичных структур очень велико. Задачу можно сформулировать таким образом (законным с точки зрения физики): надо минимизировать энергию, по скольку правильная вторичная структура наиболее стабильная. На самом деле, с точки зрения биологии это не совсем верно, но формулировка очень удобная с точки зрения физики и математики. Далее вопрос, что оптимизировать и как оптимизировать.
Предположим, что мы не будем минимизировать усилия по поиску, а все переберем. Построим такой граф, в котором вершины — потенциальные спирали, а ребра проводятся, если две потенциальные спирали в вершинах совместимы (то есть, если две спирали могут одновременно существовать в данной молекуле РНК).
Тогда вторичной структурой будет любой полный подграф, то есть такой граф, в котором все вершины между собой соединены — называется "клика". Тогда задача такова: в таком графе найти клику. Клика будет соответствовать хорошей структуре.
Но, к сожалению, задача поиска клики в графе является математически плохой — для нее, скорее всего, не существует эффективного алгоритма ее решения (кроме полного перебора всех вариантов).
Если мы fgh уберем, то получим клику, некую вторичную структуру. Можем получить и другую клику.
Вторичная структура может быть представлена в виде правильной скобочной структуры, как на рисунке ниже. Левая часть — открывающая скобка, правая часть — закрывающая скобка. Вторичная структура тоже может быть представлена в виде дерева, но важно, что количество возможных структур порядка 1,8L (это доказывается в теореме, которую я не буду здесь представлять). Это тоже очень много, поэтому задача поиска клики тоже не эффективна.
Тем не менее, есть алгоритм динамического программирования, который позволяет нам найти за кубичное (а не квадратичное, как раньше) время найти структуру, имеющую наибольшее количество спаренных оснований. Основная идея его (как и любого алгоритма динамического программирования) заключается в том, что если мы знаем все решения на какой-то части, то мы можем сказать, какое будет решение