430 likes | 560 Views
UGENE Tech Talk: от поиска повторов к облакам. Констан т ин Оконечников Unipro 20 10. Содержание. Часть 0: введение Проект Unipro UGENE Часть 1: real-life bioinformatics Работа с биологическими данными Алгоритмы биоинформатики HPC и облачные вычисления Часть 2: за кулисами
E N D
UGENE Tech Talk: от поиска повторов к облакам Константин Оконечников Unipro 2010
Содержание Часть 0: введение • Проект Unipro UGENE Часть 1: real-life bioinformatics • Работа с биологическими данными • Алгоритмы биоинформатики • HPC и облачные вычисления Часть 2: за кулисами • Разработка в деталях • Особенности создания СПО
Unipro UGENE Цель проекта – интеграция наиболее используемых алгоритмов анализа генетических данных в единой визуальной рабочей среде, удобной для прикладного специалиста. • Свободная лицензия; • Кросс-платформенность; • Модульная архитектура, более 30 расширений; • Единый, удобный пользовательский интерфейс; • Концептуальная целостность в работе данными; • Эффективное использование вычислительных ресурсов; • Поддержка составных методов анализа данных.
Занимательные факты • Поддерживаемые платформы: Windows, Mac, Linux X11 • Язык программирования: C++, Qt • Большая часть интегрированных алгоритмов встроена на уровне исходного кода
Краткий обзор возможностей UGENE • Множественное выравнивание: MUSCLE, Kalign, Clustal, Mafft • Сверхбыстрый поиск повторов • 3D визуализатор молекул • Визуализация и редактирование хроматограмм • Аннотирование геномов • Анализ гомологии на основе цепей Маркова (HMMER) • Поиск открытых рамок считывания для всех генетических таблиц • Поддержка запросов к удаленным базам данных (типа BLAST, CDD) • Сайты рестрикции, cайты связывания транскрипционных факторов
Краткий обзор возможностей UGENE Редактор вычислительных схем • Интуитивно понятный интерфейс пользователя; • Расширяемость – легкое добавление новых вычислительных блоков; • Каждый блок может иметь различные оптимизированные реализации для различных платформ; • Автоматическая загрузка всех доступных вычислительных ресурсов; • Интерактивность. • Высокопроизводительные вычисления • Многоядерные процессоры • Кластеры и грид-системы • GPGPU, специальные вычислители • Облачные вычисления
Текущее состояние проекта • Более 1000 активных пользователей • Проект входит в официальные версии дистрибутивов Linux: Ubuntu, Fedora, Arch • Взаимодействие с российскими и рядом зарубежных институтов в области вычислительной молекулярной биологии • Перенос задач на суперкомпьютеры
Форматы данных MSF EMBL CLUSTAL STOCKHOLM Genbank GFF FASTA FASTQ NEWICK NEXUS MMDB SCF ABI SAM CSV HMMER2/3 PDB Plain text
Биологические объекты • Последовательность • Множественное выравнивание • Трехмерная структура • Филогенетическое дерево • Аннотация • Хроматограмма • …
Sequence • Алфавит • DNA,RNA,аминокислотный • Аннотации • Quality • Sanger и т.д. • Форматы: • Genbank • Fasta • ...over 9000
Множественное выравнивание • Состоит из последовательностей • «Помнит» смещения • Требует особой визуализации • Вариативность • Масштабирование
Трехмерная модельбелка • Набор координат атомов • Вторичная структура • Граф химических связей • Домены
Работа с форматами • Определение типа объекта • «Неправильные» файлы • Несоответствия • Ошибки • Режимы чтения и записи • Запись или экспорт?
«Большие» данные • Индексирование • Потоковое чтение/запись • Суффиксный массив • Управление памятью • Мета данные
Карта данных Кэш Активное представление Данные Активное представление Данные Данные
Pairwise alignment • Динамическое программирование • Нидлман-Вунш • Смит-Ватерман • Весовые матрицы • Blast/PsiBlast • Hidden Markow Model
Multiple Alignment • Clustal • Muscle • KAlign • Mafft • TCoffee
Сборка контигов • Reference (по сути pairwise) • Bowtie • Bwa • Cufflinks • Mummer • De Novo (без референтная) • AMOS
Genomics & genetics • Поиск повторов • Ферменты рестрикции • Транскрипционные факторы • Рамки считывания • Подбор праймеров • Моделирование экспериментов генной инженерии
Анализ белков • Предсказание вторичной структуры • Фолдинг и третичная структура • Поиск активных сайтов • Предсказание взаимодействия • Обратная трансляция • Взаимодействие РНК
UGENE Service • Идея: использование удаленных вычислительных ресурсов для решения задачбиоинформатики
Аппаратное обеспечение • Многоядерные процессоры • Расширенные наборы инструкций SIMD (SSE,SSE2,AltiVEC) • Архитектура CELL процессоров • NVIDIA GPU с CUDA библиотекой • ATI GPU с ATISTREAM библиотекой
Компоненты сервиса 1) Графический интерфейс создания вычислительных схем и запуска вычислений 2) Вычислительный модуль • Менеджер вычислительных задач UGENE (внутренний планировщик) • Сервис управления процессами в кластерной среде или вычислительном облаке (внешний планировщик) 3) Центр администрирования
Менеджер вычислительных задач • Низкоуровневая реализация алгоритмов • Планировщик выполнения заданий • Оптимизация приоритета задач и выделяемой памяти • Состояние работы вычислительной схемы
Сервис управления процессами • Взаимодействие с удаленными процессами UGENE • Инициирует запуск задач • Управление очередью задач • Управление ресурсами кластера или вычислительного облака
Центр администрирования • Установить параметры сервиса управления процессов: ограничить мощности CPU, дисковую и оперативную память и т.д. • Вести учет пользователей использующих HPC платформу, просматривать пользовательские записи, управлять авторизационными механизмами. • Использовать средства мониторинга пользовательских запросов для просмотра статистики задач.
Практика: Amazon EC2 Сервис предоставляет вычислительные мощности в облаке. Позволяет: • Использовать заранее подготовленный образ виртуальной машины содержащий приложение, данные и связанные с ними конфигурационные параметры. • Загружать образ в виде виртуальной машины заданной категории мощности; • Использовать динамический или статический IP для данной машины; • Использовать блоки хранения данных с возможностью динамической подгрузки и т.д • Управлять инфраструктурой с помощью API: java, cmd line, python
Процесс разработки Непрерывный цикл: • Проектирование • Разработка • Тестирование • Ревью Срок релиза: 2 месяца
Что мы применяем • Visual Studio, Qt Creator • C++, bash • Qt 4.7 • Subversion • Mantis bug tracking system • JetbrainsTeamcity • Wiki
Разработка • Нацеленность на результат • Жесткие временные рамки • Кодекс разработчика UGENE • Контроль качества • Ответственность • Помощь в ревью
Тестирование • Использование JetbrainsTeamcity • Pre-commit build • Nightly, weekly build • Remote tasks • Binary Snapshots • Автоматические тесты (база более 5000, постоянно пополняется) • Мануальные тесты
Deployment • Binary snapshots в team-city • Windows • NSIS installer • Mac • Script based on Firefox-installer • Linux • Binary X11 snapshot • Native packages
Официальные дистрибутивы Linux • Завязка • Создание скриптов • Переписка • Продвижение • Поддержка • Форс-мажор почти всегда • Правила разные
Хаос СПО • Legacy code • «Велосипеды» • Очень старый код • Война лицензий • Идеи автора • Неясности
Становление коммьюнити • Работа с пользователем • Невыполнимые запросы • Неочевидные вопросы • Непонятные реквесты • Обратная связь • Как подружиться? • Наша позиция
Полезные ссылки • http://ugene.unipro.ru • http://www.open-bio.org/ • http://www.ncbi.nlm.nih.gov/bookshelf/ • http://webcast.berkeley.edu • http://www.embl.org/
Спасибо Вопросы ?