Архив за месяц: Декабрь 2014

Скрытые марковские модели в биоинформатике

Биоинформатика — применение методов математической статистики и информатики для анализа и обработки биологических данных: последовательностей нуклеотидов (ДНК) и аминокислот (белки).

Одной из основных категорий математических моделей, которые используются для анализа ДНК / генов и белков, являются скрытые марковские модели (СММ). В рамках СММ предполагается, что последовательность наблюдаемых состояний (нуклеотидов или аминокислот) порождается с помощью ненаблюдаемых (скрытых) состояний. Хорошо изученная задача — поиск оптимальной цепочки скрытых состояний по заданной наблюдаемой цепочке — имеет в биоиноформатике большую практическую ценность. В самом деле, если сопоставить скрытые состояния с характеристиками ДНК и белков, которые сложно замерить экспериментально (например, пространственная структура в белках, функциональные участки в генах), то становится возможным предсказывать эти характеристики на основе последовательностей нуклеотидов или аминокислот.

Скрытые марковские модели стали темой моей кандидатской диссертации (Методы распознавания на основе моделей Маркова со скрытыми переменными).

Читать далее Скрытые марковские модели в биоинформатике

Распознавание на основе скрытых марковских моделей

9 декабря на семинаре «Образный компьютер», который ведет Михаил Иванович Шлезингер (один из авторов EM-алгоритма), я докладывал о структурном распознавании для биологических последовательностей — ДНК и белков.

Презентация доклада: Распознавание на основе скрытых марковских моделей (успел рассказать до композиций алгоритмов, слайд 23).

Как известные алгоритмы распознавания на основе обобщенных скрытых марковских моделей, так и предложенные мной модели, объединяющие в себе обыкновенные СММ и марковские цепи, максимизируют функцию совместного правдоподобия для последовательности наблюдаемых и скрытых состояний. В связи с этим на семинаре возник вопрос: действительно ли такой критерий качества адекватен для рассматриваемых задач?

Читать далее Распознавание на основе скрытых марковских моделей

Лекция 12. Языки программирования. Метапрограммирование

Одним из ключевых аспектов конструирования программного обеспечения является использование определенного языка (или языков) программирования, с помощью которых описывается цель программы и, при условии императивного подхода, способ ее достижения. В лекции рассматриваются языки программирования и функции, которые они выполняют в разработке. Также уделено внимание метапрограммированию (другое название: порождающее программирование) — парадигме, в которой языки программирования играют ключевую роль.

Презентация: Лекция 12.

Читать далее Лекция 12. Языки программирования. Метапрограммирование

Лекция 11. Парадигмы программирования (часть 2)

При разработке сложных систем с использованием парадигмы объектно-ориентированного программирования возникает несколько проблем:

  • Поскольку классы в ООП соответствуют отдельным понятиям предметной области, различные классы тесно связаны друг с другом. Это затрудняет модификацию системы для повторного использования в других условиях.
  • Сильная связь между классами также препятствует выделению независимых или хотя бы слабо связанных между собой модулей. Модули упрощают не только повторное использование кода, но и его тестирование и сопровождение.
  • Связанность отдельных классов системы нарушает базовое правило программирования — принцип разделения ответственности (separation of concerns). Это приводит к дублированию кода и возможным плохо отслеживаемым ошибкам.

Эти проблемы решаются за счет использования парадигм программирования, расширяющих ООП:

  • компонентно-ориентированное программирование;
  • аспектное программирование;
  • сервисное программирование.

Презентация: Лекция 11.

Читать далее Лекция 11. Парадигмы программирования (часть 2)