Добавить в цитаты Настройки чтения

Страница 70 из 134

Есть задача предсказания вторичной структуры РНК. А также есть большой класс задач анализа белков. Для решения этих задач надо создавать методы анализа, то есть алгоритмов (протоколов) и программ для анализа. При создании метода надо иметь критерий того, что метод адекватен, соответствует реальности.

Как оценить "правильность" метода? Геном типичной бактерии содержит около 1000 генов. Как уже упоминалось, секвенировать геном можно за неделю. Экспериментальная характеристика одного белка требует как минимум 2 месяца работы современной лаборатории.

Для того чтобы определить, насколько предложенный метод анализа хорош и правилен, существует так называемый «золотой стандарт». Например, у нас есть метод определения генов. Если после его применения на какой-либо последовательности, в которой известно месторасположение генов, наши результаты совпадают с тем, что есть на самом деле на 80–90 %, значит наш метод правильный и эффективный. В этом и заключается суть «золотого стандарта».

Или предсказание вторичной структуры РНК. Экспериментально ее определить очень трудно, но есть РНК, структура которых хорошо известна — это рРНК и тРНК. И если наш метод хорошо предсказывает структуру этих известных РНК, то можно ожидать, что и для других РНК он будет давать хорошие предсказания.

Вернемся к первой задаче — сравнению последовательностей. Запишем одну последовательность под другой.

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

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

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

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

Как осуществляется выравнивание? Пишем одну последовательность под другой.

Сколько есть способов написать одну последовательность S1 длиной m под другой — S2 длиной n (со вставками)? Об этом можно доказать теорему — попробуйте.

Построим выборочную последовательность S длиной m + n следующим образом: возьмем несколько символов из последовательности S1, потом несколько символов из последовательности S2 потом опять несколько символов из S1, потом опять несколько из S2.

• Каждой выборочной последовательности S соответствует выравнивание и по каждому выравниванию можно построить выборочную последовательность. (Доказать!)

• Количество выборочных последовательностей равно





(Доказать!)

Таким образом количество выравниваний можно определить по формуле:

А как же найти оптимальное среди такого большого количества? Можно, конечно, попробовать разные способы, но оказывается, что этот поиск сводится к задаче поиска оптимального пути на графе. Задача поиска оптимального пути на графе решается методами динамического программирования следующим образом. Мы пишем одну последовательность над другой. И у нас есть некая ячейка, в которой мы будем хранить вес наилучшего выравнивания префиксов (то фрагментов последовательности от начала до данного места). И если у нас известен вес наилучшего выравнивания в 3 ячейках (см. слайд ниже), то мы можем определить вес наилучшего выравнивания в четвертой ячейке. То есть, для того, чтобы найти вес оптимального выравнивания, нам надо просмотреть m*n ячеек (количество ячеек в прямоугольной матрице MxN). Как принято говорить в информатике, это — квадратичный алгоритм. Он занимает время и объем памяти, пропорциональный квадрату длины последовательности. И вместо случайного перебора большого числа вариантов, мы решаем задачу довольно быстро.

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

Итак, у нас имеется замечательный квадратичный алгоритм поиска сходства. Время решения задачи выравнивания пропорционально L1*L2. Мы сравниваем имеющуюся у нас последовательность с последовательностями в банке. L1 = размер банка = 108, а для генома человека 3x109. Сравниваемая последовательность обычно имеет размер L2=103, количество операций примерно равно 100*1011=1013.) Обычный компьютер имеет быстродействие около 109 операций в сек. На каждый шаг надо ~102 операций. Тогда время работы равно Т~106 сек ~11 дней. То есть, просеквенировав бактериальный геном из 3000 генов (приблизительно за неделю), на то, чтобы его охарактеризовать, мы потратим 11*3000 дней, то есть проанализировать дольше, чем секвенировать, что, конечно, не очень хорошо.

Решением является то, что мы до применения методов динамического программирования сначала выбираем правильных кандидатов для сравнения. Есть такая программа BLAST (basic local alignment search tool), которую все биологи очень любят, она почти правильная. То есть она почти всегда работает так, как требует "золотой стандарт".

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

Здесь показано для слов длиной 4, в реальности слова берут не длиной 4, как показано на рис., а длиной 7 или 10 или 13, но принцип тот же. В каких-то случаях "слову" соответствует три позициями, в других — 100 позиций.

Дальше мы идем вдоль последовательности "Query" (та последовательность, которую мы хотим прогнать по банку) и выбираем очередные слова. Смотрим в таблице, где встречается это слово, вытягиваем найденные последовательности из банка и строим выравнивание их с нашей исходной последовательности. Это делается быстро, так как мы сравниваем нашу последовательность не со всеми последовательностями из банка, а только те, которые соответствуют нашему "слову" (tttgc в показанном случае). И выравнивание строим тоже не так аккуратно, как это делает алгоритм динамического программирования, а используем упрощенную схему.