Так что, если вам еще не надоела серия «Привет, мир РНК», ловите последнюю статью сезона :) В предыдущей статье Я обосновал, почему необходимо (или хотя бы целесообразно) отказаться от оценки энергии как целевой функции.
Если кто не знает, целевая функция — это изобретенная нами функция, по которой мы можем оценить, приближаемся ли мы к поставленной цели или нет, т.е.
«правильно» ли сворачивается РНК или нет. Если энергетика является плохо репрезентативной целью, то что более стабильно/ясно указывает, куда двигаться? Если бы у нас была абсолютно формализованная и точная цель, это уже означало бы, что мы решили задачу, т.к.
формализация самой целевой функции – это не что иное, как полное понимание процесса.
Но у нас нет такой роскоши.
Мы вынуждены сначала выдвинуть гипотезу – каким законам подчиняется процесс, и определенным образом отразить это в целевой функции.
Еще раз об энергии как целевой функции - в Rosseta@home для РНК было так SCORE = (VDW * 3,0 + RG) + (RNA_BS + RNA_BP_W + RNA_BP_H + RNA_BP_S) + (RNA_NONB * 1,5 + RNA_O2ST + RNA_PHOS) + (RNA_AXIS*0,2 + RNA_STAG * 0,5) Я не буду это расшифровывать.
Но важно, что это некая сумма вкладов различных предполагаемых активных воздействий.
Результат — нечто среднее арифметическое.
И соответственно, мы движемся к чему-то аморфному.
Никто не даст точных коэффициентов по параметрам, какой вклад вносит тот или иной параметр.
Но вычислить их невозможно – ведь мы строим целевую функцию.
Угадывать тоже не дело.
Я сначала попробовал - и обнаружил, что большая половина просто не вносит серьезного вклада, а лишь отклоняет расчеты не в том месте.
Поэтому я сначала оставил только ВДВ — это своего рода обобщенный коэффициент, по сути он показывает, есть ли запрещенные ковалентные связи (о чем говорилось в первых статьях).
А со временем я заменил его просто на ответ да/нет, потому что.
Бывало, что другие параметры иногда перевешивались, и в результате в файле .
pdb появлялись пересечения, которых там быть не должно было.
Далее, помните, что я предлагал рассчитывать только на образование водородных связей.
Когда они образуются, мы знаем математически, без каких-либо надуманных вещей: расстояние и угол решают все.
Мы также точно знаем, где они находятся в РНК.
(точнее, это сейчас довольно хорошо прогнозируется, есть нюансы - но позже).
На картинке изображена вторичная структура одного рибозима, который я взял для экспериментов.
Чтобы облегчить себе жизнь, я начал с уже существующей гипотезы о том, что РНК/белки складываются иерархически: т. н.
Иерархическая модель, имеющая ряд вариаций, но суть такова: сначала начинать в развернутой цепи формируются элементы вторичной структуры.
Если подчеркнуть слово «начинать», то это вполне нормальная гипотеза, но иногда под этим понимают, что вторичные структуры полностью формируются, и только тогда происходит дальнейшее сворачивание.
Это несколько неправильно.
Но это нам будет важно позже, когда мы полностью свернем рибозим (скажу сразу, что мне это пока не до конца удалось - по моим критериям, но они оказались строже, потому что я не по энергетике, где непонятно, достигнут ли минимум или можно сделать еще лучше Но я кажется близок к разгадке.
) Теперь сложим хотя бы небольшой участок и образовам водородные связи между двумя нуклеотидами.
Возьмем правую петлю cugacgucg (с 14 по 22) — 9 нуклеотидов и образовам водородную связь между крайними c-g. Как построить целевую функцию? Между cg образуется 3 водородные связи, поэтому мы имеем три расстояния (r1, r2, r3) и три угла (a1, a2, a3).
Чтобы функция говорила, нам нужно, чтобы она была такой: если ее значение в конечном итоге равно нулю или меньше, то образовались все 3 водородные связи.
Положительное значение должно плавно показывать приближение к этому состоянию.
Поэтому из текущих расстояний надо отнять 3 агстрема, а из углов - 20 градусов.
Получаем значения, вносящие положительный вклад в функцию.
Я хотел бы сложить все эти 3 угла и 3 расстояния и получить значение целевой функции.
А вот складывать расстояния и углы несерьезно — это разные величины.
Поэтому есть такая методика приведения его к одному масштабу.
Значимые расстояния (после вычитания 3) где-то от 1 до 12. Значимые в том смысле, что на этих расстояниях уже влияет угол.
А если расстояние больше, то угол не важен: какая разница, как вращаются атомы, если их разделяет пропасть? А углы у нас от 0 до 180, минус 20 = 160. Если примерно прикинуть, то окажется, что если расстояние умножить на 10, то расстояния и углы будут в одном масштабе.
Поэтому мы делаем: г1 -= 3,0ф; р1 *= 10; г2 -= 3,0ф; г2 *= 10; г3 -= 3.0f; г3 *= 10; а1 -= 20; а2 = 20; а3 = 20; Далее есть два варианта.
Один locScore = (r1 + r2 + r3 + a1 + a2 + a3) и второй если (maxR > maxA) { locScore = maxR; } еще { locScore = maxA; } где maxR = максимум (r1, r2, r3) и maxA = максимум (a1, a2, a3) Каждый из вариантов хорош по-своему.
Второй хорош для того, чтобы начать кататься.
После получения грубой структуры первый может пригодиться.
Ну а алгоритм очень простой: начинаем вращать (в части №3 - помните, что мы выбрали 1500 возможных поворотов) нуклеотиды с номерами 14 15 16 17 18 - вот, например, оказывается, что поворот № 210 лучший среди всех 19 20 21 22 Поворачиваем, скажем, два угла №1 и №6 (т.е.
№16).
Найдя лучший, исправляем его.
Наша цепочка сложится вдвое.
Через некоторое время мы загоним нашу цепочку в «натяжение» (концы левый и правый стремятся соединиться, и петля подвержена натяжению) настолько, что в углах 1 и 6 она перестанет вращаться, и алгоритм перейдет в режим петля.
Как только он перестанет давать лучшие условия, меняем комбинацию углов, например, 3 и 4 (№34) и т. д. Это постепенно снимет напряжение в углах 1 и 6, и тогда можно попробовать «сжать» » их снова.
Этого алгоритма вполне достаточно для образования необходимой водородной связи.
В следующей статье второго сезона :) поговорим о том, какие трудности возникают при формировании всей спирали.
Но все равно одна спираль.
P.S. Очень рад, что к третьей статье появились серьёзные комментарии.
Но при этом кажется обычным человеком, потенциальным игроком FoldIt или просто био-сторонником.
распределенные вычисления теряют интерес.
Я рассказал какую-то завершенную часть (Привет, Мир РНК).
Дальше сложнее не будет, но, возможно, подробности отдыха простым людям не так интересны (напишите, если это не так).
Я не скрываю, что ищу единомышленников и тех, с кем можно проверить гипотезы, но в то же время к массовому производству я пока не готов, да и программное обеспечение тоже не готово.
В общем, если кому интересно, пишите, тогда я быстрее подготовлюсь ко второму сезону.
Важный вопрос для математиков : Выше я описал две целевые функции 1. locScore = (r1 + r2 + r3 + a1 + a2 + a3) 2. if (maxR > maxA) { locScore = maxR; } Еще {locScore = maxA; } Знаете ли вы, как объединить их в одно? Те.
Допустим, если мы применили первую целевую функцию 5 раз, затем применили 5 раз вторую и получили определенный результат (уменьшение «энергии»).
Тогда необходимо, чтобы полученная после объединения функция после ее 5-кратного применения давала тот же результат, как если бы первая и вторая были применены поочередно.
Является ли это возможным? Теги: #складывание белка #складывание РНК #теория игр #кибернетика #математика #Алгоритмы
-
Обзор Lenovo Thinkpad Sl410-Nspdltx
19 Oct, 24 -
«Тонкий Мир» Глава 1
19 Oct, 24 -
Коллтрекинг С Оплатой За Лид, А Не За Номер
19 Oct, 24