Что можно успеть за 48 часов? Интервью с победителем хакатона по биоинформатике BioHack 2019

    27 марта в Санкт-Петербурге стартует четвёртый хакатон по биоинформатике BioHack 2020. За время существования хакатона в нём участвовали более 300 молодых специалистов из разных стран и было разработано 58 решений. Свои проекты для работы на хакатоне представляли ведущие исследовательские организации: Институт физиологии им. И.П. Павлова, Институт Цитологии РАН, СПбГУ, ФНКЦ ФХМ, JetBrains BioLabs, Институт белка РАН, Genotek, МФТИ, iBinom и другие.

    В 2019 году главный приз в размере 150 000 рублей забрала команда Garlic. За 48 часов, отведенных на работу, команда создала инструмент, который позволяет искать геномные перестройки заданной структуры. Мы попросили куратора проекта — Дмитрия Конанова, рассказать о проекте, хакатоне и в целом о жизни биоинформатика.



    — Расскажи, чем ты занимался на тот момент, когда был участником хакатона?
    — На момент участия в хакатоне я работал в лаборатории биоинформатики в ФНКЦ ФХМ ФМБА России (Федеральный научно-клинический центр физико-химической медицины Федерального Медико-биологического Агентства) — писал там диплом. Сейчас продолжаю работу в центре.

    — Почему решил участвовать в BioHack?
    — Как-то так спонтанно вышло. Уже близился дедлайн — шёл один из последних дней приёма проектов, в лаборатории меня спросили, не хочу ли поучаствовать в хакатоне: надо было просто отправить проект. Я тут же минут за 15 что-то написал и отправил заявку.



    — То есть это был проект, над которым ты уже работал в лаборатории?
    — Я хотел над ним работать, я начал над ним работать, но он был сильно недоделан. На хакатоне мы довели его до того состояния, до которого я хотел довести — алгоритм стал более автоматизированным.

    — Расскажи, как появилась идея проекта.
    — Вообще, исходная идея не моя, а Александра Манолова, м.н.с. лаборатории биоинформатики. Это человек, который был на тот момент руководителем моего диплома.

    Известно, что геномы бактерий очень пластичны. В них может происходить множество событий: перенос генов от одной бактерии к другой, изменение их последовательности, вставки и удаления фрагментов генома. Идея следующая: пусть имеются 4 генома бактерий. Каждый геном состоит из 5 генов: первый геном X-Y-Z-T-F, второй геном X-R-L-A-F, третий геном X-Y-K-T-F, и четвертый X-Y-L-T-F. (Рисунок «Перестройки в графах»). В нашем примере одинаковые буквы в геномах соответствуют гомологичным (можно сказать, одинаковым) генам. Последовательность букв показывает последовательность генов в геномах.

    Определим каждый ген из выборки геномов как узел графа и проведём ребра между теми генами-узлами, которые расположены последовательно хотя бы в одном из геномов выборки.



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

    Первая задача у нас была поискать регионы с высокой локальной запутанностью в графах, возникающие в так называемых горячих точках геномных перестроек — местах, где по не всегда понятным причинам геном интенсивно изменяется от штамма к штамму. Меру запутанности в окрестности узла мы назвали геномной сложностью (genome complexity). Эта величина по сути численно показывает, как часто происходят перестройки в определённых регионах.

    — А в чём суть задачи, которую вы решали с командой на хакатоне?
    — На хакатон мы вынесли задачку более математически красивую что ли.
    Любая перестройка генома, будь то делеция (прим. утрата участка хромосомы), вставка или инверсия (прим. изменение порядка генов участка хромосомы на обратный), приводит к образованию в нашем большом графе перестроек подграфов определённой топологии. И я подумал, что будет хорошо, если мы будем иметь возможность искать конкретные подграфы, соответствующие по структуре интересующим нас перестройкам. Это позволило бы эффективно находить точки в геноме, в которых чаще происходят те или иные события, и сравнивать частоту между разными видами и родами бактерий. Известно, например, что существуют запрещённые для инверсий участки генома, и участки, где инверсии происходят наиболее часто.

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

    Еще до хакатона я ручками что-то захардкодил, написал довольно кривой алгоритм, который искал бы определённый паттерн (кодовое название Smile, из-за характерного внешнего вида). Нашёл частоту и распределение вдоль генома для множества видов, даже выяснились какие-то забавные штуки, например, у бактерий с большим количеством смайлов перестройки любого типа равновероятно происходили вдоль всего генома, а у бактерий с малым числом смайлов только в ограниченном количестве горячих точек (при близкой интегральной по геному частоте). Разумеется, мне захотелось сделать нечто более универсальное, чтобы я мог бы задавать для поиска любые возможные подграфы. Эту идею я и вынес на хакатон.

    В результате двух дней работы мы получили инструмент, который получил название GARLIC-Finder — это инструмент для исследования геномных перестроек заданной структуры. Мы написали универсальный язык задания подграфов для поиска, но так как такая задача NP-сложная, искать «в лоб» получалось только небольшие статичные подграфы. Поэтому мы добавили возможность пользователю добавлять свои кастомные алгоритмы, оптимизированные под поиск конкретных паттернов. Мы на хакатоне остановились на трех паттернах — парой генов, между которыми часто происходят вставки (Garlic), транспозиции фрагмента генома (Penguin) и гену с очень богатым окружением (Spider) (Рис «Поиск подграфов-перестроек»). Garlic был первым и потому дал название нашему тулу. Это стало акронимом: Genome reARrangements Learning InterfaCe.



    Я даже этим немного потом попользовался.

    — Немного? То есть дальше хакатона этот проект не продвинулся?
    — Сейчас проблема в том, что мы всё ещё находимся на стадии публикации большой статьи по графам и по геномной сложности. Этим занимается человек, который пишет по этой теме диссертацию. Мы отправили первый вариант летом, но его отклонили, к сожалению. На днях отправили повторно, уже в другое издание. Если всё пройдёт успешно, возможно, мы продолжим копать в этом направлении.

    — Что тебе дало участие в хакатоне?
    — Проект стал большой частью моей дипломной работы. Появились новые идеи по оптимизации. Ну и в целом, я сам очень много нового узнал.

    — На что потратил деньги, если не секрет?
    — Не секрет, хороший плеер с наушниками :).

    — Какой язык программирования использовали для решения задачи?
    — Python, исключительно Python. И разные библиотеки к нему. Для работы с графами NetworkX, для визуализации Graphviz и его привязка к пайтону. Ну и классические Matplotlib и Pandas для работы с данными. И одна самописная библиотека — gene-graph-lib.

    — А кто был в вашей команде?
    — Два программиста и один биолог. Все оказались очень полезными.
    Какая всё-таки была у тебя глобальная цель, почему ты решил отправить проект на хакатон?
    Я хотел решить задачу и решить её эффективно. Я планировал сделать это сам, но тут подвернулась уникальная возможность, и я решил ею воспользоваться. Ну и захотелось просто посмотреть, что такое хакатон.

    — И как тебе?
    — Замечательно, просто замечательно! Организация, еда, помещение, где всё это происходило, люди замечательные. Не к чему было придраться вообще.

    Было бы ещё совсем хорошо, если бы разрешили воспользоваться местными мониторами, оборудованием сотрудников, насколько я понимаю — хакатон проходил в офисе EPAM — но нам, естественно, не разрешили.

    — Как готовился к хакатону? Что нужно сделать, помимо того, что взять свое оборудование?
    — К руководителям (прим. кураторам) было требование подготовить презентацию на 1,5-2 минуты о проекте. Участникам важно внимательно читать условия проектов, чтобы видеть какие требования у руководителей к участникам команды. Может так случиться, что у человека на ноутбуке полностью установлено окружение второго Python, а у куратора, например, третьего. Это не беда, но может занять лишнее время на доустановку окружения, а ведь нужно было просто внимательно прочитать, что нужен третий Python.

    А вот в плане знаний, как готовиться, тут не всё понятно. Естественно, нужно уметь программировать на требуемых языках и немного шарить в контексте проблемы, которая предлагается как проект. Хотя у нас был в команде человек, который биологию вообще не знал, но был очень полезен — именно он написал парсер языка для задания подграфов, эта задача легла целиком на его плечи.

    — Ты уже говорил про организацию, помещение, еду. А где спали? И спали ли вообще?
    — За 48 часов я спал часа четыре, наверное. Я всё время находился на площадке, в последнюю ночь только ушёл в отель.

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

    — Какая у тебя глобальная цель? Почему занимаешься биоинформатикой?
    — Вообще, я случайно пришёл в биоинформатику. Я учился на факультете ВКХ РАН. Там студенты, начиная со второго курса, обязаны ходить на научную работу один день в неделю в один из институтов РАН. Я откликнулся на предложение ИБХ РАН, вообще не представляя, чем мне придётся заниматься. Пришёл туда и выяснилось, что я буду делать анализ данных NGS и протеомики. Тогда я и начал учить Python и разбираться в биоинформатике. Там два года проработал, проект вроде как немного забуксовал, и я ушёл туда, где сейчас и работаю.
    Нравится мне это. Я всегда любил и математику, и биологию, как-то так получилось.

    — Какие книги, курсы, лекции, фильмы посоветуешь посмотреть ребятам?
    — По биоинформатическим алгоритмам на Coursera есть курс от университета Сан-Диего, в создании которого участвовал Павел Певзнер, на Stepic он тоже есть. Я там немного задачек порешал — довольно полезные. Они позволяют прокачать знания как в молекулярной биологии, так и в кодинге. Суть большинства задач в том, что нужно запрограммировать какой-то несложный анализ последовательности или тому подобное. Знаю, что Институт биоинформатики проводит гостевые лекции, которые можно посмотреть на YouTube, кроме того у них есть курсы на Stepic. По Python я добросовестно прочитал примерно 500 первых страниц книги «Изучаем Python» Марка Лутца, а дальше только чтение документации, чейнджлогов и практика.

    Самое главное — это решать задачи. Просто читать теорию бесполезно, а в процессе решения задач ты учишься решать реальные проблемы.

    — Планируешь участвовать в хакатоне в этом году?
    — Да, думаю, да.

    — С чем? Или это пока секрет?
    — Есть два варианта, идеи пока формируются. Не буду озвучивать. У меня же есть ещё целый месяц. Подам, наверное, как всегда в последний момент :)

    — А что сейчас вообще обсуждается в мире биоинформатики?
    — нередко любят хайповые темы. У меня студент из РХТУ диплом пишет тоже по графовой теме, так он решил построить граф на недавно опубликованном геноме коронавируса и его родственниках.

    — Заинтриговал. Будем ждать новых открытий и новых интересных проектов от тебя и твоих коллег!

    Подать проект можно до 28 февраля, а зарегистрироваться в качестве участника до 5 марта на сайте biohack.ru.
    EPAM
    Компания для карьерного и профессионального роста

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое