Вычислительной биологии и биоинформатики

Применение алгоритмов анализа данных геномики

Основы вычислительной геномики

Содержание:

1.Каковы вычислительной биологии и биоинформатики?

2.Понимание компьютеров и алгоритмов

3.Последовательность выравнивание гена прогноз

4.Алгоритмы анализа филогении

5.Анализ данных микрочипов

6.Компьютерное моделирование

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

Вычислительная биология

Развитие вычислительных методов для решения задач в области биологии

Биоинформатика

Применение вычислительной биологии для анализа и управления реальными данными

Почему биологи нужны компьютерные науки?

Дискретная природа последовательности данных идеально подходит для анализа с использованием цифровых вычислительных машин

Размер и сложность данных геномики сделать данные невозможно проанализировать без компьютеров.

Вычислительная биология это термин, используемый для описания разработки алгоритмов для решения задач в области биологии. Термин "вычислительная геномика» иногда используется для обозначения вычислительные методы, которые были разработаны специально для борьбы с геномики данных. Биоинформатика является применение вычислительной биологии для реальных данных для целей анализа и управления данными. Для целей настоящей главе мы ограничимся вычислительных методов, разработанных для решения задач в области молекулярной и клеточной биологии. Масштабность данных, генерируемых различными проектами генома делает анализ последовательностей невозможно без использования компьютеров. Кроме того, методы компьютерной науки идеально подходит для анализа последовательностей данных, поскольку дискретного характера данных. Термин «дискретных» относится к величинам, которые хорошо определены и не имеют промежуточных значений. Например, база на цепи ДНК может быть только A, G, C или T. дискретных значений можно сравнить с непрерывными значениями. Примеры непрерывных ценности включают в себя пространство и время, которые можно разделить на сколь угодно малые единицы.

4. Історичні перспективи

1960: народження біоінформатика

Мови високого рівня комп'ютера

Дані послідовності білка

Академічний доступ до комп'ютерів

Маргарет Oakley Dayhoff

Перша база даних білків

Перша програма для послідовності складання

У 1960-і поклали початок біоінформатики. До появи на високому рівні мов програмування в 1957 році, програмістам необхідно детальне знання конструкції комп'ютера і були змушені використовувати мови, які були неінтуітівнимі для людини. Мови високого рівня комп'ютерів дозволило вченим комп'ютер, щоб проводити більше часу на розробку складних алгоритмів і менше часу, турбуючись про технічні деталі конкретної моделі комп'ютера вони використовують. До 1960-ЕОМ, як на малюнку в слайд стають загальними в університетах і науково-дослідних установ, що дає вченим безпрецедентний доступ до комп'ютерів. (Так корисно, як ці комп'ютери були, вони заповнені цілі кімнати й були обчислювальна потужність набагато нижче, ніж споживчого класу персональних комп'ютерів сьогодні!) Маргарет Oakley Dayhoff і його колеги скористалися цими подіями і накопичення даних білкових послідовностей для створення деяких з перший біоінформатики додатків. Наприклад, Dayhoff написав першу комп'ютерну програму для автоматизації послідовності складання, що дозволяє задача, яка раніше взяла людського місяців працівники повинні бути виконані протягом декількох хвилин. Вона та її колеги також опубліковані (в паперовій формі) перша база даних послідовностей білків і зробив безліч новаторських досліджень, що стосуються філогенезу і забив порівняння послідовностей. З цих причин, вона вважається одним з великих піонерів обчислювальної біології та біоінформатики.

5. Вирішення проблем в області комп'ютерних наук

Необхідні параметри для оцінки складності проблеми інформатики

алгоритмічної складності

Чи є ця проблема теоретично можливо розв'язати?

Якщо це так, то, що є найбільш ефективним рішенням?

Сучасний стан комп'ютерних технологій

пам'ять

швидкість процесора

кошти

Хоча комп'ютери здатні виконувати широкий спектр завдань на позачерговій швидкістю, багато важливих проблем, як і раніше нерозв'язною за допомогою комп'ютерів, тому що завдання вимагають занадто багато обчислень. Межі комп'ютері залежить від алгоритмічної складності завдання і апаратні характеристики машини використовуються. Деякі проблеми настільки складні, що алгоритмічно вони ніколи не будуть вирішені на будь-який комп'ютер зараз або в майбутньому, а деякі з них просто нерозв'язна навіть в теорії. Інші проблеми обмежені тільки поточний стан комп'ютерних технологій. Наприклад, секвенування повних геномів через безсистемний підхід не вдалося до середини 1990-х років, так як обчислювальні потужності, необхідної був недоступний до цього часу.

6. Алгоритмічні пробеми.

Приклад: пошук числа в неупорядкований список

Якщо список N чисел, середній час пошуку буде приймати буде пропорційно N

Більш розумний підхід

Помістіть числа в порядку

У бінарного пошуку

Крок 1: Візьміть номер в середині списку

Крок 2: Обмежити пошук до половини, яка містить ваш номер

Повернутися до кроку 1, поки не знайдете свій номер

Час для такого підходу є пропорційним log2N

Алгоритм процедури для вирішення проблеми. Якщо алгоритм кодується в комп'ютерному мовою, це називається програмою. Зазвичай можна оцінити складність алгоритму без необхідності писати програми. Розглянемо задачу про знаходження певного номера в неупорядкований список з номерами N. Якщо дуже пощастить, то число інтерес буде першим у списку. Крім того, невдача може мати цей номер у кінці списку. Якщо завдання повторюється багато разів для різних списків, то доведеться шукати через середньому N / 2 номери, перш ніж знайти номер адресата. Вчений або ефективний працівник, якщо на те пішло, зрозумієте, що пошук може бути поліпшений, якщо ці номери замовлені, від меншого до більшого, наприклад. Кількість часу, який буде потрібно, щоб просканувати цей список для певного числа ще буде, в середньому, пропорційно N, але порядок чисел представляє можливість набагато більш ефективний метод для пошуку номер в цьому списку. Подивіться на середині списку негайно повідомте нам, чи є число цікавих розташований у верхній або нижній половині списку. У наступній ітерації пошуку будуть обмежені тільки до половини списку, де ми знаємо кількість проживає. Цей процес повторюється для обмеженого половина визначити, в якому половину цього списку менше число знаходиться. Цей процес повторюється знову і знову, поки число не буде знайдений. Наприклад, це займе не більше 10 кроків, щоб знайти номер у списку з 1024 номерів. (Щоб зрозуміти це твердження, підрахувати, скільки дивізій на 2 необхідні для того, щоб отримати 1 з вихідного числа 1024.) Тільки що описаний алгоритм називається двійковим пошуком і використовується в більшості сучасних систем баз даних, щоб знайти індексованих елементів (слів , номери кредитних карт і т.д.).

7. Алгоритмічні складності.

  N = 102 N = 103 N = 106 1000 times faster computer
O(log2N) 6.6 nsec 10 nsec 19 nsec N1000
O(N) 0.1 msec 1.0 msec 1.0 msec 1000N
O(N2) 10 msec 1.0 msec 17 minutes 32N
O(2N) 40 trillion years 3 x 10284years Too long to even calculate N + 10

Алгоритмічна складність ставиться до оцінок, число кроків алгоритму потрібно для завершення. Big-О позначення загальну міру алгоритмічної складності. У приклад сканування неупорядкований список ясно, що кількість кроків, необхідних для завершення алгоритму буде пропорційна кількості цифр в списку, Н. Незалежно від того, скільки обробки ми робимо на кожне число зустрічається або як комп'ютер апаратного угод з кожним номером, час для завершення алгоритму буде пропорційна N. На відміну від двійкового пошуку потрібно ряд алгоритмічних кроків, які пропорційно log2 N. В умовах великого-Oh позначення, можна було б сказати, що сканування неупорядкований список O (N) і бінарний пошук O (log2 N).

У таблиці на слайді показано, як обчислення часу змінюється з алгоритмічної складності. Для цілей цієї демонстрації, ми припускаємо, що кожен алгоритм на графіку має ті ж постійний фактор, наприклад, він посідає 1 наносекунди для обробки кожного елемента в алгоритмі. Значення вважаються приблизно відповідно до обчислювальної потужності сучасних комп'ютерів. У попередньому слайді, ми бачили приклади алгоритмів, які були O (N) і O (log2 N). Таблиця показує, що O (N2) алгоритми вимагають значно більше разів для завершення, ніж O (N) і O (log2 N) алгоритмів. Тим не менш, швидкість сучасних комп'ютерів все ще досить для нас, щоб терпіти очікування 17 хвилин для алгоритму до кінця, коли N = 106, хоча це час завершення, становить 54 мільярдів разів більше, ніж у випадку O (log2 N). Послідовність вирівнювання двох послідовностей однакової довжини (тобто таку ж кількість нуклеотидів або амінокислот) є прикладом алгоритму, який є O (N2), де N-довжина двох послідовностей. Алгоритми, які є O (XN), де X-деяка константа, вважаються нерозв'язними, тому що алгоритми можуть досягти завершення тільки для дуже невеликого N, як правило, менше, ніж 10. На жаль, багато проблем в галузі біоінформатики вимагають алгоритми O (XN) для оптимального рішення. Наприклад, вирівнювання декількох послідовностей та будівництво філогенетичних дерев вимагає алгоритмів цього типу. Тим не менш, можна розробити алгоритми, які є слухняними, але дають лише наближені рішення (у багатьох випадках, дуже добрі наближення) до алгоритмічним проблемам. Ці методи описані як «евристичної». Останньою колонці таблиці в слайд-шоу, в якому ступені розміру N може бути збільшена для досягнення того ж рази завершення показано в таблиці, якщо алгоритм був працювати на комп'ютері, які були 1000 разів швидше. Як видно з таблиці, комп'ютерні технології ніколи, ймовірно, буде в змозі компенсувати алгоритмів складності O (XN).