RNAInSpace/Медленное сжатие
Общая проблематика
[править]При построении третичной структуры многоспиральных цепей РНК нужно сосредоточить внимание на более точной подстройке, по сравнению с более грубыми алгоритмами, которых достаточно для постройки фрагмента РНК из одной спирали. Если для построения отдельной спирали больший вес имеет алгоритм X-тюнинг, то для совмещения разных спиралей актуальнее использовать алгоритм Быстрое охлаждение, но его необходимо усовершенствовать.
Многофакторный учет водородных связей
[править]Первое уточнение, которое необходимо внести в алгоритм Быстрое охлаждение это учет не одной водородной пары, а всех. То есть в рассматриваемом примере нужно следить за образованием следующих пар нуклеотидов 7-55, 6-56, 5-57, 4-58, 3-59, 2-60, 1-61. Это связанно с тем, что одна (или даже две) пара может быть легко образована, но это образование не позволит образовать следующую пару. Например, цепь РНК в области этой пары может встретится в противоположных направлениях, что разведет следующую пару на большое расстояние, и затем уже ни какие последующие повороты не изменят неправильное сворачивание.
for (int k = 1; k < Число пар нуклеотидов - 1; k++)
{
int Group = CurrentPose.ScoreGroup(Нуклеотид слева[k], Нуклеотид справа[k]); // Например, 7 и 55
int calcGroup = Group;
if (calcGroup < 0)
{
calcGroup = 0;
}
int kt = Число пар нуклеотидов - 1 - k;
Score += Convert.ToDouble(calcGroup * (Math.Pow(10, kt) / 10));
}
Поатомный поворот
[править]Поворот одного нуклеотида состоит из 9 поворотов атомов (на угол между ними): 6 углов основания РНК и 3 боковой цепи. Такой комплексный поворот нуклеотида не позволяет выполнить более точную подстройку структуры РНК, что сказывалось на том, что алгоритм «Быстрое охлаждение» не мог найти более выгодное положение отдельно взятых нуклеотидов при сворачивании. Эту проблему позволяет обойти подход, когда будет осуществляться повороты отдельных атомов в нуклеотиде.