Представляем второй выпуск подкаста о технологиях, процессах, инфраструктуре и людях в IT-компаниях. Сегодня в гостях у “CTOcast” — Игнатий Колесниченко, технический директор компании iBinom.
Несколько слов о нашем собеседнике и компании iBinom:
Игнатий Колесниченко окончил механико-математический факультет МГУ и Школу анализа данных. Работает в компании «Яндекс» (с 2009). Начинал в Яндекс.Пробках, последние пару лет занимается распределенными вычислениями. В 2013 году стал сооснователем компании iBinom. Ведет семинары по сложности вычислений.
iBinom основан в 2013 году (среди создателей Андрей Афанасьев, Валерий Ильинский, Игнатий Колесниченко). Компания разрабатывает SaaS-решение для анализа данных генома человека. Результатами такого анализа могут пользоваться врачи без специальных знаний в биоинформатике, что и делает сервис iBinom уникальным. На данный момент готова бета-версия проекта и активно проводится тестирование на врачах и клиниках.
Текстовая версия (1-часть)
Об олимпиадном программировании, образовании и личном опыте
Александр Астапенко: Игнатий, предлагаю начать все-таки не с iBinom, а с тебя, с твоей карьеры. Можешь рассказать немного о том, как появился у тебя интерес к программированию, о работе в «Яндекс» и как ты в итоге пришел к iBinom?
Игнатий Колесниченко: …Впервые я более-менее узнал, что такое программирование в лицее №1511 при МИФИ. До этого программирование тоже было, но это все несерьезно. Однажды прочитал объявление и думаю: «Интересно, программирование, оказывается, бывает олимпиадным! Нужно пойти посмотреть, что это такое». Пришел, посмотрел и выяснилось, что нужно кучу всего знать. Программировать нужно уметь, я до этого, оказывается, не умел…
Александр Астапенко: Насколько я знаю, у тебя была интересная история с олимпиадами. Или она началась уже позже, в университете?
Игнатий Колесниченко: Я начал участвовать в олимпиадах еще в школе. …И при поступлении, в сущности, выбирал между физикой и математикой. В какой-то момент решил – математика, потому что мне очень нравилось программирование. Думал, что приду на мехмат, а там, наверняка, кружки и будут со мной заниматься. Выяснилось, что ничего подобного и на мехмате кружков по программированию нет. Пришлось долго искать людей, команду, чтобы начать в этом как-то участвовать. Но если проявлять должное упорство, то команда находится и все можно сделать.
Здорово, что на мехмате очень много людей, у которых огромный опыт в олимпиадном программировании и которые еще в школе побеждали в разных олимпиадах. Ты с ними знакомишься, они тебя чему-то учат. Ты начинаешь участвовать и попадаешь в это сообщество. Хоть и нет конкретного кружка, но просто тот факт, что сообщество существует, есть с кем соревноваться и с кем тренироваться – очень сильно помогает. Ну, и за пару лет мы дотренировались до того, что стали хорошие места занимать на четвертьфинале, ездили на полуфинал. Самые крутые ребята, конечно, были на финале чемпионата мира по программированию ACM. Я на финал не ездил, но, тем не менее, опыт это дало огромный.
Александр Астапенко: Можешь в двух словах рассказать для тех, кто не совсем в курсе, с какими задачами ты сталкивался на олимпиадах. Дает ли участие в подобных мероприятиях прикладной опыт и пригодится ли это в реальной жизни и разработке?
Игнатий Колесниченко: Сразу отвечу на второй вопрос. Да! Теперь про задачи. Задачи в олимпиадном программировании состоят из двух частей. Зачастую одна из них простая, другая сложная — придумать алгоритм.… Все задачи в олимпиадном программировании тестируются автоматически. Есть некоторый набор тестов, предъявляемый к задаче, который ты не видишь и который от тебя скрыт. И есть ограничение по времени, за которое твоя программа должна на тестах отрабатывать, по количеству памяти, которое она должна использовать. Необходимо придумать и написать такой алгоритм, который вот в эти ограничения уложится. Ну, и, собственно, задачи делятся на два типа: бывают те, в которых сложно придумать алгоритм, а бывают те, в которых алгоритм вроде бы придумать не очень сложно, но есть много разных подробностей и нужно все это аккуратно написать, реализовать. То есть умение олимпиадного программиста состоит из двух частей: «придумывание» и аккуратная реализация того, что придумал за хорошее время, так как есть 5 часов и есть 10 задач…
Есть ли от этого польза? Да, безусловно, есть. Потому что хорошему программисту нужны алгоритмы, он должен уметь оценивать время, память, скорость работы, должен уметь эффективно писать программы. И желательно делать это быстро. Потому что даже если ты будешь писать отличный код, но тратить на каждую вещь два дня, то это уже никуда не годится и много так не напишешь. В некоторый момент эти векторы, естественно, расходятся, и олимпиадное программирование чем дальше, тем больше заточено на постоянные тренировки, на оттачивание написания алгоритмов…
Павел Павлов: Что еще отличает хорошего программиста от плохого, помимо понимания алгоритмов, алгоритмического
Игнатий Колесниченко: Олимпиадной базы, конечно, недостаточно, чтобы быть хорошим программистом, потому что в жизни ты сталкиваешься с совершенно другого рода задачами и проблемами.
Во-первых, реальные программы существенно больше. На олимпиадах все программы от 100 до 400--500 строк. В жизни же приходится писать системы, которые состоят из десятков тысяч строк, которые очень сложные и объемные. Может быть, там каждая деталь и достаточно простая, но продумать все это взаимодействие очень непросто. И еще важный момент – умение продумывать API. Это одна часть.
А вторая часть: так как программы большие, нужно уметь с ними работать на перспективу. Не то, что мы сейчас пишем код, написали и все – он работает, закрыли и забыли про него. Нужно код покрывать тестами, думать, что кто-то его будет читать в будущем. Вот олимпиадные программисты совершенно не думают о том, что код будет кто-то читать, поэтому там переменные однобуквенные, функции часто не выделяются, то есть такое полотно кода. Главное его быстро написать, чтобы он заработал. Это подходит, когда нужно в жизни быстро написать прототип и проверить работает ли идея. Но это совершенно не подходит для кода, который пойдет в продакшн, который нужно поддерживать, развивать и так далее.
Вот, эти умения они такие, очень неструктурированные, нетривиальные и, по моему мнению, приобретаются просто с опытом. Невозможно прочитать книжку и научиться покрывать код тестами, придумывать архитектуру системы, придумывать ее API правильно. Делаешь раз, делаешь два, делаешь три, и на третий раз уже понимаешь, что вот теперь у меня получается неплохо.
Павел Павлов: Ты затронул тему системы образования… Тяжело ли было находить людей, с которыми ты мог бы иметь какие-то общие интересы с точки зрения развития своих навыков, знаний? Насколько ты считаешь адекватным уровень образования в университетах, школах? Или приходится, в основном, вариться в какой-то узкой среде, чтобы получать подобного рода знания?
Игнатий Колесниченко: В российском образовании действительно есть некоторая проблема. У нас есть топовые технические ВУЗы — МГУ, МИФИ, МФТИ, Бауманка, где курсы по программированию, особенно все, что касается промышленного программирования, они немного не соответствуют тому уровню, который сейчас вообще предъявляется к области, и тому уровню, который предъявляется в тех же европейских или американских университетах.
С другой стороны, талантливых ребят достаточно много. В России одно из самых сильных олимпиадных сообществ и во всех этих топовых вузах есть люди, которые занимаются олимпиадным программированием. Можно попасть в эту тусовку и там, собственно, свою брешь в знаниях восполнить. Там тоже часто читают какие-то лекции или просто делятся знаниями друг с другом. Но, естественно, это не очень правильный подход, потому что так вырастают олимпиадные программисты, которых потом еще приходится доучивать до индустрии.
… Но кажется, что ситуация меняется. В этом смысле есть такое замечательное место, как Школа анализа данных. Кроме этого, насколько я знаю, «Яндекс» открывает новый факультет. Точнее, Вышка открывает новый факультет при поддержке «Яндекс». У меня складывается ощущение, что там должно быть очень здорово, но это посмотрим-увидим.
Александр Астапенко: Ты нанимаешь людей на работу и видишь, что ребята тоже участвовали в олимпиадах по программированию, является ли для тебя это важным фактором?
Игнатий Колесниченко: Это, безусловно, плюс, если человек прошел через олимпиадное программирование, но он не решающий.
Александр Астапенко: Университет, олимпиадное программирование… Что было дальше?
Игнатий Колесниченко: …Во время обучения в Школе анализа данных меня позвали пройти собеседование в «Яндекс». Тогда это было некоторым шоком: третий курс, а можно уже работать, деньги зарабатывать да и еще какие-то задачи интересные решать. Я поступил как стажер и был им, кажется, больше года. …Потом уже занимался более сложными вещами, работал в Яндекс.Пробках, где мы командой переписывали текущую инфраструктуру. Первая большая система, которую я увидел и в которой как-то участвовал. Это было здорово.
О проекте iBinom
Александр Астапенко: Расскажи про компанию iBinom… Про идею, как появился проект и как стартанули.
Игнатий Колесниченко: Получилось все очень просто. У меня с мехмата был хороший друг, который вместе с одним биологом занялся созданием компании «Генотек». Они были именно про такой сервис, как 23andMe, когда к вам приходит пользователь, вы берете у него слюну, анализируете ее и рассказываете ему про какие-то его предрасположенности к наследственным заболеваниям. Сервис, по большей части, развлекательный, то есть люди просто приходят just for fun. У них есть немного денег и они готовы их потратить, чтобы такую интересную новую информацию для себя узнать. В один из вечеров я общался со своим другом, и он мне сказал: «Смотри, есть у нас биолог и у него есть одна задачка… Была бы она тебе интересна?». Задача была как раз про то, чтобы сделать поиск мутаций в геноме по экзонному анализу.
… Условно говоря, мы в декабре это обсуждали, а в феврале я пришел с новостью, что вроде все получается. То, что раньше вы делали у себя локально за 8 часов, я могу сделать за 30 минут. И как-то так получился прототип. Потом ребята сказали: «Слушай, на самом деле нас не прототип, конечно, интересует. У нас есть идея как это монетизировать. Давай делать». Я подумал-подумал и решил, что нужно присоединяться.
Был конфликт интересов в том смысле, что я работал и работаю в «Яндекс», мне нравится – с одной стороны, а с другой – тоже супер-интересная задача, совершенно про другое. И как-то глупо упускать такую возможность, поэтому я решил личное время поужать и начать тратить сразу на два дела. Собственно, уже чуть больше года мы делаем более-менее осмысленный стартап.
Александр Астапенко: А «Генотек» до сих пор продолжает существовать?
Игнатий Колесниченко: Да, компания существует.
Александр Астапенко: И там конфликта интересов нет?
Игнатий Колесниченко: Она занимается немного другим. Алгоритмы там тоже какие-то есть, но это не основная ее специализация. К ним приходит пользователь, они должны взять у него анализ слюны, отнести его в прибор и там проанализировать, а затем еще, конечно, проделать определенный анализ компьютерный и на красивом сайте выдать результат: «У вас предрасположенность к тому-то и тому-то… »
Александр Aстапенко: Это как 23andMe, о котором ты упоминал?
Игнатий Колесниченко: Да, это российский аналог 23andMe.
Александр Aстапенко: Поговорим про то, как iBinom работает.
Игнатий Колесниченко: Что такое геном человека? Геном человека – это такая длинная-длинная последовательность, которая состоит из 23 кусков. 23 куска – это хромосомы. Каждая хромосома – парная. В этой последовательности (вся ее длина порядка 3 миллиардов символов) есть интересующие нас участки. То есть она, в принципе, вся может быть нам интересна, но есть особые участки – так называемые кодирующие области, иначе говоря — гены. Их уже не так много, не 3 миллиарда, а, не знаю, 50 миллионов. И нужно выяснить, что там происходит: работают эти гены или нет, какие есть мутации и на что они влияют.
Первая сложная задача заключается в том, как вообще это все прочитать. Достаточно давно, лет 50—40 назад, придумали простой ручной метод для прочтения одного кусочка. Всю нашу ДНК можно представить себе как длинную строчку из четырех букв ACTG. С точки зрения алгоритмов и анализа можно смотреть на ДНК как на буквы и не думать о том, что это какие-то нуклеиновые кислоты и так далее. И, собственно, надо ее прочитать. Лет 50 назад это делать научились. Правда, чтобы прочитать тысячу символов, человек должен потратить день. А нам нужно не тысячу символов, а 50 миллионов! Как это сделать совершенно не ясно. Существовал большой-большой проект «Геном человека», в который был вложен миллиард долларов, если не больше. И, собственно, целью этого проекта было весь геном человека прочитать, собрать и разобраться в нем.
Но тут есть еще одна проблема: вот умеем мы читать по 50, по 100 символов, можем прочитать такие кусочки из разных мест, но мы очень плохо понимаем, где на самом деле находятся эти места, и как потом из них собрать геном человека. Где сейчас находится наука в данной области? Наука научилась читать эти кусочки в очень больших количествах и очень быстро, но, опять же, мы не знаем, где они находятся. Мы берем весь геном человека, все наши хромосомы, дробим их на небольшие кусочки длиной от 100 до 1000 и затем уже каждый от начала до конца прочитываем. После этого у нас есть очень много таких разных прочтений и нужно из них собрать весь геном. Чтобы сборка вообще была возможна, такая процедура повторяется много раз, как минимум 30, а зачастую и больше. Чтобы каждая буква, каждый участок в геноме покрывался много раз. Если мы только один раз так сделаем, то у нас никаких знаний о том, как эти кусочки должны друг с другом склеиваться, нету, и мы их склеить не сможем. Поэтому таких кусочков должно быть много, они с большим покрытием. И дальше нужно применять некоторую магию, сложный алгоритм, который из этих кусочков соберет весь геном. Это такая задача, которая сложна и по сей день, то есть собрать геном нового организма – это очень непросто. Это то, что называется сборкой генома.
Проанализировать геном какого-то конкретного человека немножко проще. Делается точно такой же анализ, читаются небольшие кусочки из генома, правда, уже из интересных, кодирующих областей. Весь геном, как правило, не читается, хотя это тоже можно сделать. Дальше мы пользуемся таким замечательным свойством, что все люди друг на друга очень похожи. Мы отличаемся не больше, чем на 1%. И поэтому если мы возьмем какой-нибудь эталонный геном человека и возьмем наше прочтение, то мы можем не собирать из наших прочтений новый геном, а можем сразу эти прочтения сравнивать с эталонным геномом. Собственно, находить, где они там встречаются, и смотреть, чем они отличаются. Так более-менее делается анализ мутаций человека и разных изменений в этом геноме.
Александр Астапенко: Очень, кстати, интересная фраза «идеальный геном человека». Это так перекликается эхом с серединой прошлого века.
Игнатий Колесниченко: Есть некоторый не идеальный, а эталонный…
Александр Астапенко: Зависит ли это от текущей политической ситуации?
Игнатий Колесниченко: Нет, от текущей политической ситуации не зависит. Это чисто биологический, скорее биоинформатический, научный термин.
Александр Астапенко: И от цвета кожи тоже не зависит?
Игнатий Колесниченко: По-разному, на самом деле. Есть разные сборки. Условно говоря, люди в Европе и люди в России (популяции) отличаются. И, в целом, можно собирать такого среднего человека, находящегося в России, и среднего человека, находящегося в Европе, и они будут немного разные. Если мы анализируем человека, который живет в Европе, его более разумно сравнивать с европейским эталоном, а не с африканским эталоном.
Александр Астапенко: Или в России.
Игнатий Колесниченко: Или в России. Ну, Россия все-таки похожа на Европу в этом смысле. То есть они ближе, с Африкой немного, насколько я знаю, дальше. Но все равно там отличия несущественные и можно сравнивать. Тот геном стандартный, который везде используется, он собран по типу 100 или 1000 совершенно разных людей. Взяли 100 или 1000 разных человек, всех их проанализировали и вместе из всех их данных собрали такой общий геном. Если мы возьмем одного конкретного человека, то у него может быть много разных наследственных заболеваний, которые просто находятся в рецессивной форме или по каким-то другим причинам не проявляются, и тогда у нас не получится настоящий эталон. Чтобы собрать такой эталон, проще взять как можно больше людей. Если в каждой точке возьмем большинство, то скорей всего это большинство – популярная аллель в нашей популяции, популярная буква в нашей популяции, в этой точке. И, скорей всего, она хорошая, правильная, а та, которая редкая – неправильная и может что-нибудь вызывать.
Давайте я расскажу в чем состоит весь анализ, потому что это только первая часть. Такая первая сложно-техническая часть, серые данные, которые выдал прибор (секвенатор), делающий небольшие последовательности – прочтения. В этот секвенатор ты просто сдаешь свою слюну или кровь — любую пробу, туда всякие реактивы дополнительно запихиваются. Он работает, не знаю, 12 часов и на жесткий диск тебе пишет прочтения. Их много-много, с большим покрытием. Типичный для экзонного анализа (анализа генов человека) объем данных – от 2--3 до 30 Гбайт.
Александр Астапенко: Я в каком-то из твоих видео встречал цифру 200 Гбайт.
Игнатий Колесниченко: 200 Гбайт – это вообще полный геном. Но полный геном, на самом деле, в практическом применении мало кому интересен. Он, скорее, интересен чисто в научном смысле.
Александр Астапенко: То есть в реальной жизни это от 2 до 30 Гбайт, где-то так?
Игнатий Колесниченко: Более-менее, да. Когда мы делали сервис, нам хотелось с полным геномом тоже уметь работать, потому что мало ли кто захочет…
Хорошо, нашли мы изменения в геноме: например, в эталонном геноме у нас буква А, а у меня почему-то буква G в этом месте. Информация, которая совершенно непонятна. Что с ней делать? Дальше опять начинается сложная часть, которая с научной точки зрения пока только в самом-самом зарождении — понимание мутации, к каким заболеваниям она может привести, будет ли работать белок, за который она отвечает или нет.
Да, давайте немного расскажу про белки, собственно. Вот у нас есть эти гены, что такое гены? С точки зрения ДНК – это подпоследовательность. Что она делает? Она кодирует белок. Белок же состоит из аминокислот – это отдельные молекулы, и каждая аминокислота кодируется такими условными тремя буквами из этой последовательности нашей, подряд идущими. То есть у нас есть последовательность длины 30, мы разбиваем ее на подряд идущие тройки, и каждая тройка отвечает за одну аминокислоту. Затем эти 10 аминокислот уже образуют некоторый белок. Обычно их не 10, ген – это, не знаю, 600 нуклеотидов и 200 аминокислот. Белки выполняют в нашем организме огромную роль. Они отвечают за всякую регуляцию, за работу клетки. То есть в нашей клетке плавает множество белков, они участвуют в разных реакциях как катализаторы и много-много всего делают. Если у нас белок сломался, а как сломался? Произошла какая-то мутация, поэтому в белке одна аминокислота стала не такой, как другая. Белок сворачивается, то есть у него важно то, как он свернется, то, какая у него будет трехмерная структура. Он свернется как-нибудь неправильно, и все не будет работать.
И кажется, что если у нас произошла мутация, то все сломается и ничего не будет работать, но организм штука хитрая и тут есть миллион слоев защиты, чтобы вот одна какая-нибудь конкретная мутация ни к чему не приводила. Вообще для понимания: у каждого человека мутаций, не помню точно, порядка 1%. И тем не менее все люди живут как-то и не парятся. Это потому что очень много слоев защиты. Первый слой: если у нас в одной хромосоме что-то поменялось, вторая (парная) хромосома все равно может продолжать кодировать этот белок, и все будет работать. Второй слой защиты: допустим, у нас в обеих аллелях белок сломался, перестал работать, а у этого белка есть, скажем, 5 разных его братьев, которые более-менее ту же самую функцию выполняют. Она, может быть, будет выполняться чуть хуже, медленнее. Но в целом все продолжит работать. Есть еще более высокий уровень. Даже если сломалась целая какая-то цепочка, то, скорее всего, организм может просто без этого жить, ему будет не так хорошо, но он все равно будет существовать.
Александр Астапенко: Мы сейчас о кластере говорим каком-то или пока о человеке?
Игнатий Колесниченко: Нет, мы о человеке сейчас говорим.
Александр Астапенко: Окей, продолжай!
Игнатий Колесниченко: Эта область знаний – как понять произошла ли у нас мутация и приведет ли она к какому-нибудь наследственному заболеванию — очень сложная. Знания человечества, науки очень ограничены. Мы знаем, может, несколько тысяч наследственных заболеваний, какие-то взаимосвязи, но эти знания очень узкие. Очевидно, что общая область таких знаний в 100 раз больше, чем то, что сейчас изучено.
Ну, и что мы делаем? Мы берем то, что человечество знает и просто применяем это к нашему анализу. Есть много баз, в которых данные знания представлены в разных форматах, по-разному и в разных лабораториях получены. Мы их стараемся наилучшим образом агрегировать и, собственно, предоставить информацию о том, к каким наследственным заболеваниям могут привести текущие найденные мутации.
Что мы делаем для врача в конечном итоге? Врач в поликлинике заказывает анализ с использованием секвенатора, полученные данные заливаются в облако. Дальше он говорит: «О, ребята, смотрите, у меня тут есть данные про вот этого человека, давайте вы их проанализируете!» Мы их анализируем и дальше врачу выдаем следующую информацию: нашли, например, 200 самых интересных, важных мутаций, и за что каждая из этих мутаций может отвечать. Это то, что сейчас мы делаем. Но мы думаем пойти немного дальше, собственно, многие врачи так и исследуют. Врачу неинтересно все эти 200 мутаций смотреть, потому что у него сейчас есть конкретный пациент, и он изучает у него определенное заболевание, например, печени. И он предполагает, что вот это заболевание имеет наследственные причины. А наследственных причин может быть, допустим, 10 разных, и он не знает какая именно. Поэтому мы сейчас доделываем такую систему, в которой врач может сказать: «Я хочу смотреть на вот эту группу заболеваний». Или «У моего пациента такие вот симптомы, а вы знаете какие у него мутации. Давайте из этих симптомов и мутаций поймем какое же будет заболевание у этого человека». Ну, и также есть такие базы, которые ассоциируют заболевание с разными мутациями. Эту информацию нужно просто вместе собрать, чтобы пользователю, врачу показать и чтобы было понятно почему мы сделали такой вывод, насколько он верный. Вот. Получилось немного сумбурно, но как-то так.
Александр Астапенко: На самом деле довольно все понятно. И еще один момент, пока мы окончательно не перешли на техническую составляющую. Вот находится, например, пара сотен мутаций, не все из которых интересны врачу. Какой процент ошибки может сюда закрадываться? Одно дело, когда ребята ищут какие-то особенности, анализируя продажу-покупку ценных бумаг на бирже – там большие деньги, но не жизнь человека. Здесь же речь идет о диагностировании серьезных болезней и любая из этих ошибок гораздо весомей, чем в той же биржевой торговле. Расскажи про вероятность таких ошибок, и есть ли какие-то решения, чтобы сократить их количество.
Игнатий Колесниченко: Да, ошибок достаточно много. Ошибается и сам секвенатор и это приходится как-то исправлять. Ошибаемся и мы с точки зрения алгоритмов. Вот, скажем, находим мы 200 каких-то критических мутаций, которые выглядят страшно. А в реальной жизни человек здоров и у него проблемы только с печенью.
Александр Астапенко: И вы говорите «нет». В морг — значит в морг! Да?
Игнатий Колесниченко: Эти 200 мутаций… Во многих случаях мы просто не понимаем почему они на самом деле не приводят к определенным заболеваниям. Поэтому для врача это, скорее, рекомендательная информация. Он воспользовался нашим сервисом, узнал, что есть такие-то мутации и они приводят к конкретному заболеванию, которое он предполагал или нет. Врач думает: «Хорошо, вот заболевание, скорее всего то, что нужно. В принципе я могу идти и моему пациенту прописывать лекарство, чтобы его лечить». Но врач не дурак и тоже просто так нам не верит. Условно говоря, он вот нашел эту цепочку-взаимосвязь от мутаций и к тому, что мы ему сказали, и может проверить так ли это.
Мы стараемся полностью рассказать какими базами мы пользовались и что мы нашли, чтобы врач эту цепочку видел. Если он будет видеть всю эту цепочку, он может пойти и ручным способом перепроверить. Врачу для конкретного заболевания интересны, например, 3 мутации, которые мы привели. Проверить 3 мутации – несложно. Это и не просто, конечно, но вполне возможно. Врач может перепроверить, и тогда он уже уверен: да, действительно, эти 3 мутации связываются с данным заболеванием. Ну, и затем он берет на себя ответственность и начинает лечить пациента.
В той же Америке у технологии NGS (New Generation Sequencing) нет одобрения FDA, то есть это просто дополнительная информация для врача. Врач ее использует, чтобы лучше лечить своего пациента. Как говорится: «Why not?». Далеко не все врачи это используют и, насколько я понимаю, многие из них этому не доверяют. Понятное дело, что в будущем точность технологий будет расти и в какой-то момент врачу уже не придется все перепроверять. Просто методы станут точными, а количество знаний — достаточным.
Я бы это сравнивал с программированием времен 70-х годов прошлого века. Тогда люди могли спокойно утверждать, например, что невозможно быть хорошим программистом и при этом не знать как работает какое-то железо, как устроен mainframe, не знать языка Assembler. Действительно, в те времена это было так. Если ты не знаешь каких-то базовых вещей, то делать тебе нечего, потому что памяти мало, процессора мало, нужно все это оптимизировать, хорошо понимать и знать. Но прошло 30--40 лет и сейчас 90% программистов не знают, что такое Assembler, и достаточно слабо себе представляют как это все внутри работает. Они на программирование смотрят с высокой точки зрения и решают свои задачи на том уровне, на котором нужно их решать, и не углубляются в разные детали и области.
Я верю, что в биоинформатике и биотехнологии, в области наследственных заболеваний тоже такое произойдет. Просто сейчас мы находимся в самом-самом начале и наши знания очень скудные. Врач-генетик, по-хорошему, должен знать всю цепочку и понимать как это устроено, иначе он может сделать ошибку.
Павел Павлов: Скажи, а со своей стороны как вы находите и отслеживаете ошибки секвенатора?
Игнатий Колесниченко: Во-первых, есть разные автоматические методы. Но вообще мы стараемся брать настоящие анализы. Мы приходим в поликлинику или лабораторию, у которых уже есть человек с каким-нибудь заболеванием, они его проанализировали, нашли определенные мутации и эти мутации проверили. Мы берем уже проверенную информацию и выясняем насколько наш алгоритм этим проверенным знаниям соответствует. Если не соответствует, то почему? Как починить?
Сейчас люди, в принципе, умеют делать то же, что и мы. Только в чем проблема? Проблема в том, что для этого лаборатории приходится держать у себя биоинформатика, который все эти алгоритмы сам, руками где-то на машинке запустит, 12 часов подождет пока все это выполнится. Потом он сам ищет по разным базам и сайтам нужную информацию. Наша цель, во-первых, делать быстро то, что люди уже умеют, а во-вторых, всю информацию агрегировать, в красивом виде показать, нарисовать разные статистики, в целом все это обернуть в разумный продукт.
Александр Астапенко: Хорошо, а если мы поговорим непосредственно о процедуре, как это все происходит? Например, я врач и у меня есть какие-то секвенированные данные. В каком формате эти данные есть у меня (скажем, 30 Гбайт)? И как в реальной жизни происходит передача данных вам, чтобы вы могли начать анализировать и искать мутации?
Игнатий Колесниченко: В реальной жизни у пользователя они уже есть либо на диске, либо он эти 30 Гбайт скачивает себе откуда-нибудь. И затем просто заливает к нам на сайт, они попадают у в S3. И дальше, как только пользователь их залил, он может начать анализ.
Александр Астапенко: А заливать через веб-интерфейс эти 30 Гбайт?
Игнатий Колесниченко: Да, мы заливаем через интерфейс. Но это, собственно, было одной из непростых технических задач: реализовать такую возможность, чтобы если оборвалось соединение, можно было продолжить.
Продолжение текстовой версии подкаста — в ближайшие дни.
Автор: