Компания
65,78
рейтинг
1 октября 2014 в 20:49

Разработка → Финиширование генома: быстро, качественно, недорого

Думаю, что многие читатели Хабра уже слышали о биоинформатике, возможно даже непосредственно о задаче сборки генома. Множество людей по всем миру занято написанием геномных ассемблеров — программ, интерпретирующих сырые данные машин для секвенирования и выдающих в результате последовательность ДНК изучаемого организма. Однако, в большинстве случаев, геном целиком «из коробки» получить не удается. В этой статье я постараюсь объяснить, почему же геном нельзя собрать одним щелчком мыши и опишу процесс его «финиширования» — пожалуй, самый трудоемкий этап во всей сборке, порой длящийся несколько лет.

Также, я расскажу, как мы иногда можем существенно облегчить этот процесс, используя уже собранные геномы близкородственных организмов. Этой задачей я занимался в рамках написания своей магистерской диссертации в Санкт-Петербургском Академическом Университете, а обучение проходило совместно с Институтом Биоинформатики. Поскольку получившийся алгоритм достаточно специфичен, я начну с описания проблемы в целом, дам обзор некоторых «хардварных» методов ее решения, а затем немного расскажу о том, что же получилось у меня.


Введение


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

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



В итоге, вместо того, чтобы выдать нам геном целиком, мы получаем его кусочки, называемые контиги (contigs). Они уже гораздо длиннее (десятки и сотни тысяч нуклеотидов), и в своей совокупности они составляют оригинальную последовательность. Однако, правильный их порядок нам неизвестен. Что же делать дальше?

Для начала зададимся вопросом: а зачем вообще нам цельный геном? Ведь длины контигов уже достаточно, к примеру, для поиска генов внутри них. С другой стороны, некоторые гены все-таки будут повреждены из-за фрагментации. Но, что еще важно, для некоторых исследований необходима именно структура генома, т.е. порядок расположения в нем изучаемых генов.

К примеру, это важно при изучении эволюции. Как мы хорошо знаем, ДНК со временем мутирует. Чаще всего происходят маленькие изменения: один нуклеотид заменяется на другой, или же несколько подряд идущих нуклеотидов вырезаются/вставляются в другое место. Но бывают гораздо более редкие, но серьезные изменения. К примеру, крупный кусок генома может перевернуться или «переехать» на другую позицию. Бывают, что целые хромосомы сливаются друг с другом, или наоборот, распадаются на две части. В своей работе Ханнехалли и Певзнер показали, что геномы человека и мыши разъединяют всего 131 такая перестройка. Согласитесь, не так уж и много.

Черновик генома


Теперь, когда я вас заинтересовал, давайте уже соберем этот геном! У нас есть набор контигов — его кусочков, порядок следования которых нам неизвестен. Что будем делать дальше? Нам может помочь технология таргетного секвенирования, позволяющая прочитать определенную и относительно короткую (до нескольких тысяч нуклеотидов) область генома, содержащую определенный паттерн на концах. Для этого используется полимеразная цепная реакция (ПЦР), а затем получившийся продукт прочитывается значительно более дорогим, но надежным методом секвенирования — методом Сэнгера. Запустив такую реакцию и выбрав в качестве паттерна концы двух интересующих нас контигов, мы можем узнать, являются ли они соседними в геноме, а также прочитать недостающую последовательность между ними. Если же наше предположение не верно, и контиги расположены слишком далеко друг от друга — реакция просто-напросто не пойдет.

Но ведь у нас есть сотни (если мы собираем бактерию) и тысячи (млекопитающее) контигов, соответственно десятки тысяч и миллионы возможных их «соединений». На то, чтобы проверить каждое из них, у нас не хватит ни времени, ни денег. Как нам поступить в такой ситуации? Может быть, мы можем как-то оценить, какие соединения вероятнее всего существуют, а какие даже и проверять не стоит?

Разумеется, можем! Существуют разные способы (о некоторых из которых я сейчас и расскажу), которые позволяют объединять контиги в так называемый скаффолд (scaffold), представляющий из себя их упорядоченный набор. Между контигами располагаются «пропуски» (gaps) определенной длинны, символизирующие неизвестную последовательность:



Понятно, что имея такой «черновик» генома, нам будет уже гораздо легче заполнять пропуски в нем. Давайте рассмотрим, какие бывают способы объединения контигов в скаффолды (этот процесс так и называется — скаффолдинг).

Технологии скаффолдинга


Библиотеки парных ридов

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

Такие пары ридов дают нам новую дополнительную информацию. Давайте «выровняем» (align) их (т.е. найдем вхождение, возможно, неточное) на наши контиги. Если при этом два рида выравниваются на разные контиги, то последние мы можем объединить в единый скаффолд:



Важным критерием данной технологии является расстояние между парами ридов — так называемая, длина вставки. Чем она больше, тем через более длинные промежутки генома мы можем перескакивать. Однако, с ростом длины вставки существенно возрастает стоимость эксперимента, а также количество ошибок.

Длинные риды

В последнее время начинают появляться технологии, позволяющие получать гораздо более длинные риды (до нескольких десятков и даже сотен тысяч пар оснований) в относительно больших количествах. К примеру, такую возможность предоставляет технология PacBio. Однако, во всех них пока что есть два существенных недостатка: во-первых, дороговизна процесса, а во-вторых, наличие большого количества ошибок.

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



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

Hi-C

Hi-C — совсем свежая и многообещающая технология, которая позволяет измерить взаимодействие кусков генома в пространстве. Как вы, наверное, знаете, ДНК — не просто длинная линейная молекула, она еще и сложным образом упакована в пространственную структуру, которая и называется хромосомой. Не вдаваясь в подробности, скажу, что Hi-C позволяет получать пары ридов, для которых соответствующие куски генома находятся близко в пространстве, но совсем не обязательно они будут рядом, если мы растянем всю молекулу в одну линию. На картинке ниже показаны интенсивности взаимодействия участков хромосомы друг с другом (по обоим осям — линейные координаты на хромосоме):



Так мы можем получить довольно интересную информацию, отражающую форму упаковки ДНК в клетке. Как это может быть использовано для скаффолдинга? Да очень просто: куски ДНК, которые линейно близки друг к другу, будут все-таки в среднем чаще взаимодействовать между собой (что мы и видим на картинке выше). Опять же, не буду пускаться в долгие объяснения и отошлю читателя к оригинальный статье на эту тему.

Референсная сборка


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

И воспользоваться можно! Существует множество чисто вычислительных методов под общим названием «референсная сборка» (reference-assisted assembly), которые подразумевают использование последовательностей уже собранных родственных организмов для улучшения качества сборки нового образца. Базовая идея здесь схожа с той, что используется при сборке с длинными ридами: мы находим выравнивание контигов теперь уже на референсный геном, и объединяем их в соответствующем порядке:



Но, как мы знаем, эволюция не стоит на месте, и различия в собираемом и референсном геноме могут оказаться существенными. Во-первых, это может привести к сложностям при поиске выравнивания. Но это еще полбеды. В самом начала статьи я упоминал про крупномасштабные геномные перестройки. Понятно, что если такие перестройки между собираемым и референсным геномом присутствуют, то мы рискуем получить совершенно неправильный результат. Стало быть, нам нужен алгоритм, который анализирует такие перестройки и старается «расставить все по своим местам».

Написанием такого алгоритма я и занимался в качестве своей магистерской диссертации. Главным его отличием от существующих решений является использование нескольких референсных геномов одновременно. Это дает нам дополнительную информацию о том, как геномы менялись в ходе эволюции, а значит позволяет более достоверно оценить порядок контигов и в нашем геноме.

Не вдаваясь в подробности, я попытаюсь объяснить, почему же несколько референсов лучше, чем один. Начнем с того, что между всеми геномами, которые даны нам на входе, имеется какая-то эволюционная взаимосвязь. Проще говоря, мы можем построить филогенетическое дерево, в листьях которого будут располагаться наши геномы, как референсные — R, так и целевой — T. Дерево показывает их направленную эволюцию от некоторого общего предка, а длинна ветвей соответствует длительности процессов:



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

По результатам работы была написана статья, которая и стала моей магистерской диссертацией. Саму программу можно найти на гитхабе — fenderglass.github.io/Ragout. Детальное описание алгоритма, к сожалению, выходит за рамки публикации формата Хабра, и было бы не слишком понятно без дополнительного бэкграунда. Но если данная статья вызовет интерес у сообщества, то в дальнейшем я продолжу писать про биоинформатические алгоритмы, связанные с этой темой, и буду постепенно углубляться в область.

P.S. Хотел написать еще и в Биоинформатику, но не хватает кармы. — уже написал
Автор: @fenderglass
СПБАУ
рейтинг 65,78

Комментарии (24)

  • +4
    Ragout классная штука. Помимо того, что там действительно неплохой алгоритм, она отличается необычным для бионинформатики качеством: она работает, легко устанавливается и нормально написана =) Хотя некоторый вопросы по формуле весов при развешивании подобных в half-breakpoint графе все-таки есть.
    • +3
      Спасибо. Вполне ожидаемые вопросы от человека, занимающегося геномными перестройками :)
  • +4
    Очень неплохо написано, захватывающе. Я в теме, но все равно было интересно.
    А кармы вам сейчас подкинем :) Не дело, что биоинформатик не может писать в биоинформатику.
    • +2
      Спасибо. Старался, чтобы было интересно :)
      • 0
        Я не биоинформатик, но имею достаточное количество голосов за карму. Ловите! :)
  • +1
    А вы не могли бы посвятить одну статью описанию того что уже сегодня можно делать, заказав и получив на руки свою личную последовательность ДНК?

    Ну например, проводятся ли у нас какие-нибудь исследования, в которых можно участвовать придя, что называется «с улицы» и позволяющие, например подобрать лично для меня максимально подходящее питание и такое вот…
    • +2
      Получить заново цельную последовательность ДНК для человека — достаточно дорого, да и не нужно. При исследовании конкретного индивидуума обычно ставятся тесты на заранее известные варианты генов — так называемые аллели. Именно они могут говорить о предрасположенностях/особенностях человека.

      Таких персонализированных исследований пока довольно мало. Обычно, задача стоит с другого конца — тест на конкретный маркер (к примеру, предрасположенность к какому-то генетическому заболеванию), а не проверка всех известных и дальнейшие предсказания на их основе.

      Из российских компаний я знаком с www.genotek.ru/. Также, есть иностранный сервис www.23andme.com/, о котором довольно часто и много писали. Сейчас, к сожалению, они уже не делают интерпретаций полученных данных из-за одной нашумевшей истории.
      • +1
        Я заинтересован в том чтоб получить информацию о своих генах. Но меня останавливает следующее:
        1) я не понимаю, в каком виде\формате я получу информацию, смогу ли я её интерпретировать сейчас, смогу ли делать это в будущем
        2) у меня нет доверия к фирмам, которые предоставляют такие услуги. Я ведь не специалист, и геном пшеницы от генома человека не отличу. А может мне вообще рандомно сгенерированный отчет пришлют, типа как генератор псевдо-научных текстов.

        Есть какие-либо разъяснения по первому вопросу и рекомендации\отзывы по второму?
        • +1
          1) Я думаю, это зависит от сервиса и, соответственно, поставленных экспериментов. Скорее всего, можно будет получить что-то вроде списка генов и соответствующие им аллели (варианты гена). Разумеется, можно заказать себе полногеномное секвенирование где-нибудь в Китае, тогда вы получите сырые риды, с которыми можно будет делать что угодно (и сейчас и в будущем). Но это будет уже совсем не user-friendly :)
          2) Такие высокотехнологичные услуги вряд ли кто-то будет пытаться подделывать в ближайшем будущем (мое мнение). Вообще, в научном мире многое держится на репутации — один раз кого-то обманул, и никто с тобой больше не будет сотрудничать. По поводу этих двух компаний — мои знакомые ими пользовались, вроде все хорошо :) К примеру, 23andme исправно находит родственников, если данные о них есть в базе.
  • +1
    >Не дело, что биоинформатик не может писать в биоинформатику.
    Не дело, что и другие специалисты не могут писать в свои хабы
    • 0
      «Свой» хаб же не научный журнал, в самом деле…
      Откройте список своих публикаций. Посмотрите оценки. Постарайтесь понять, за что получили «плюсы», а за что «минусы». И сделайте выводы!
  • 0
    Как хорошо такие статьи ложатся на Кунинскую «Логику случая», которую сейчас пытаюсь прочесть.
  • 0
    Большое спасибо. Буду ждать продолжения.
  • НЛО прилетело и опубликовало эту надпись здесь
    • 0
      Зато два программиста из разных стран скорее поймут друг друга, чем два мясника или биолога. Хотя, в случае с биологом все зависит от новизны обсуждаемых тем: чем новее — тем больше общего.
    • +1
      Действительно, это происходит повсеместно, и иногда принимает совсем дурной оборот. Но тут уже ничего не поделаешь: подавляющее число публикаций на английском языке, а для многих тенминов сложно придумать русские эквиваленты. Если риды еще называют чтениями (хотя я бы сказал, что «рид» — уже довольно устоявшийся термин), то как можно по-русски назвать контиг или скаффолд, сохранив при этом смысл, я затрудняюсь.
      • 0
         
      • –1
        Не нужно придумывать второе имя сущности, если это вносит только усложнение и не приносит упрощения.
    • 0
      Поверьте, многие утруждали себя подбором подходящих переводов этих терминов и сдались. Вместо «ридов» ещё можно использовать «прочтения», «чтения» или «фрагменты», но вот попробуйте сами найти русскоязычные аналоги для «контиг» и «скаффолд». Не называть же их «смежна» и «эшафот»?
      • НЛО прилетело и опубликовало эту надпись здесь
        • 0
          К сожалению, такие длинные варианты читать ещё менее удобно, чем «контиг» и «скаффолд». Например, фраза:
          Давайте рассмотрим, какие бывают способы объединения контигов в скаффолды (этот процесс так и называется — скаффолдинг).
          превращается в:
          Давайте рассмотрим, какие бывают способы объединения непрерывных фрагментов в объединение непрерывных фрагментов (этот процесс так и называется — объединение непрерывных фрагментов).
          • НЛО прилетело и опубликовало эту надпись здесь
  • +1
    Я правильно понимаю, что методов точного чтения ДНК буква-за-буквой не существует и все результаты весьма приблизительны?
  • +1
    Не совсем так. Существуют несколько типов секвенирования (чтения):

    Во-первых, «традиционный», по Сенгеру. Он позволяет прочитать около 1000 нуклеотидов, но самих прочтений меньше десятка за раз. Точность высокая, менее одного процента ошибок. Зато, это очень долго и дорого. К примеру, на сборку генома человека с этой технологией ушло около 10 лет.
    Во-вторых, набор технологий, называемых Next Generation Seuqencing (NGS). Риды короче (от 50 до 700 нуклеотидов), ошибок больше. Зато очень дешево и с большим выхлопом. Такими данными сейчас в основном и пользуются.
    В-третьих, технологии длинных ридов о которых я немного рассказал в статье.

    Более подробно про это все можно почитать опять же по ссылочкам в начале публикации.

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

Самое читаемое Разработка