A Needleman-Wunsch algoritmus egy olyan algoritmus , amely két szekvencia (nevezzük őket és ) egymásba illesztését végrehajtó algoritmus , amelyet a bioinformatikában aminosav- vagy nukleotidszekvenciák egymáshoz igazítására használnak . Az algoritmust 1970-ben Saul Needleman és Christian Wunsch javasolta [1] .
A Needleman-Wunsch algoritmus egy példa a dinamikus programozásra , és kiderült, hogy ez az első példa a dinamikus programozás biológiai szekvenciák összehasonlítására.
Az igazított karakterek megfelelését a hasonlósági mátrix adja meg . Itt van a szimbólumok hasonlósága és . Lineáris résbüntetés is használatos , itt az úgynevezett .
Például, ha a hasonlósági mátrixot a táblázat adja meg
- | A | G | C | T |
---|---|---|---|---|
A | tíz | -egy | -3 | - négy |
G | -egy | 7 | -5 | -3 |
C | -3 | -5 | 9 | 0 |
T | - négy | -3 | 0 | nyolc |
majd igazítás:
GTTAC‒‒ G‒‒ACGTrésbüntetéssel a következő pontszámot kapja:
A legmagasabb pontszámú igazítás megtalálásához egy kétdimenziós tömb (vagy mátrix ) van hozzárendelve , amely annyi sort tartalmaz, ahány karakter van a sorozatban , és annyi oszlopot, ahány karakter van a sorozatban . A sorban és oszlopban lévő bejegyzés jelölése . Így ha a méretek és a sorozatokat egymáshoz igazítjuk , akkor a szükséges memória mennyisége . ( A Hirschberg - algoritmus a memória mennyiségével, de a számítási idő körülbelül kétszeresével számítja ki az optimális igazítást . )
Az algoritmus működése során az érték felveszi az optimális becslés értékeit az első karakterek és az első karakterek beállításához . Ekkor a Bellman optimalitás elve a következőképpen fogalmazható meg:
Alap: Rekurzió az optimalitás elvén:Így az F mátrix kiszámítására szolgáló algoritmus pszeudokódja így fog kinézni:
i =0 esetén ( A) F(i,0) ← d*i j=0 esetén ( B ) F(0,j) ← d*j i=1 esetén (A) j = 1 esetén ( B ) { Egyezés ← F(i-1,j-1) + S(A i , B j ) Törlés ← F(i-1, j) + d Beszúrás ← F(i, j-1) + d F(i,j) ← max (egyezés, beszúrás, törlés) }A mátrix kiszámításakor az eleme a lehető legmagasabb pontszámot adja az összes lehetséges igazítás közül. Az ilyen pontszámot adó tényleges igazítás kiszámításához a jobb alsó cellában kell kezdenie, és össze kell hasonlítania a cellában lévő értékeket a három lehetséges forrással (egyeztetés, beillesztés vagy törlés), hogy megtudja, honnan származik. Ha egyező , és igazodik, ha törölve van, töréssel igazodik, és ha beszúrt, akkor töréssel, akkor már igazítva van . (Általában előfordulhat, hogy egynél több lehetőség van azonos értékkel, amely alternatív optimális igazítást eredményez.)
IgazításA ← "" IgazításB ← "" i ← hossz (A) j ← hossza (B) , míg (i > 0 vagy j > 0) { Pontszám ← F(i,j) ScoreDiag ← F(i - 1, j - 1) ScoreUp ← F(i, j - 1) ScoreLeft ← F(i - 1, j) if (Score == ScoreDiag + S(A i , B j )) { IgazításA ← A i + IgazításA IgazításB ← B j + IgazításB én ← i - 1 j ← j - 1 } else if (pontszám == ScoreLeft + d) { IgazításA ← A i + IgazításA IgazításB ← "-" + IgazításB én ← i - 1 } egyébként (pontszám == ScoreUp + d) { IgazításA ← "-" + IgazításA IgazításB ← B j + IgazításB j ← j - 1 } } míg (i > 0) { IgazításA ← A i + IgazításA IgazításB ← "-" + IgazításB én ← i - 1 } míg (j > 0) { IgazításA ← "-" + IgazításA IgazításB ← B j + IgazításB j ← j - 1 }Needleman és Wunsch kifejezetten leírta az algoritmusukat arra az esetre, amikor csak a karakterek egyezését vagy eltérését értékelik ki, de a hiányt ( ) nem. Az eredeti publikáció [1] 1970-ből egy rekurziót javasol
A megfelelő dinamikus programozási algoritmus kiszámításához köbidő szükséges. A cikk arra is rámutat, hogy a rekurzió bármely résbüntetés-képlethez adaptálható:
A hézagbüntetés – az egyes hézagokból levont szám – úgy is felfogható, hogy megakadályozza a rések megjelenését az igazításban. A résbüntetés mértéke függhet a rés méretétől és/vagy irányától. [o. 444]
Ugyanerre a problémára (nincs hézagbüntetés) egy gyorsabb kvadratikus idejű dinamikus programozási algoritmust először David Sankoff javasolt [2] 1972-ben. Egy hasonló idő-kvadratikus algoritmust 1968-ban T. K. Vintsyuk [3] fedezett fel a beszéd feldolgozására. dinamikus skála előkiemelés) és Robert A. Wagner és Michael J. Fisher [4] 1974-ben a húrillesztésért.
Needleman és Wunsch a hasonlóság maximalizálásával fogalmazta meg problémáját. Egy másik lehetőség a V. Levenshtein által javasolt szekvenciák közötti szerkesztési távolság minimalizálása , azonban kimutatták [5] , hogy ez a két probléma egyenértékű.
A modern terminológiában Needleman-Wunsch egy kvadratikus idősorrend-illesztési algoritmusra utal lineáris vagy affin résbüntetésre.
Húrok | |
---|---|
Karakterlánc hasonlósági mértékek | |
Substring keresés | |
palindromák | |
Sorozat-igazítás | |
Utótag szerkezetek | |
Egyéb |
Szótárak és enciklopédiák |
---|