Есть ли ошибка в описании Гусфилдом алгоритма динамического программирования для нахождения глобальных выравниваний с постоянным штрафом за разрыв?

#string #algorithm #bioinformatics #sequence-alignment

#строка #алгоритм #биоинформатика #выравнивание последовательности

Вопрос:

Гусфилд (Алгоритмы для строк, деревьев и последовательностей, раздел 11.8.6) описывает алгоритм динамического программирования для нахождения наилучшего выравнивания между двумя последовательностями A и B в предположении, что штраф, назначенный разрыву длины x в одной из выровненных последовательностей, имеет вид R Sx для констант R иS. В частном случае, когда S = 0, существует штраф за начало разрыва, но нет штрафа за его удлинение. Мне кажется, что в формулах Гусфилда есть ошибка, и я надеюсь, что кто-нибудь может помочь мне понять истинное положение дел.

Гусфилд определяет четыре функции V(i, j), G(i,j), E (i,j) и F (i, j) со следующими свойствами:

  • V(i,j) — наилучший возможный результат для выравниваний префиксов A[1..i] и B[1..j].
  • E(i, j) — наилучший возможный результат для выравниваний этих префиксов при условии, что B[j] сопоставляется с пробелом в A.
  • F(i, j) — наилучший возможный результат для выравниваний этих префиксов при условии, что A [i] сопоставляется с пробелом в B.
  • G (i, j) — наилучший возможный результат для трасс, которые соединяют A [i] с B [j].

Повторения для i и j, большие или равные 1, являются:

 V(i,j)=max[E(i,j),F(i,j),G(i,j)]
G(i,j)=V(i,j) w(A[i],B[j]) where w is the score for a match/mismatch.
E(i,j)=max(E(i,j-1),V(i,j-1)-R]
F(i,j)=max(F(i-1,j),V(i-1,j)-R]
  

Наконец, граничные условия задаются как:

 V(i,0)=E(i,0)=-R
V(0,j)=F(0,j)=-R
  

Учитывая все это в качестве предварительных замечаний, рассмотрим ситуацию, когда у нас есть две последовательности, каждая длиной один, так что A = p и B = q . В этой ситуации возможны только три выравнивания:

 p    p-    -p
q    -q    q-
  

Они имеют оценки соответственно w (p, q), -2R, -2R. В частности, у нас должно быть E(0,1) = F (1,0) =-2R. Однако повторения дают, что E(0,1) и F(1,0) оба
больше или равны -R.

Эта ошибка в граничных условиях имеет последствия. Предположим, например, что A = ppppppp … p и B = qqqqq …q с p и q разными. Выравнивание, которое полностью отделяет A от B:

 A-
-B
  

должно оцениваться как -2R (оно имеет два разрыва), и поэтому это выравнивание в конечном итоге является оптимальным при условии, что w (p, q)<0.

Алгоритм Гусфилда, похоже, неправильно обрабатывает этот случай.

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

Комментарии / критика приветствуются.

Ответ №1:

Да, два уравнения на самом деле неверны. Они должны быть

F(i,j)=max(F(i,j-1),V(i,j-1)-R]
E(i,j)=max(E(i-1,j),V(i-1,j)-R]

Поскольку E (i, j) является наилучшей возможной оценкой для выравниваний этих префиксов при условии, что A [i] сопряжен с пробелом в B, выравнивание выполняется из оптимального выравнивания A [1: i-l] против B [1: j] и l-длинный разрыв (индексы против [i-l 1:i]).

Комментарии:

1. Я согласен. Однако, насколько я понимаю, показанное вами выравнивание должно быть оценено как -2R, и, следовательно, E(1,1) должно быть -2R. Но повторение дает E(1,1)=-R. Я думаю, что 1-й столбец и строка, а также нулевой столбец и строка должны быть установлены как часть инициализации повторения.

2. Теперь я понял вашу точку зрения. Я отредактировал ответ, показывающий ошибку в формулах.

3. В любом случае, в книге Гусфилда дается другое определение E() — пробел находится в A. В этом случае вам следует поменять местами индексы в граничных условиях E(i,0), F(0, i)

4. Как вы указали, я немного неправильно изложил алгоритм Гусфилда; текст, определяющий E и F, был заменен, но повторения были правильными. Я отредактировал вопрос, чтобы исправить эту проблему, так что теперь мой текст полностью соответствует Гусфилду.

5. С вашим новым определением E() и F() повторения в моем ответе теперь верны.