Министерство образования и науки Российской Федерации Федеральное государственное автономное образовательное учреждение высшего образования «САНКТ-ПЕТЕРБУРГСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ПЕТРА ВЕЛИКОГО» Институт компьютерных наук и технологий Кафедра Компьютерные интеллектуальные технологии «Допустить к защите» Зав. каф. КИТ, к.т.н. ______________ А.В. Речинский «____» _ июня _ 2015 г. МАГИСТЕРСКАЯ ДИССЕРТАЦИЯ РАЗРАБОТКА ВЕБ-СЕРВИСА АНАЛИЗА И ВИЗУАЛИЗАЦИИ ГЕНОМНЫХ ДАННЫХ направление: 02.04.03 «Математическое обеспечение и администрирование информационных систем» Выполнил: Власьев Игорь Михайлович Подпись______________ Руководитель: ст. преп. каф. КИТ ИКНТ, Туральчук Константин Анатольевич Подпись______________ Рецензент: Аналитик Федеральной Ювелирной Сети 585, к.ф.-м.н, Феоктистова Варвара Николаевна Подпись______________ Санкт-Петербург 2015 СОДЕРЖАНИЕ РЕФЕРАТ ..................................................................................................................... 3 СПИСОК АББРЕВИАТУР ......................................................................................... 4 ВВЕДЕНИЕ .................................................................................................................. 5 1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ ................................................................... 6 1.1 Введение в предметную область ................................................................... 6 1.2 Таблицы экспрессии генов ............................................................................. 9 1.3 Обзор открытых источников........................................................................ 11 1.4 Тепловая карта ............................................................................................... 13 1.5 Генная онтология .......................................................................................... 14 1.6 Актуальные задачи........................................................................................ 18 2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ.................................................................................. 19 2.1 Методы Data Mining...................................................................................... 19 2.2 Связь результатов с данными генной онтологии ...................................... 22 3. РЕАЛИЗАЦИЯ....................................................................................................... 33 3.1 Проектирование архитектуры системы ...................................................... 33 3.2 Реализация алгоритмов................................................................................. 35 3.3 Интерфейс ...................................................................................................... 39 3.4 Тестирование системы в облачной инфраструктуре Microsoft Azure ..... 44 4. ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ .......................................................................... 47 ЗАКЛЮЧЕНИЕ ......................................................................................................... 52 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ ................................................. 53 ПРИЛОЖЕНИЕ 1 ...................................................................................................... 56 ПРИЛОЖЕНИЕ 2 ...................................................................................................... 57 ПРИЛОЖЕНИЕ 3 ...................................................................................................... 58 ПРИЛОЖЕНИЕ 4 ...................................................................................................... 65 3 Реферат магистерской диссертации на тему «Разработка веб-сервиса анализа и визуализации геномных данных» Название на англ.: Developing web service for analysis and visualization of genomic data Работа содержит: стр. 52, ил. 24, табл. 3, библ.: 25 названий. Ключевые слова: data-mining, биоинформатика, веб-сервис, геном, микрочипы, анализ данных, экспрессия генов, генная онтология. Тема относится к области биоинформатики, программирования. Рассмотрены актуальные проблемы в области анализа данных генной экспрессии, разработан алгоритм оценки качества результатов. Спроектирована архитектура системы, изложены возможности по масштабированию сервиса. Работа имеет логическую структуру, состоящую из списка специальных терминов и сокращений, вводного раздела, четырёх основных глав и заключительной части. Актуальность и практическая значимость работы раскрыты в вводном разделе, там же описаны основная цель и поставленные задачи. Первая глава имеет обзорный характер. Здесь обозначены актуальные задачи, описаны способы представления геномных данных. Во второй главе проделан обзор теоретической части работы, проведен обзор других подходов, описан разработанный алгоритм. В третьей и четвёртой главах рассмотрены архитектура системы, особенности реализация необходимых модулей, отражены и проанализированы результаты. В заключительной части отражены общие выводы по проделанной работе. 4 СПИСОК АББРЕВИАТУР ГО – генная онтология Теплокарта – тепловая карта РНК – рибонуклеиновая кислота ДНК – дезоксирибонуклеиновая кислота мРНК – матричная рибонуклеиновая кислота 5 ВВЕДЕНИЕ В экспериментальный молекулярной биологии методы биоинформатики позволяют получать полезные результаты из большого количества исходных данных. В области генетики и геномики, биоинформатика помогает в упорядочивании и аннотировании геномов и наблюдаемых мутаций. Ранее ученые классифицировали различные типы рака основываясь лишь на том, какой орган был поражен. С помощью анализа геномных данных станет возможным классифицировать опухоли по паттернам активности генов в клетках [1]. Это позволит разрабатывать лекарства, предназначенные для конкретного вида ракового заболевания. В лабораторных исследованиях методы количественного анализа экспрессии генов находят применение в ряде опытов, связанных с изучением экспрессий различных генов. В экспериментах, где клетки содержались в каких-либо условиях, отличных от нормальных, в большинстве своем обнаруживаются изменения в профилях экспрессии генов. Результаты подобных исследований проливают свет на механизмы клеточного ответа на изменения окружающей среды. Существующие системы, предназначенные для работы с данными экспрессии генов, имеют ряд недостатков. Большинство подобных систем позволяют собирать данные из открытых источников, но исследователь не всегда может быть уверен в том, что он получит всю информацию о запрашиваемом объекте (набор полей, как правило, определён). Также системы, такие как Orange Bioinformatics, используют для обработки данных только мощность локальной системы, что затрудняет работу для исследователей, не имеющих в распоряжении большой вычислительной мощности. Отсутствует возможность модификации существующих критериев классификации данных, нельзя подгрузить функционал собственных методов анализа (или же подобный процесс слишком затруднителен). Таким образом существует потребность в гибком облачном сервисе анализа и визуализации геномных данных. 6 1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ 1.1 Введение в предметную область Геномика — раздел молекулярной генетики, посвящённый изучению генома и генов живых организмов. Геном — совокупность наследственного материала, заключенного в клетке организма. Геном содержит биологическую информацию, необходимую для построения и поддержания организма. Большинство геномов, в том числе геном человека и геномы всех остальных клеточных форм жизни, построены из ДНК, однако некоторые вирусы имеют геномы из РНК [2]. Ген — структурная и функциональная единица наследственности живых организмов. Ген представляет собой участок ДНК, задающий последовательность определённого полипептида либо функциональной РНК. Гены (точнее, аллели генов) определяют наследственные признаки организмов, передающиеся от родителей потомству при размножении. Среди некоторых организмов, в основном одноклеточных, встречается горизонтальный перенос генов, не связанный с размножением. Гены, представляющие собой линейные полимеры ДНК, соединены в длинные цепи, которые вместе с белками образуют хромосомы. Геном человека состоит из 3 млрд пар нуклеотидов и содержит 50000-100000 генов. Экспрессия генов — это процесс, в ходе которого наследственная информация от гена преобразуется в функциональный продукт — РНК или белок. Иногда измерение количества вырабатываемого функционального продукта используют для того, чтобы определить, насколько ген активен. Это количество называется уровнем экспрессии гена. Некоторые заболевания сопровождаются повышенным уровнем экспрессии гена в клетках пораженных тканей, например, определенных белков, в т. ч. онкогенов при онкологических заболеваниях, антител при аутоиммунных заболеваниях. 7 На уровень экспрессии генов могут влиять различные так называемые индукторы [9]: гормоны, ростовые вещества, изменение температуры, питательных веществ и т.д. Регуляция экспрессии генов позволяет клеткам контролировать собственную структуру и функцию и является основой дифференцировки клеток, морфогенеза и адаптации. Экспрессия генов является субстратом для эволюционных изменений, так как контроль за временем, местом и количественными характеристиками экспрессии одного гена может иметь влияние на функции других генов в целом организме. Основными способами определения экспрессии генов в данное время являются секвенирование РНК, содержащих поли-А (мРНК), а также применение экспрессионных ДНК-микрочипов [24]. Секвенирование РНК становится все более распространенным методом в связи с усовершенствованием методов секвенирования нового поколения. Секвенирование РНК не только позволяет определить уровень экспрессии каждого белоккодирующего гена в геноме, но и различать варианты мРНК, получающиеся в результате альтернативного сплайсинга. Количественный анализ экспрессии генов — анализ транскриптома, измерение транскрипционной активности гена, с помощью определения количества его продукта, матричной РНК (мРНК), универсальной для большей части генов. При этом конечный продукт экспрессии генов как правило белки, а не мРНК [11]. Для измерения количества мРНК разработаны надежные методы: количественная ПЦР в реальном времени (qPCR), применяют для анализа уровня экспрессии нескольких генов; сравнительная геномная гибридизация на чипах (CGH), позволяет видеть количественные изменения экспрессии генов прямо на хромосомах; микрочипы, с их помощью можно получать данные по уровню экспрессии большого количества генов; высокопроизводительное параллельное секвенирование РНК (RNA-Seq). 8 ДНК-микрочип (англ. DNA microarray) — это технология, используемая в молекулярной биологии и медицине. Современный ДНК-микрочип состоит из тысяч дезоксиолигонуклеотидов (зондов, или проб), сгруппированных в виде микроскопических точек и закреплённых на твёрдой подложке. Каждая точка содержит несколько пикомолей ДНК с определённой нуклеотидной последовательностью (см. рис. 1). Олигонуклеотиды ДНК-микрочипа могут быть короткими участками генов или других функциональных элементов ДНК и используются для гибридизации с кДНК или мРНК (кРНК). Гибридизация зонда и мишени регистрируется и количественно характеризуется при помощи флюоресценции или хемилюминесценции, что позволяет определять относительное количество нуклеиновой кислоты с заданной последовательностью в образце[12]. С помощью кДНК-микрочипов удобно исследовать изменения в уровнях экспрессии генов в случаях, например, различных заболеваний. Из двух образцов клеток (контрольного и исследуемого) выделяется РНК, из которой обратной транскрипцией получают кДНК. Каждая из полученных проб окрашивается каким-либо красителем (обычно используются Cy3 и Cy5). Меченые образцы наносятся на микрочип одновременно, и после отмывки негибридизовавшихся молекул производится измерение флуоресценции с помощью сканирующего конфокального микроскопа. 9 Рис. 1. Микрочип, содержащий около 40 000 проб 1.2 Таблицы экспрессии генов Данные об экспрессии генов можно представить в виде таблицы, где по вертикальной оси расположены гены, по горизонтальной – пробы, а на пересечении – уровень экспрессии гена для данной пробы (см. рис. 2). Количество записей в таких таблицах могут достигать нескольких десятков и сотен тысяч, поэтому для обработки этих данных требуются значительные вычислительные мощности. 10 Рис. 2. Структура таблицы экспрессии генов Пробы в данном контексте – это эксперименты, в условиях которых измерялся уровень экспрессии. Например, можно измерить, как меняется уровень под действием какого-либо токсина по сравнению с нормальными условиями. Или сравнить уровни экспрессии больного каким-либо заболеванием пациента со здоровым, таким образом поняв, какие биологические функции затрагивает болезнь или токсин. Каждый ген имеет собственный код, с помощью которого его можно идентифицировать в генной онтологии и получить о нём дополнительную информацию [7]. Уровни экспрессии генов представляют собой числа (см. рис.3). 11 Рис. 3. Пример заполненной таблицы экспрессии генов В настоящее время большое количество информации о генах не нужно собирать самостоятельно в лаборатории, их можно получить из открытых источников. Многие из них предоставляют пользователю возможность экспортировать данные для дальнейшего изучения и обработки. 1.3 Обзор открытых источников GenBank — база данных, содержащая аннотированные последовательности ДНК и РНК. GenBank поддерживается Национальным центром биотехнологической информации США и доступен на безвозмездной основе исследователям всего мира. GenBank — архивная база данных, то есть ответственность за содержимое каждой записи несут создатели этой записи, которыми, как правило, являются экспериментаторы, определившие данную последовательность. GenBank вместе с банками EMBL и DDBJ входит в консорциум INSDC (http://insdc.org/), осуществляющий регулярный обмен данными между этими тремя архивами аннотированных нуклеотидных последовательностей. 12 На июль 2013 года GenBank содержал информацию о 152 599 230 112 нуклеотидах 165 740 164 последовательностей из более чем 100 000 живых организмов [13]. DDBJ или DNA Data Bank of Japan — японская база данных ДНК. Представляет собой электронный ресурс с информацией о нуклеотидных последовательностях, относящихся к различным генам и организмам. Описание каждой последовательности включает в себя: номер в базе данных, видовую принадлежность, источник ДНК (линейный материал, клон, географическое происхождение взятой для анализа особи), фамилии и инициалы исследователей, которые получили эти последовательности и опубликовали по ним научные работы, описание последовательности, её функциональной нагрузки (в случае кодирующей последовательности — приводится соответствующая аминокислотная последовательность), и собственно нуклеотидная последовательность. Эта база данных по представленным нуклеотидным последовательностям полностью идентична европейской и американской (GenBank) базам данных ДНК; все три базы данных входят в INSDC (International Nucleotide Sequence Database Collaboration) — международную систему баз данных ДНК. Национальный центр биотехнологической информации США (англ. National Center for Biotechnological Information, NCBI) – основан в 1988 году в Бетесда (штат Мэриленд, США) как центральный институт обработки и хранения данных молекулярной биологии. Является частью Национальной медицинской библиотеки США (англ. United States National Library of Medicine, NLM), подраздела Национальных институтов здоровья (англ. National Institutes of Health, NIH) [25]. NCBI предоставляет информацию о базах данных белковых доменов, ДНК (GenBank) и РНК, базах данных статей научной литературы (PubMed) и таксономичной информации (TaxBrowser), обеспечивает поиск данных о конкретном биологическом виде (Taxonomy). Также содержит различные стандартные программы биоинформатики (BLAST). Базы данных доступны через поисковую систему Entrez. 13 Задачи NCBI: • Создание автоматизированных систем для хранения и анализа данных по молекулярной биологии, биомедицине и генетике. • Компьютерная обработка данных полученных в исследованиях структуры и значения биологически активных молекул и веществ. • Содействие широкому использованию баз данных и программного обеспечения для исследователей в области биотехнологий и медицинского персонала. • Координирование усилий по накоплению биотехнологической информации по всему миру. 1.4 Тепловая карта В качестве примера, как может выглядеть визуализация результатов, на рис.4 представлена тепловая карта. Теплокарта — это графическое представление данных, где дополнительные переменные отображаются при помощи цвета. Биологические тепловые карты обычно используются в молекулярной биологии и медицине для представления данных по экспрессии множества генов в различных образцах, полученных, например, от разных пациентов или в разных условиях от одного пациента [5]. Обычно организована в виде таблицы, в которой цвет квадрата показывает уровень экспрессии, а столбцы и строки различные гены или образцы, иерархическая организация которых может быть изображена в виде дерева на полях таблицы [14]. 14 Рис. 4. Тепловая карта 1.5 Генная онтология Генная онтология – это биоинформатический проект, посвященный созданию унифицированной терминологии для аннотации генов и генных продуктов всех биологических видов [21]. Данные генной онтологии разделяются на три области: молекулярные функции, биологические процессы и клеточные компоненты. Каждый термин в «Генной онтологии» имеет ряд атрибутов: уникальный цифровой идентификатор, название, словарь, к которому термин принадлежит, и определение [15]. Термины могут иметь синонимы, которые делятся на точно соответствующие значению термина, более широкие, более узкие и имеющие некоторое отношение к термину. Также могут присутствовать такие атрибуты, как ссылки на источники, на другие базы данных и комментарии по значению и использованию термина. 15 Генную онтологию можно представить в виде дерева (см. рис.5), которое состоит из трёх поддеревьев, соответственно областям: молекулярные функции, биологические процессы и клеточные компоненты. Рис. 5. Дерево генной онтологии Онтология построена по принципу ориентированного ациклического графа: каждый термин связан с одним или несколькими другими терминами через различного типа отношения [22]. Выделяют следующие типы отношений: «A is a B» — A является частным случаем B, «A part of B» — A является частью B, «B has part A» — B включает A, «A regulates B» — А регулирует В, «A positively regulates B» — А позитивно регулирует В, «A negatively regulates B» — А негативно регулирует В, «A occurs in B» — А встречается при В. Пример термина GO: id: GO:0043417 16 name: negative regulation of skeletal muscle tissue regeneration namespace: biological_process def: "Any process that stops, prevents, or reduces the frequency, rate or extent of skeletal muscle regeneration." [GOC:jl] synonym: "down regulation of skeletal muscle regeneration" EXACT [] synonym: "down-regulation of skeletal muscle regeneration" EXACT [] synonym: "downregulation of skeletal muscle regeneration" EXACT [] synonym: "inhibition of skeletal muscle regeneration" NARROW [] is_a: GO:0043416 ! regulation of skeletal muscle tissue regeneration is_a: GO:0048640 ! negative regulation of developmental growth relationship: negatively_regulates GO:0043403 ! skeletal muscle tissue regeneration В базу данных «Генной Онтологии» постоянно вносятся изменения и дополнения как участниками проекта GO, так и другими исследователями и аннотаторами [23]. Предлагаемые поправки проверяются редакторами онтологии и применяются, где необходимо. Для загрузки в различных форматах, а также для доступа онлайн, онтология доступна на ресурсе http://geneontology.org/. Также есть возможность получить информацию по конкретному гену. Для примера, на рис.6 представлена информация с сайта генной онтологии для гена YAL022C. 17 Рис. 6. Результат обращения по коду гена на сайте генной онтологии 18 1.6 Актуальные задачи В настоящее время проводится большое количество экспериментов, много данных об уровнях экспрессии генов находятся в открытом доступе. Также в открытом доступе находятся и данные генной онтологии. Работа с такими объёмами данных обычно предполагает наличие у исследователя большой вычислительной мощности, а также может потребоваться значительное количество свободного места на диске. Исходя из этого, можно сформулировать основные актуальные задачи для разрабатываемой системы: Проектирование архитектуры веб-сервиса Организация анализа данных с помощью методов Data Mining Исследование структуры генной онтологии и разработка алгоритмов обработки информации, извлеченной из генной онтологии Проектирование и разработка визуализации результатов анализа Тестирование веб-сервиса в облачной инфраструктуре Windows Azure 19 2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 2.1 Методы Data Mining Для обработки, анализа и интерпретации данных в биоинформатике используют технологию Data Mining. Применяются различные методы интеллектуального анализа данных, такие как деревья решений, метод k ближайших соседей, генные алгоритмы, нейронные сети и т.д. 2.1.1 Дерево решений Метод деревьев решений (decision trees) является одним из наиболее популярных методов решения задач классификации и прогнозирования. Иногда этот метод Data Mining также называют деревьями решающих правил, деревьями классификации и регрессии. Как видно из последнего названия, при помощи данного метода решаются задачи классификации и прогнозирования. Если зависимая, т.е. целевая переменная принимает дискретные значения, при помощи метода дерева решений решается задача классификации. Если же зависимая переменная принимает непрерывные значения, то дерево решений устанавливает зависимость этой переменной от независимых переменных, т.е. решает задачу численного прогнозирования. Впервые деревья решений были предложены Ховилендом и Хантом (Hoveland, Hunt) в конце 50-х годов прошлого века. Самая ранняя и известная работа Ханта и др., в которой излагается суть деревьев решений - "Эксперименты в индукции" ("Experiments in Induction") - была опубликована в 1966 году. В наиболее простом виде дерево решений - это способ представления правил в иерархической, последовательной структуре. Основа такой структуры - ответы "Да" или "Нет" на ряд вопросов [8]. Классификационная модель, представленная в виде дерева решений, является интуитивной и упрощает понимание решаемой задачи. Результат работы алгоритмов конструирования деревьев решений, в отличие, например, от 20 нейронных сетей, представляющих собой "черные ящики", легко интерпретируется пользователем. Это свойство деревьев решений не только важно при отнесении к определенному классу нового объекта, но и полезно при интерпретации модели классификации в целом. Дерево решений позволяет понять и объяснить, почему конкретный объект относится к тому или иному классу. При такой относительно простой схеме классификационной модели экспертам предметной области проще согласиться или не согласиться с результатами работы алгоритма, а также сделать определённые выводы, которые могут помочь в дальнейшем изучении вопроса. Программист, в свою очередь, не являющийся зачастую экспертом в биологии, сможет скорректировать работу алгоритма согласно замечаниям эксперта. Качество работы рассмотренного метода деревьев решений зависит как от выбора алгоритма, так и от набора исследуемых данных. Несмотря на все преимущества данного метода, следует помнить, что для того, чтобы построить качественную модель, необходимо понимать природу взаимосвязи между зависимыми и независимыми переменными и подготовить достаточный набор данных. 2.1.2 Метод k ближайших соседей Следует сразу отметить, что метод "ближайшего соседа" ("nearest neighbour") относится к классу методов, работа которых основывается на хранении данных в памяти для сравнения с новыми элементами. При появлении новой записи для прогнозирования находятся отклонения между этой записью и подобными наборами данных, и наиболее подобная (или ближний сосед) идентифицируется. Например, при рассмотрении нового клиента банка, его атрибуты сравниваются со всеми существующими клиентами данного банка (доход, возраст и т.д.). Множество "ближайших соседей" потенциального клиента банка выбирается на основании ближайшего значения дохода, возраста и т.д. [10] При таком подходе используется термин "k-ближайший сосед" ("k-nearest neighbour"). Термин означает, что выбирается k "верхних" (ближайших) соседей для их рассмотрения в качестве множества "ближайших соседей". Поскольку не 21 всегда удобно хранить все данные, иногда хранится только множество "типичных" случаев. В таком случае используемый метод называют рассуждением по аналогии (Case Based Reasoning, CBR), рассуждением на основе аналогичных случаев, рассуждением по прецедентам. Прецедент - это описание ситуации в сочетании с подробным указанием действий, предпринимаемых в данной ситуации. Преимущества: Простота использования полученных результатов. Решения не уникальны для конкретной ситуации, возможно их ис- пользование для других случаев. Целью поиска является не гарантированно верное решение, а лучшее из возможных. Недостатки: Данный метод не создает каких-либо моделей или правил, обобщаю- щих предыдущий опыт, - в выборе решения они основываются на всем массиве доступных исторических данных, поэтому невозможно сказать, на каком основании строятся ответы. Существует сложность выбора меры "близости" (метрики). От этой меры главным образом зависит объем множества записей, которые нужно хранить в памяти для достижения удовлетворительной классификации или прогноза. Также существует высокая зависимость результатов классификации от выбранной метрики. При использовании метода возникает необходимость полного пере- бора обучающей выборки при распознавании, следствие этого - вычислительная трудоемкость. Типичные задачи данного метода - это задачи небольшой размерно- сти по количеству классов и переменных. 22 2.1.3 Нейронные сети Идея нейронных сетей родилась в рамках теории искусственного интеллекта, в результате попыток имитировать способность биологических нервных систем обучаться и исправлять ошибки. Нейронные сети (Neural Networks) - это модели биологических нейронных сетей мозга, в которых нейроны имитируются относительно простыми, часто однотипными, элементами (искусственными нейронами) [4]. Нейронная сеть может быть представлена направленным графом с взвешенными связями, в котором искусственные нейроны являются вершинами, а синаптические связи - дугами. Нейронные сети широко используются для решения разнообразных задач, в том числе в биоинформатике. Модели нейронных сетей могут быть программного и аппаратного исполнения. Если говорить простым языком, слоистая нейронная сеть представляет собой совокупность нейронов, которые составляют слои. В каждом слое нейроны между собой никак не связаны, но связаны с нейронами предыдущего и следующего слоев. Информация поступает с первого на второй слой, со второго - на третий и т.д. 2.2 Связь результатов с данными генной онтологии 2.2.1 Обзор существующих методик В 2008 году Кристиан Оваска, Марко Лааксо и Сампса Хотенеми опубликовали статью, в которой излагалась методика кластеризации генов на основе их биологической функциональности с использованием аннотаций генной онтологии. Неотъемлемой частью методики является способность быстро вычислять парные расстояния между схожими генными аннотациями [16]. Расстояние между генами G1 и G2 предложено вычислять по следующей формуле (2.1), используя Коэффициент Сёренсена: 𝑑(𝐺1, 𝐺2) = #(𝐺𝑂(𝐺1)Δ𝐺𝑂(𝐺2)) #(𝐺𝑂(𝐺1)∪𝐺𝑂(𝐺2))+#(𝐺𝑂(𝐺1)∩𝐺𝑂(𝐺2)) , (2.1) 23 где ∆ – симметрическая разность множеств; # – количество элементов в множестве; GO(Gi) – множество аннотаций генной онтологии для гена Gi. Сходство может быть определено по формуле (2.2): 1 − 𝑑(𝐺1, 𝐺2) (2.2) В терминах Каппа-статистики каждый ген представлен в виде бинарного вектора (g1, …, gN), причём gi = 1, если ген аннотирован с термином генной онтологии, и gi = 0, если нет. N – общее число всех рассматриваемых терминов генной онтологии. Сходство генов определяется по формуле (2.3): 𝐾𝐺1,𝐺2 = 𝑂𝐺1,𝐺2 −𝐴𝐺1,𝐺2 1−𝐴𝐺1,𝐺2 , (2.3) где 𝑶𝑮𝟏,𝑮𝟐 – наблюдаемая смежность терминов генной онтологии; 𝑨𝑮𝟏,𝑮𝟐 – случайная смежность. 𝑂𝐺1,𝐺2 – относительная частота согласования позиций двух бинарных векторов, то есть позиции, где оба принимают значение 0, либо оба принимают значение 1. 𝐴𝐺1,𝐺2 – ожидаемая относительная частота таких позиций, если двоичные векторы были случайными, принимая во внимание наблюдаемые вероятности появления нулей и единиц. 2.2.2 Алгоритм оценки близости генов по функциям Входные данные: I. Матрица экспрессии генов m x n, где m – число генов, n – число проб (табл. 2.1.). II. Дерево генной онтологии. 24 Таблица 2.1 genes\sa Матрица экспрессии генов s1 s2 s3 s4 … sn e1 … e1 mples g1 1 g2 e1 2 e2 g3 3 e2 2 1 e3 1 e1 4 e2 3 e3 2 e1 n e2 … 4 e3 3 e2 n e3 … 4 e3 n … … … … … … … gm e em e e … e m1 2 m3 m4 mn eij – экспрессия гена i на пробе j. Постановка задачи: Пусть после обработки таблицы экспрессий генов алгоритмом классификации(кластеризации) разбили набор генов по классам(кластерам). Есть гены, показавшие высокое изменения уровня экспрессии в одинаковых условиях. Следовательно, можно считать, что именно эти гены участвуют и влияют на рассматриваемый процесс. Нужно сопоставить результаты работы алгоритма с имеющимися данными генной онтологии. В результате работы алгоритма можно увидеть, какие функции, процессы, клетки и т.п. отвечают за рассматриваемый процесс (например, действие какого-либо яда на организм). Также результат покажет, насколько точно алгоритм классификации(кластеризации) отнёс рассматриваемые гены к тому или иному классу(кластеру). Если есть расхождения с данными генной онтологии, то эксперт может поставить под сомнение правильность алгоритма, либо данные генной онтологии (например, ранее было неизвестно, что некий ген (или даже набор генов) участвует в данном биологическом процессе). Описание алгоритма: 25 Рассмотрим алгоритм для пары самых «выдающихся» генов gk и gl. Для обработки большего числа генов нужно просто запустить алгоритм в цикле для каждой пары генов. Генная онтология устроена так, что для каждой ветки дерева можно узнать, какие гены находятся в этой ветке. Также один ген может находиться в нескольких ветках. Допустим, ген gk встречается в дереве онтологии m раз, обозначим это как gk1, gk2, … , gkm. Ген gl, соответственно: gl1, gl2, … , gln. Произведём цикл по всем генам gki, внутри этого цикла – цикл по всем генам glj. 1) Начинаем обход дерева, встаём в корневой узел 2) Если гены gki и glj оба находятся в текущем узле, то переходим к следующему узлу, содержащему gki и повторяем шаг 2. 3) Если гены в разных узлах, то присваиваем t = (глубина от текущего узла до glj) + (глубина от текущего узла до gki - 1). Записываем в результирующий массив расстояний res[i;j] = t. В результирующий массив узлов записываем f[i;j] = последний общий узел для генов gki и glj. 4) Если остались ещё не рассмотренные гены gl в дереве, j++, перехо- дим на шаг 1. 5) Иначе, если остались ещё не рассмотренные гены gk: j=1, i++, пере- ходи на шаг 1. 6) Иначе заканчиваем алгоритм, выводим результат. Пример результирующего массива res представлен в таблице 2.2: Таблица 2.2 Массив res gk1 gk2 gk3 gk4 gl1 2 6 7 3 gl2 89 7 1 4 gl3 150 0 51 14 gl4 72 12 2 23 gl5 1 41 31 78 26 Эти числа показывают относительную меру близости между генами в дереве генной онтологии. Подсвеченные зелёным ячейки показали, в каких местах генной онтологии выбранные гены находятся наиболее близко, соответственно, отвечают за схожие функции, или участвуют в схожих процессах. В данном случае «близкими» генами считаются те, которые находятся на расстоянии меньше 3. Для того, чтобы узнать, на какие узлы генной онтологии стоит обратить внимание, нужно вывести элементы массива f: f[1;1], f[2;3], f[3;2], f[1;5], f[3;4]. Блок-схема алгоритма представлена рис.7. 27 Рис. 7. Блок-схема алгоритма 28 Пример работы: Упрощенное для примера дерево онтологии представлено на рис. 8. Имеются гены g1 и g2, которые встречаются в условном дереве онтологии 1 и 3 раза соответственно. Рис. 8. Исходное дерево 1) Обрабатываем пару генов g11, g21. На рис. 9. Показано, как алгоритм начинает движение по дереву с корневого узла root. На данном шаге текущие гены всё ещё находятся в одной ветке, относительно текущего расположения. 29 Рис. 9. Иллюстрация второго шага алгоритма 2) Перемещаемся в ветку, в которой находятся оба рассматриваемых гена, совершается проверка, аналогичная шагу 1 (см. рис.10). Рис. 10. Иллюстрация третьего шага алгоритма 30 3) Далее конец дерева, нужно запомнить результаты и переходить к следующей паре генов. t = 0; res[1,1] = 0; f[1,1] = d 4) Аналогично обрабатываются гены g11, g22 (см. рис. 11) Рис. 11. Иллюстрация четвёртого шага алгоритма 31 5) Рис. 12. Иллюстрация пятого шага алгоритма 6) t = 1 + 1 – 1 = 1; res[1;2] = 1; f[1;2] = b 7) Обрабатывается последняя пара генов g11, g23 Рис. 13. Иллюстрация шестого шага алгоритма 8) t = 1 +2 – 1 = 2; res[1;2] = 2; f[1;2] = root 9) Выводим результаты (табл. 2.3): 32 Таблица 2.3 Результаты работы алгоритма g21 g22 g23 g11 0 1 2 f d b root Из показателей в результирующей таблице следует, что специалисту следует обратить внимание на то, к какому биологическому процессу, какой молекулярной функции или к каким клеточным компонентам относится ветка d. Реализация алгоритма на языке программирования R представлена в приложении 1. 33 3. РЕАЛИЗАЦИЯ 3.1 Проектирование архитектуры системы Работа направлена на проектирование и разработку веб-сервиса анализа и визуализации геномных данных. Проект сервиса представляет из себя пользовательский веб-интерфейс для работы с данными и инструментами. Система имеет модульную структуру (см. рис. 14), в которую входят: модуль загрузки собственных данных, модуль загрузки собственного функционала, модуль облачных вычислений, набор инструментов анализа данных, модуль для работы с данными из открытых источников. Веб-интерфейс представляет из себя вебсайт, на котором расположены элементы управления сервисом. Пользователь может получить данные из открытых баз, либо загрузить собственные. Сбор и анализ данных осуществляется с помощью методов Data Mining. Также пользователю предоставлена возможность подгрузить собственный инструмент или модифицировать существующий критерий, если это необходимо для исследования. Рис. 14. Схема проекта системы Облачные вычисления — информационно-технологическая концепция, подразумевающая обеспечение повсеместного и удобного сетевого доступа по требованию к общему пулу конфигурируемых вычислительных ресурсов (например, сетям передачи данных, серверам, устройствам хранения данных, приложениям и сервисам — как вместе, так и по отдельности), которые могут 34 быть оперативно предоставлены и освобождены с минимальными эксплуатационными затратами или обращениями к провайдеру [17]. В системе представлен набор основных алгоритмов классификации и кластеризации Data Mining, которые можно применять к загруженным данным. С помощью этих алгоритмов производится кластеризация и классификация данных. Далее пользователь сможет оперировать полученными результатами, например, выбрать нужный набор генов, составить тепловую карту, собрать общую статистику и т.п., в зависимости от преследуемой цели. Например, методом k-средних можно разбить данные на заданное число кластеров, дерево решений позволяет получить модель классификации, метод k-ближайших соседей автоматически относит элементы к известным классам [6]. По полученным данным строится тепловая карта с помощью алгоритма на языке R. Также для системы разработан алгоритм оценки результатов классификации/кластеризации, который анализирует полученные группы генов, используя информацию из генной онтологии. Структура модуля обработки данных представлена на рис. 15. Рис.15. Структура модуля обработки 35 3.2 Реализация алгоритмов Для реализации алгоритмов работы с геномными данными был выбран язык R, так как он больше всего подходит для обработки подобных данных и задач биоинформатики. В нём присутствуют библиотеки для работы с данными о генах, для отрисовки теплокарт, также есть набор готовых алгоритмов Data Mining. R поддерживает широкий спектр статистических и численных методов и обладает хорошей расширяемостью с помощью пакетов. Пакеты представляют собой библиотеки для работы специфических функций или специальных областей применения. В базовую поставку R включен основной набор пакетов, а всего по состоянию на 2013 год доступно более 4000 пакетов [18]. 3.2.1 Алгоритмы Data Mining В данном разделе приведено описание используемого в системе алгоритма на языке R на примере алгоритма кластеризации методом k-means. Для реализации алгоритма кластеризации данных k-means в системе используется функция из стандартной библиотеки языка R kmeans {stats}. Описание: функция выполняет кластеризацию матрицы данных методом k-means. Использование: kmeans (x, centers, iter.max = 10, nstart = 1, algorithm = c("Hartigan-Wong", "Lloyd", "Forgy", "MacQueen"), trace=FALSE) Аргументы функции: x – матрица числовых данных или объект, который может быть принудительно преобразован в такую матрицу (например, числовой вектор или структура данных со всеми числовыми столбцами). centers – любое число кластеров или набор различных центров кла- стеризации. Если значением является число, в качестве центров кластеризации выбирается случайный набор различных строк в матрице x. 36 iter.max – максимально допустимое число итераций. nstart – если параметр centers является числом, то указывает, сколько случайных наборов центров кластеризации должно быть выбрано. algorithm – строка (может быть сокращением). trace - логическое значение или целое число, используется только для одного стандартного метода («Hartigan-Wong»): если число положительное (или логическое значение TRUE), то генерируется трассировочная информация по ходу выполнения алгоритма. Возвращаемое значение: Функция возвращает объект класса «kmeans», для которого присутствуют методы print и fitted. Ниже представлен список параметров для объекта: cluster – вектор целых значений от 1 до k с указанием кластера для каждой точки; centers – матрица центров кластера; totss – общая сумма квадратов; withinss – вектор сумм квадратов в пределах кластера, один компо- нент на кластер; tot.withinss – полная сумма квадратов в пределах кластера; betweens – сумма квадратов между кластерами; size – число точек для каждого кластера; iter – число итераций; ifault – число, индикатор возможных проблем в алгоритме (для спе- циалистов) [19]. 37 3.2.2 Алгоритмы визуализации В данном разделе приведено описание используемого в системе алгоритма визуализации на языке R на примере алгоритма построения тепловой карты. Для реализации построения тепловой карты в системе используется функция heatmap {stats}. Описание: Тепловая карта – это псевдоцветное изображение с дендрограммой (деревом), построенной слева и сверху от изображения. Использование: heatmap (x, Rowv = NULL, Colv = if(symm)"Rowv" else NULL, distfun = dist, hclustfun = hclust, reorderfun = function(d, w) reorder(d, w), add.expr, symm = FALSE, revC = identical(Colv, "Rowv"), scale = c("row", "column", "none"), na.rm = TRUE, margins = c(5, 5), ColSideColors, RowSideColors, cexRow = 0.2 + 1/log10(nr), cexCol = 0.2 + 1/log10(nc), labRow = NULL, labCol = NULL, main = NULL, xlab = NULL, ylab = NULL, keep.dendro = FALSE, verbose = getOption("verbose"), ...) Аргументы функции: x – числовая матрица значений, которые нужно отобразить на теп- ловой карте; Rowv – определяет, как должна быть упорядочена дендрограмма по строкам; Colv – определяет, как должна быть упорядочена дендрограмма по столбцам; distfun – функция, которая используется для вычисления расстояния между столбцами и строками; 38 hclustfun – функция для организации иерархической кластеризации, когда Rowv и Colv не являются дендрограммами; reorderfun – function (d, w) дендрограммы и веса для упорядочива- ния деревьев для столбцов и строк; add.expr – выражение, которое будет оцениваться после постройки изображения; symm – логический индикатор, показывающий, должна ли матрица x считываться симметрично; revC – логический индикатор, показывающий, нужно ли считывать столбцы в обратном порядке для построения изображения; scale – строковый индикатор, показывающий, должны ли значения центрироваться и масштабироваться; na.rm – логический индикатор, показывающий, нужно ли учитывать ячейки со значением NA; margins – числовой вектор длины 2, содержащий отступы для назва- ний столбца и строки, соответственно; ColSideColors – (необязательно) строковый вектор длины ncol(x), содержащий названия цветов для горизонтальной полоски, которая может использоваться для аннотации столбцов x; RowSideColors – (необязательно) строковый вектор длины nrow(x), содержащий названия цветов для вертикальной полоски, которая может использоваться для аннотации строк x; cexRow, cexCol – положительные числа, используемые для подписи осей строк или столбцов; labRow, labCol – строковые векторы, содержащие используемые подписи строк и столбцов; main, xlab, ylab – главный заголовок, заголовки осей x и y; keep.dendro – логический индикатор, показывающий, должна ли вы- водиться дендрограмма как часть результата; 39 verbose – логический индикатор, показывающий, нужно ли печатать информацию; … - дополнительные аргументы, относящиеся к изображению. Возвращаемое значение: По сути, функция не возвращает значения, но в результате имеется изображение (тепловая карта) со следующими компонентами: rowInd – индекс строки перестановки вектора; colInd – индекс столбца перестановки вектора; Rowv – строковая дендрограмма; Colv – дендрограмма столбцов [20]. Код реализации алгоритма визуализации в системе приведён в приложении 2. 3.3 Интерфейс Веб-интерфейс системы реализован с помощью технологий PHP, Javascript и HTML. На рис. 16 представлен внешний вид экрана с результатами работы системы. Рис. 16. Экран с результатами работы системы 40 Интерфейс предусматривает два сценария, по которым пользователь загружает данные для исследования на сервер: через форму загрузки файлов и по ссылке на источник. В обоих случаях пользователь может указать диапазон строк, которые требуется обработать, иначе в файле автоматически определяется область, которая содержит непосредственно таблицу экспрессии генов. На данном этапе реализации система поддерживает текстовый формат таблицы, в которой разделителями между столбцами являются символы табуляции, а новая строка определяется по символу переноса строки. Также поддерживаются таблицы формата XLS. Если формат загружаемых данных не поддерживается, пользователь получает сообщение об ошибке. В первом случае, когда файл загружается пользователем через форму загрузки, POST-запрос на сервер, содержащий непосредственно файл и дополнительные параметры. В данной ситуации объём загружаемых данных ограничен возможностями и настройкой сервера. После загрузки файла данных на сервер, данные из файла помещаются в оперативную память и, при необходимости, конвертируются в другие форматы данных (например, некоторые из алгоритмов визуализации работают с данными в формате JSON). Реализация преобразования загруженного xls файла в формат JSON представлена в приложении 4. Также на сервере представлена возможность использования исследователем собственных скриптов на языке R для обработки данных. Пользователь помещает текст скрипта в форму, которая сохраняет файл с R-скриптом для дальнейшего выполнения на сервере. В целях безопасности все функции, присутствующие в пользовательском скрипте проверяются по специальному словарю на предмет небезопасных, чтобы злоумышленник не смог выполнить скрипт, который выведет сервер из строя или совершит другое нежелательное и непредусмотренное работой системы действие. Далее представлен PHP код, который выполняет проверку кода на небезопасные функции: 41 $lines = file("security.txt"); $total = count($lines); $j = 0; for ($i=0;$i < $total;$i++) { $line = trim($lines[$i]); if (!strrchr($line,"#")) { $j = $j + 1; if (strrchr($line,"|")) { $terms = explode("|",$line); $bad_0 = trim($terms[0]); $bad_op = trim($terms[1]); $bad_cmd[$j]= $bad_0; $bad_option[$bad_0] = $bad_op; } else $bad_cmd[$j]= $line; } else continue; } function check_bad($text,$j) 42 { global $bad_cmd,$bad_option; $is_bad = 0; foreach ($bad_cmd as $bad) { $bad1 = str_replace(".","\.",$bad); if (ereg($bad1,$text)) { if (strrchr($bad,".") && (strlen($bad) > 3)) $is_bad = 1; else { // get remaining string after targer key word $terms = explode($bad,$text); // get rid of spaces before a possible following "(" $term1 = ltrim($terms[1]); if ($bad_option[$bad] != "") { if (eregi($bad_option[$bad],$term1)) // if (strstr($term1,$bad_option[$bad])) $is_bad = 1; } else { if (substr($term1,0,1) == "(") $is_bad = 1; 43 } } if ($is_bad == 1) { if ($bad_option[$bad] != "") { echo "<font color=red>$bad</font> function"; echo " with <font color=red>".$bad_option[$bad]."</font>"; echo " option is NOT permitted "; } else echo "<font color=red>$bad</font> function is NOT permitted "; echo "in Line <font color=red>$j</font><BR>"; echo "<blockquote>$text</blockquote>"; echo "Program Stopped!<BR>"; exit; } } } Словарь нежелательных названий функций содержится в файле security.txt, и может дополняться по необходимости. Код реализации функционала добавления и выполнения сторонних скриптов представлен в приложении 3. 44 3.4 Тестирование системы в облачной инфраструктуре Microsoft Azure Разработанная система масштабируема, и может быть настолько эффективной, насколько позволяют имеющиеся ресурсы. На слайде представлен пример схемы проекта в системе Microsoft Azure. Данная система поддерживает выполнение скриптов на языке R, а также позволяет создать веб-приложение. Также имеется возможность хранить данные на одной машине, а производить все необходимые вычисления на другой (или нескольких). Microsoft Azure — название облачной платформы от Microsoft. Предоставляет возможность разработки и выполнения приложений и хранения данных на серверах, расположенных в распределенных дата-центрах. Основные особенности данной модели: оплата только потребленных ресурсов; общая, многопоточная структура вычислений; абстракция от инфраструктуры. В основе работы Microsoft Azure лежит запуск виртуальной машины для каждого экземпляра приложения. Разработчик определяет необходимый объем для хранения данных и требуемые вычислительные мощности (количество виртуальных машин), после чего платформа предоставляет соответствующие ресурсы. Когда первоначальные потребности в ресурсах изменяются, в соответствии с новым запросом заказчика платформа выделяет под приложение дополнительные или сокращает неиспользуемые ресурсы дата-центра. На рис. 17 представлена схема реализации масштабирование в интерфейсе Microsoft Azure. В блок облачных вычислений помещается программная часть проекта (алгоритмы Data Mining, алгоритмы визуализации и т.д.), в облачном хранилище находятся обрабатываемые данные, веб-интерфейс отвечает за связь с пользователем. 45 Рис. 17. Схема реализации в Microsoft Azure Также, в интерфейсе Microsoft Azure присутствует сервис Machine Learning, позволяющий создавать модели кластеризации/классификации, выполнять R скрипты. Machine Learning подключается к веб-сервису, тем самым имеется возможность получать данные извне и передавать результаты на веб-сайт, где они интерпретируются нужным образом. На рис. 18 представлена схема реализации проекта в сервисе Machine Learning. 46 Рис. 18. Схема реализации проекта в Machine Learning 47 4. ПОЛУЧЕННЫЕ РЕЗУЛЬТАТЫ Для проверки работы системы использовались наборы данных из открытого источника NCBI, доступного по следующей ссылке: http://www.ncbi.nlm.nih.gov/sites/GDSbrowser. На данном сайте для загрузки доступны таблицы экспрессии генов с подробными описаниями проводимых экспериментов. Данные представлены в виде текстовой таблицы, где в роли разделителей для столбцов выступают символы табуляции, а в роли разделителей строк – символ перевода строки. На рис. 19 представлен фрагмент этой таблицы, открытый в текстовом редакторе. Рис. 19. Фрагмент текстовой таблицы экспрессии генов Описание эксперимента включает в себя: Название эксперимента Краткое текстовое описание Организм, гены которого изучались в ходе эксперимента 48 Платформа (чип, датчик), который регистрировал уровень экспрес- Ссылки на ресурсы, в которых упоминаются данные этого экспери- Количество произведённых проб Дата публикации сии мента На рис. 20 представлен пример описания эксперимента под записью GDS687. Рис.20. Пример описания эксперимента Далее данные были загружены на сервер и обработаны алгоритмом кластеризации k-means. По кластеризованным данным была построена тепловая карта (см. рис. 21). 49 Рис. 21. Тепловая карта На рисунке можно увидеть, что в ходе эксперимента было произведено 3 пробы (отображены на тепловой карте столбцами). По горизонтали расположены гены и их уровни экспрессии, показанные цветом, для каждой пробы. С левой стороны тепловой карты построено иерархическое дерево, полученное методом иерархической кластеризации. Уровни экспрессии отранжированы от низких к высоким. Высокие уровни экспрессии показаны фиолетовым цветом, низкие – зелёным. Черным цветом, соответственно, показаны гены со средним уровнем экспрессии. Серым цветом обозначены те гены, для которых нет данных по данной пробе. Также при помощи алгоритма оценки близости генов по функциям, применённому для самых вероятно информативных генов, выводится информация о том, какие молекулярные функции, биологические процессы и клеточные компоненты скорее всего характерны для данного эксперимента (см. рис.22). 50 Рис. 22. Вывод характерных терминов генной онтологии Также для каждого термина строится дерево категорий генной онтологии, таким образом исследователь может видеть полную картину затрагиваемых функций организма при исследуемом воздействии. Возможность посмотреть информацию по отдельным генам реализована на отдельных экранах (см. рис. 23, рис. 24). 51 Рис.23. Информация по гену FUN26 Рис.24. Информация о терминах генной онтологии, в которых участвует ген FUN26 52 ЗАКЛЮЧЕНИЕ В соответствии с поставленными задачами были получены следующие результаты: 1. Была спроектирована архитектура веб-сервиса анализа и визуализации геномных данных. 2. Организован анализ данных генной экспрессии с помощью методов Data Mining. 4. Исследована структура генной онтологии и разработан алгоритм обработки информации, извлеченной из генной онтологии. 5. Спроектирована и разработана визуализация результатов анализа. 6. Веб-сервис протестирован в облачной инфраструктуре Windows Azure. 53 СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 1. Альбертс, Б., Молекулярная биология клетки: в трех томах. - Москва: Мир, 1994. – 539 с. 2. Браун, Т.А. Геномы. - М.-Ижевск: Институт компьютерных исследований, 2011. – 944 с. 3. Журавлев, Ю.И. Распознавание. Математические методы. Программная система. Практические применения./Ю.И. Журавлев, В.В. Рязанов, О.В. Сенько - М.: Фазис, 2006. – 159 с. 4. Круглов, В.В. Искусственные нейронные сети. Теория и практика./В.В. Круглов, В.В. Борисов - М.: Горячая линия, 2001. — 382 с. 5. Леск, А.М. Введение в биоинформатику. - Бином. Лаборатория знаний, 2013. – 320 с. 6. Larose, D.T. Discovering knowledge in data. - Wiley-Interscience Hoboken, 2005. – 237 p. 7. Pevsner, J. Bioinformatics and Functional Genomics. - Wiley-Interscience Ho- boken – 2013. – 792 p. 8. Quinlan, J. R. Induction of Decision Trees. Machine Learning 1. - Kluwer Aca- demic Publishers, 1986. – P. 81-106. 9. Baraniak, P.R. Spatial control of gene expression within a scaffold by localized inducer release: [Электронный ресурс] – (https://www.ncbi.nlm.nih.gov/pubmed/21269687). Проверено 03.06.2015. 10. Mortazavi, A. Mapping and quantifying mammalian transcriptomes by RNA- Seq: [Электронный ресурс] – (https://www.ncbi.nlm.nih.gov/pubmed/18516045). Проверено 03.06.2015. 11. L. Trapnell, C. TopHat: discovering splice junctions with RNA-Seq./C. Trapnell, Pachter, S.L. Salzberg: [Электронный ресурс] – (https://www.ncbi.nlm.nih.gov/pubmed/19289445). Проверено 03.06.2015. 12. Kulesh, D.A. Identification of interferon-modulated proliferation-related cDNA sequences./D.A. Kulesh, D.R. Clive, D.S. Zarlenga, J.J. Greene: [Электронный ресурс] – (https://www.ncbi.nlm.nih.gov/pubmed/2446323). Проверено 03.06.2015. 54 13. GenBank [Электронный Statistics: ресурс] – (http://www.ncbi.nlm.nih.gov/genbank/statistics). Проверено 03.06.2015. 14. Borland, D. Rainbow color map (still) considered harmful./D. Borland, M.R. Taylor: [Электронный ресурс] – (http://www.ncbi.nlm.nih.gov/pubmed/17388198). Проверено 03.06.2015. 15. Plessis, L. The what, where, how and why of gene ontology--a primer for bioin- formaticians./L. Plessis, N. Skunca, C. Dessimoz: [Электронный ресурс] – (https://www.ncbi.nlm.nih.gov/pubmed/21330331). Проверено 03.06.2015. 16. Ovaska, K. Fast Gene Ontology based clustering for microarray experiments./K. Ovaska, M. Laakso, S. Hautaniemi: [Электронный ресурс] – (http://www.biodatamining.org/content/1/1/11). Проверено 03.06.2015. 17. Sokol, A.W. NIST Cloud Computing Standards Roadmap./A.W. Sokol, M.D. Hogan: [Электронный ресурс] – (http://www.nist.gov/manuscript-publicationsearch.cfm?pub_id=913661). Проверено 03.06.2015. 18. The Comprehensive R Archive Network: [Электронный ресурс] – (http://cran.gis-lab.info/). Проверено 03.06.2015. 19. K-Means Clustering: [Электронный ресурс] – (http://stat.ethz.ch/R-manual/R- devel/library/stats/html/kmeans.html). Проверено 03.06.2015. 20. Draw a Heat Map: [Электронный ресурс] – (http://stat.ethz.ch/R-manual/R- devel/library/stats/html/heatmap.html). Проверено 03.06.2015. 21. Day-Richer, J. OBO-Edit--an ontology editor for biologists./J. Day-Richer, M.A. Harris, M. Haendel: [Электронный ресурс] – (http://www.ncbi.nlm.nih.gov/pubmed/17545183). Проверено 03.06.2015. 22. Simeoni, O. Tracking Global Gene Expression Response in T Cell Differentia- tion./O. Simeoni, V. Piras, M. Tomita: [Электронный ресурс] – (http://www.ncbi.nlm.nih.gov/pubmed/26028587). Проверено 03.06.2015. 23. Yan, M. Modulation of Gene Expression by Polymer Nanocapsule Delivery of DNA Cassettes Encoding Small RNAs./M. Yan, J. Wen: [Электронный ресурс] – (http://www.ncbi.nlm.nih.gov/pubmed/26035832). Проверено 03.06.2015. 55 24. Ooya, K. Identification and analysis of the resorcinomycin biosynthetic gene cluster./K. Ooya, Y. Ogasawara, M. Noike: [Электронный ресурс] – (http://www.ncbi.nlm.nih.gov/pubmed/26034896). Проверено 03.06.2015. 25. Sun, W. Normalization of relative and incomplete temporal expressions in clin- ical narratives./W. Sun, A. Rumshisky, O. Uzuner: [Электронный ресурс] – (http://www.ncbi.nlm.nih.gov/pubmed/25868462). Проверено 03.06.2015. 56 ПРИЛОЖЕНИЕ 1 Ниже представлена реализация алгоритма оценки близости генов по функциям на языке программирования R. for (i in 0:n){ level <- 0 for(j in 0:m){ while(GOfunc(level, gk[i], gl[j]) | level < max_h){ if(!GOfunc(level, gk[i], gl[j])){ t <- get_h(level, gk[i]) + get_h(level, gl[j]) - 1 res[i, j] <- t f[i, j] <- get_GOfunc(level) t <- 0 } else level <- level + 1 } } } res f 57 ПРИЛОЖЕНИЕ 2 Реализация алгоритма визуализации. library(gapmap) set.seed(1234) x <- rnorm(10, mean=rep(1:5, each=2), sd=0.4) y <- rnorm(10, mean=rep(c(1,2), each=5), sd=0.4) dataFrame <- data.frame(x=x, y=y, row.names=c(1:10)) #calculate distance matrix. default is Euclidean distance distxy <- dist(dataFrame) #perform hierarchical clustering. default is complete linkage. hc <- hclust(distxy) dend <- as.dendrogram(hc) grey_scale =c("#333333", "#5C5C5C", "#757575", "#8A8A8A", "#9B9B9B", "#AAAAAA", "#B8B8B8", "#C5C5C5", "#D0D0D0", "#DBDBDB", "#E6E6E6") gapmap(m = as.matrix(distxy), d_row= rev(dend), d_col=dend, col = grey_scale) 58 ПРИЛОЖЕНИЕ 3 Реализация функционала добавления и выполнения сторонних скриптов. <? require "security.php"; // -------------------------------- Configuration // The temorary directory for generated files under current directory $temp_dir = "tmp"; // Unix system: $R_path = "/usr/lib/R/bin/R"; $R_options_1 = "BATCH --slave --no-save"; $R_options_2 = ""; $graphic = "bitmap"; $r_code = $_POST["r_code"]; // for Windows system: // // $R_path = "c:/R/rw1070/bin/Rterm.exe"; // or // $R_path = "c:\\R\\rw1070\\bin\\Rterm.exe"; // // $R_options_1 ="--quiet --no-restore --no-save < "; // $R_options_2 =" > "; // // $graphic = "jpeg"; // -------------------------------- end of Configuration 59 ?> <HTML> <HEAD> <TITLE>R_PHP</TITLE> </HEAD> <BODY> &nbsp;<P> <CENTER> <B><A href=index.html><FONT size=5>R_PHP_Online</FONT></A><FONT size=3>&nbsp; -- Online PHP CGI for R program</FONT><P> by <A HREF="mailto:[email protected]"><font size=2>Steve Chen</font></a> in <A HREF="http://www.stat.tku.edu.tw" target=_blank>Department of Statistics</A>, <A HREF="http://www.tku.edu.tw" target=_blank>TKU</A>, Taipei, Taiwan<p> <A href=doR.html>Input R code again</A></CENTER> <P> <TABLE align=center><TR><TD> <? function random_str($size) { $randoms = array( 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z ); 60 srand ((double) microtime() * 1000000); for($i = 1; $i <= $size; $i++) $text .= $randoms[(rand(0,35))]; return $text; } function get_file_name($text) { // Unix : bitmap(file="something.jpg") // Windows: jpeg(file="something.jpg") $temp1 = explode("file=\"",$text); $fname = explode("\"",$temp1[1]); return $fname[0]; } if (!$r_code || $r_code == "") { echo "<font color=red>No program code enterred!</font><p>"; echo "</TD></TR></TABLE></BODY></HTML>"; exit; } $old_code = explode(chr(10),$r_code); $total = count($old_code); $new_code = ""; 61 for ($i=0;$i < $total; $i++) { // replace original graphic file name with a random name // Windows system if (ereg("jpeg",$old_code[$i])) // if (ereg("bitmap",$old_code[$i])) $j = $i+1; $old = $old_code[$i]; check_bad($old,$j); if (ereg("$graphic",$old_code[$i])) { $gfile_name = get_file_name($old_code[$i]); $gfile_name = random_str(4).$gfile_name; // $new_code .= "bitmap(file=\"$temp_dir/$gfile_name\") \n"; $new_code .= $graphic."(file=\"$temp_dir/$gfile_name\") \n"; } else $new_code .= $old_code[$i]."\n"; } $r_name = random_str(10); $r_input = $temp_dir."/".$r_name.".R"; $r_output = $temp_dir."/".$r_name.".Rout"; $fp = fopen($r_input,"w"); 62 fwrite($fp,$new_code); fclose($fp); // $rsoft = "/usr/local/lib/R/bin/R"; $rsoft = $R_path; // Unix : // R CMD BATCH --slave --no-save $r_input $r_output // // Windows : // Rterm.exe --quiet --no-restore --no-save < test.R > test.Rout // $command = "$rsoft CMD BATCH --slave --no-save $r_input $r_output"; $command = "$rsoft CMD $R_options_1 $r_input $R_options_2 $r_output"; $exec_result = exec($command,$result,$error); $lines = file($r_output); $total = count($lines); if ($error) { echo "<font color=red>Error: Something wrong! Please check output!</font>".$error; echo "<HR>Output of R program : <P><HR>"; for ($i=0;$i < $total;$i++) echo $lines[$i]."<BR>"; exit; 63 } echo "Output of R program:<P><HR>"; $to_do_plot = 0; for ($i=0;$i < $total;$i++) { $line = $lines[$i]; // Unix : if (ereg("bitmap",$line)) // Windows: if (ereg("jpeg",$line)) if (ereg("bitmap",$line)) { echo $line."<BR>"; $gfile_name = get_file_name($line); $to_do_plot = 1; echo "<P><IMG SRC=\"$gfile_name\"><P>"; } else if (ereg("dev.off",$line)) { echo $line."<BR>"; if ($to_do_plot == 1) { echo "<P><IMG SRC=\"$gfile_name\"><P>"; $to_do_plot = 0; } } 64 else if (ereg("null device",$line)) continue; else if (ereg(" 1",$line)) continue; else echo $line."<BR>"; } ?> </TD><TR></TABLE> </BODY> </HTML> 65 ПРИЛОЖЕНИЕ 4 Преобразование данных из xls таблицы в формат JSON. <?php ini_set("memory_limit", "1024M"); ?> <form action="" method="post" enctype="multipart/form-data"> <input type="file" name="filename"><br> <input type="submit" value="Загрузить"><br> </form> <? // Проверяем загружен ли файл if(is_uploaded_file($_FILES["filename"]["tmp_name"])) { // Если файл загружен успешно, перемещаем его // из временной директории в конечную $filename = date("dmYGis").$_FILES['filename']['name']; move_uploaded_file($_FILES["filename"]["tmp_name"], "data/".$_FILES['file- name']['name']); rename("data/".$_FILES['filename']['name'], "data/json_".$filename); require_once ('Excel/excel_reader2.php'); $data = new Spreadsheet_Excel_Reader(); $data->setOutputEncoding('UTF8'); $data->read("data/json_".$filename); $out = "var heatmap = [\n"; for ($i = 2; $i <= max($data->sheets[0]['numRows'], 10000); $i++) { $t = ""; for($j = 2; $j < $data->sheets[0]['numCols']; $j++) 66 if(is_numeric($data->sheets[0]['cells'][$i][$j])) $t .= round($data- >sheets[0]['cells'][$i][$j]).", "; if(is_numeric($data->sheets[0]['cells'][$i][$data->sheets[0]['numCols']])) $t .= round($data->sheets[0]['cells'][$i][$data->sheets[0]['numCols']]); if($t!="") $t = "[".$t."],\n"; $out .= $t; } $out = trim($out, ",\n") . "\n];"; file_put_contents("data/expr.js", $out); ?> <script> document.location.href = 'index.php'; </script> <? } ?> <br /> 67 Заключительный лист работы Магистерская диссертация выполнена мною самостоятельно. Использованные в работе материалы и концепции из опубликованной научной литературы и других источников имеют ссылки на них. Список использованной литературы (источников) 25 наименований. Работа выполнена на 52 листах. Приложения к работе на 11 листах. Один экземпляр сдан на кафедру. Подпись______________/_________________/ (фамилия, инициалы) Дата «______» _______________ 2015 г.