ГоловнаШІ та Машинне навчанняВирівнювач Послідовностей ДНК — Сміт-Уотерман Наживо

🧬 Вирівнювач Послідовностей ДНК — Сміт-Уотерман Наживо

Спостерігайте, як справжній алгоритм локального вирівнювання Сміта-Уотермана будує свою матрицю оцінок і відстежує оптимальне вирівнювання між двома синтетичними послідовностями ДНК, підсвічуючи збіги, невідповідності й розриви.

ШІ та Машинне навчання3DСкладний60 FPS
ai-genomics-variant-calling ↗ Відкрити окремо

Про цю симуляцію

Ця симуляція запускає справжній алгоритм локального вирівнювання послідовностей Сміт-Уотерман на двох синтетичних послідовностях ДНК: «референсі» фіксованої довжини та довшому «прочитанні», створеному мутацією копії референсу й доповненому випадковими сміттєвими основами з обох боків. На кожному кроці рекурентне співвідношення динамічного програмування H(i,j) = max(0, діагональ + збіг/невідповідність, вгору − розрив, ліворуч − розрив) заповнює справжню матрицю оцінок, знаходиться клітинка з найвищим балом, і справжнє відстеження проходить назад від цієї клітинки, доки бал не повернеться до нуля.

🔬 Що показано

Жива теплова карта повної матриці оцінок динамічного програмування, відображена клітинка за клітинкою в міру заповнення, зі шляхом відстеження від клітинки з найвищим балом, обведеним золотим. Нижче отримана пара вирівняних послідовностей малюється основа за основою: збіги зеленим, невідповідності червоним і розриви бурштиновим — ті самі три результати, які має класифікувати справжній виявник варіантів.

🎮 Як користуватися

Налаштуйте довжину референсу (16–40 п.о.) і частоту мутацій (0–50%), потім натисніть «Регенерувати» для нового синтетичного прочитання. Налаштуйте бал збігу, штраф невідповідності й штраф розриву та спостерігайте, як миттєво оновлюються матриця й вирівнювання. Використовуйте «Відтворити заповнення», щоб анімувати заповнення матриці порядково, «Крок клітинок» для ручного просування, або «Заповнити миттєво», щоб перейти прямо до готового вирівнювання й статистики.

💡 Чи знали ви?

Сміт-Уотерман (1981) гарантує математично оптимальне локальне вирівнювання за заданою схемою оцінювання за час і простір O(mn) — але реальні вирівнювачі коротких прочитань, такі як BWA і Bowtie, рідко запускають повний алгоритм на цілих геномах, бо це занадто повільно в такому масштабі. Натомість вони використовують швидке індексне насіювання (наприклад, перетворення Барроуза-Вілера), щоб спершу знайти кандидатні регіони, а потім переходять до динамічного програмування у стилі Сміта-Уотермана, точно як ця симуляція, лише щоб уточнити вирівнювання в короткому кандидатному вікні.

Часті питання

Що таке алгоритм Сміта-Уотермана?

Сміт-Уотерман — це алгоритм динамічного програмування для пошуку оптимального локального вирівнювання між двома послідовностями. На відміну від алгоритму Нідлмана-Вунша, який вирівнює послідовності від кінця до кінця, Сміт-Уотерман дозволяє вирівнюванню починатися й закінчуватися будь-де, що робить його ідеальним для пошуку короткого відповідного регіону — наприклад, прочитання секвенування чи фрагмента гена — всередині довшої, у решті непов'язаної послідовності.

Як заповнюється матриця оцінок?

Кожна клітинка H(i,j) представляє найкращий бал локального вирівнювання, що закінчується на позиції i референсу й позиції j прочитання. Вона бере максимум із чотирьох варіантів: почати абсолютно нове вирівнювання тут (бал 0), продовжити діагональний збіг чи невідповідність від H(i-1,j-1), продовжити розрив у прочитанні від H(i-1,j), або продовжити розрив у референсі від H(i,j-1). Оскільки бали обмежені знизу нулем, будь-яка серія поганих збігів просто скидає локальне вирівнювання, а не тягне весь бал у мінус.

Що контролюють штрафи за збіг, невідповідність і розрив?

Бал збігу винагороджує вирівнювання ідентичних основ одна з одною; штраф невідповідності віднімається, коли дві різні основи змушені вирівнюватися; штраф розриву віднімається щоразу, коли алгоритм відкриває розрив (вставку чи делецію) у будь-якій послідовності. Підвищення штрафу розриву відносно штрафу невідповідності змушує вирівнювач надавати перевагу замінам над вставками/делеціями, і навпаки.

Чому прочитання включає випадкові фланкуючі основи?

Реальні прочитання секвенування рідко вирівнюються край у край з референсом — вони зазвичай містять регіон інтересу, вбудований у послідовність адаптера, помилки секвенування чи сусідній геномний контекст. Доповнення мутованого ядра випадковою сміттєвою ДНК з обох боків демонструє ключову силу Сміта-Уотермана: він знаходить і оцінює лише найкращий відповідний локальний регіон, повністю ігноруючи непов'язані фланги.

Як тут обчислюється відсоток ідентичності?

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

Чи ця симуляція математично точна?

Так. Рекурентне співвідношення оцінювання, правило обмеження нулем, вибір клітинки з максимальним балом і відстеження реалізовані точно як в оригінальній формулюванні Сміта й Уотермана (1981) з лінійним штрафом розриву. Вона опускає афінне оцінювання розриву (окрема вартість відкриття й продовження розриву) і матриці замін амінокислот, які реальні вирівнювачі на кшталт BLAST чи BWA додають поверх цієї самої основної рекурсії.

⚙ Під капотом

Справжня динамічна програма Сміта-Уотермана заповнює матрицю оцінок між референсом і мутованим, фланкованим прочитанням, а потім відстежує оптимальне локальне вирівнювання — збіги, невідповідності й розриви колірно кодовані, з живою статистикою відсотка ідентичності й кількості розривів.

Canvas 2DBioinformaticsDynamic ProgrammingSequence AlignmentGenomics

3D · рушій Three.js / WebGL · ціль 60 FPS · працює повністю на клієнті, без встановлення

Що ви знайшли?

Додати кроки відтворення (необов'язково)