Программный комплекс — практическая часть моей диссертации, реализованная на языке программирования Java. Он предназначен для работы с алгоритмами распознавания скрытых последовательностей в области биоинформатики (определение фрагментов генов — экзонов и интронов; определение вторичной структуры белка). В рамках комплекса для решения обеих задач используется одинаковый подход, основанный на скрытых марковских моделях.
На данный момент комплекс находится в фазе начальной разработки. Хотя после интенсивного рефекторинга я в целом доволен структурой и интерфейсами компонент, они могут измениться в будущем.
Ссылки:
- Репозиторий комплекса на Github;
- Документация, сгенерированная с помощью Javadoc.
Теория
- Диссертация в электронном виде;
- Основные идеи диссертации;
- Презентация диссертации на семинаре «Образный компьютер» М.И. Шлезингера (часть 1, часть 2).
Особенности реализации
Содержание
Комплекс включает имплементации следующих алгоритмов:
- поиск последовательности состояний с наибольшим правдоподобием для скрытых марковских моделей произвольного порядка, описанных в диссертации;
- построение по принципу максимального правдоподобия композиций алгоритмов двух видов: байесовских (линейных) смесей и иерархических композиций, в которых каждая наблюдаемая строка распознается строго одним алгоритмом;
- преобразование биологических данных в форматах Genbank (ДНК / гены) и DSSP (белки) к единому виду;
- вспомогательные алгоритмы: отсеивание предикатов для иерархических композиций с помощью последовательного наращивания сложности и генетического алгоритма; EM-алгоритм с последовательным добавлением или удалением компонент для выбора оптимального размера байесовской смеси алгоритмов.
Вместе с алгоритмами в комплекс входят соответствующие вероятностные модели, например, описанная в диссертации скрытая марковская модель и байесовская смесь таких моделей. Большинство трудоемких вычислений распараллелены с использованием встроенных средств Java (пакет java.util.concurrent).
Планы на будущее
- Декодирование — поиск последовательности наиболее вероятных скрытых состояний по заданной наблюдаемой строке. Поиск наиболее вероятных коротких цепочек состояний и их согласование (для того, чтобы последовательность скрытых состояний, которую возвращает алгоритм, была корректной).
- Построение композиций (байесовских и иерархических) для полученных декодирующих алгоритмов.
- Иерархические композиции с функциями компетентности более сложного вида, чем индикаторные, например, с использованием логистической функции.