Хранение данных на ДНК/РНК: возможности и перспективы

Приветствую всех айтишников и технарей. Выпустив очередную часть саги про ЯМР, я словил катарсис и почувствовал за собой моральное право опять пографоманить на отвлеченные темы. И сегодня мы с двух ног ворвемся в тему хранения данных на ДНК/РНК. Тема интересная, и намного ближе к айтишечке, чем все предыдущие опусы, поэтому погнали!

Ликбез (если в курсе, можете мотать до следующего раздела)

Что такое ДНК/РНК (будем обозначать их просто НК), все в общих чертах знают, однако когда спрашиваешь, к примеру, что именно означают буквы Д и Р в этих аббревиатурах, отвечают немногие, а уж на вопрос почему буква К означает «кислота», хотя говорят обычно об азотистых основаниях, так и вообще только специалисты. Поэтому начну с простого: НК — это макромолекулярные нуклеиновые кислоты, состоящие из мономерных звеньев следующего вида:

Фрагмент двуцепочечной ДНК.

Фрагмент двуцепочечной ДНК.

Основная цепь (backbone) макромолекулы состоит из чередующихся остатков фосфорной кислоты (желтый кружок) и сахара в циклической форме (оранжевый пятиугольник), а в боковой цепи находится то самое азотистое основание (красное, зеленое, синее или фиолетовое). То есть мономерное звено НК формально амфотерно — оно содержит и кислотный, и основный центр. Но остаток фосфорной кислоты — достаточно сильная кислота, тогда как азотистые основания являются основаниями скорее формально, и в целом макромолекула проявляет в основном кислотные свойства, потому и зовется кислотой. С одного конца макромолекула заканчивается остатком моносахарида, с другой — остатком фосфорной кислоты, поэтому определена направленность макромолекулы: мы знаем, с какого конца её надо начинать читать.

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

Разница между ДНК и РНК, у дезоксирибозы нет кислорода справа внизу.

Разница между ДНК и РНК, у дезоксирибозы нет кислорода справа внизу.

Принцип хранения информации в НК вполне очевиден — макромолекула является строкой, каждый элемент которой имеет 4 варианта строения, то есть мы можем запасти в нем 2 бита. Две цепи в НК или одна — неважно, потому что комплементарность диктует идентичность последовательностей цепей с точностью до одной логической операции. Поэтому ДНК для целей запасания информации явно избыточна, хватит и РНК, и далее не умаляя общности обсуждать будем именно её. На бумаге всё просто: синтезировали цепочку РНК с необходимой последовательностью — получили строку с данными, секвенировали — прочитали строку.

Глава нулевая. Базовые характеристики.

Засим ликбез закончился, переходим к сути, и для начала, хорошо бы понять, есть ли во всем этом какой-то профит. Если мы говорим о холодном хранении данных, то главный параметр, который нам интересен — плотность запасания информации. Мономерное звено в составе РНК, то есть 2 бита, занимает около 2 нм3, что очень круто. Объем одного бита на современных носителях информации гуглится с трудом, но можно грубо прикинуть (поправьте меня, если я ошибаюсь). В современных HDD на один блин запихивают до 2 ТБ данных, а объем (физический) диска — около 2×1021 нм3, то есть около 109 нм3 на байт, у стримеров, возможно, плотность записи чуть выше, но не принципиально. У твердотельных накопителей тоже. Это всё расчеты для холодного хранения, то есть, условно говоря, для блинов HDD, лежащих где-то без корпусов, головок и электроники. То есть по плотности записи мы можем, глубоко в теории, шагнуть вперед на 7 с лишним порядков. Это круто, конечно. Вопрос, реально ли хотя бы часть из этих 7 порядков реализовать на практике?

Для использования РНК в качестве практически полезного носителя информации надо обеспечить:

1) Направленный синтез РНК с любой наперед заданной последовательностью.

2) Хранение РНК в течение длительного (т.к. речь про холодное хранение данных) времени.

3) Неразрушающее прочтение последовательности РНК.

Соответственно, и разбирать мы будем последовательно эти пункты: как это можно реализовать, каковы достижимые параметры процесса, и каковы перспективы его улучшения. Для определенности будем считать, что мы синтезируем цепочки из 200 НК. Почему так, ведь можно и 300, и даже вроде как больше кто-то делал? Потому что дальше дальше сильно падает выход, вырастает цена и увеличивается вероятность ошибки. И 200-то уже оптимистично звучит, когда рассматриваешь такой синтез как рутинную операцию записи.

Глава первая. Синтез НК.

Существует два пути синтеза НК заданной структуры: биосинтез, модификация и хм…небиосинтез, то есть химический синтез. Биосинтез НК — темплатная процедура, то есть чтобы биосинтезировать НК, нам надо уже иметь какой-то несущий информацию биополимер, например РНК, ДНК или на крайний случай полипептид. Ситуация выглядит тупиковой, хотя кой-какие лайфхаки из неё извлечь можно. При модификации НК берут природную НК и изменяют в ней определенные участки, например, таким образом действуют ретровирусы, транспозоны, ну и человек тоже умеет. Но получить таким образом полноценную наперед заданную последовательность на НК невообразимо сложно и дорого, если вообще возможно, поэтому нам этот вариант не подходит, и для нашего гипотетического датабанка модификация — это скорее возможное направление атаки, нам тут таких не надо. Хотя в теории можно хранить данные и на отдельных, заранее известных, участках НК, но это избыточная сложность ради непонятно чего.

Так или иначе, в конце концов мы упремся в то, где взять несущий информацию биополимер, и здесь нам ничего не остается, кроме как химический синтез. То есть методами органической химии, звено за звеном, строить макромолекулу НК. Сейчас мы пользуемся (для синтеза как НК, так и полипептидов) методологией, разработанной несколько десятилетий назад, практически без изменений — твердофазным синтезом. Принцип твердофазного синтеза очень прост: цепочка НК пошагово, по одному мономерному звену, достраивается на «хвостике», привязанном к твердой фазе — гелевому или пористому полимерному субстрату. То есть за один цикл += 1 одно мономерное звено. Цикл этот, если присмотреться к нему повнимательнее, состоит из четырех шагов: coupling (присоединение), capping (терминирование), oxidation (окисление) и detrytilation (снятие защитной группы). Разбирать детально суть и смысл процедур не буду, там материала на отдельный пост, кинусь в вас схемкой, в принципе достаточно понятной:

Цикл синтеза НК, увеличивающий её длину на одно мономерное звено.

Цикл синтеза НК, увеличивающий её длину на одно мономерное звено.

В свое время твердофазный синтез стал прорывом в химии биополимеров и открыл дорогу к автоматизации процесса, ведь он позволил полностью исключить стадии очистки промежуточных соединений, которые занимали как минимум 90% времени всего синтеза. Однако и у него есть технические ограничения: для каждого шага (напомню, их 4 на цикл) надо загрузить в реактор раствор реагента, подождать прохождения реакции (возможно при этом погреть), в несколько промывок удалить израсходованный реагент. Твердая фаза для синтеза НК — это такая засыпка из шариков, по виду похожих на пшено или немного крупнее. Шарики пористые, с микронными порами, поэтому любые процессы массопереноса в них — дело небыстрое. Чтобы заменить в них один раствор на другой, нужны десятки секунд, ограничение скорости диффузии жидкости в пористом теле имеет фундаментальный характер. Производители современных автоматических систем синтеза НК заявляют 2.5 минуты на цикл и до 50 минут постобработки (снятие защит, снятие с подложки, очистка), что бесконечно быстро по сравнению с традиционным растворным синтезом, и даже с теми приборами, с которыми я имел дело (у них время цикла раз в 5–10 больше было), но бесконечно медленно по сравнению с любым использующимся или использовавшимся носителем данных, включая перфокарты. Для синтеза нашей 200-звенной НК самым передовым серийным оборудованием потребуется, таким образом, 7 часов. Запомним, это первый ключевой параметр нашего устройства записи.

Теперь про масштабы и объемную эффективность всего этого дела. Теоретически, благодаря ПЦР нам достаточно одной молекулы НК для того, чтобы секвенировать (прочитать) последовательность. На практике, надежно манипулировать одной макромолекулой НК методами химического синтеза (и особенно очистки) просто невозможно. Мое субъективное мнение, что абсолютный минимум, с которого можно начинать работать — миллион макромолекул. Хотя, давайте для красивых цифр будет даже 600000 макромолекул — это 10–18 моль, или 1 аттомоль вещества. Это очень мало, это где-то 60 фемтограмм. Это абсолютный предел, с текущим уровнем техники даже он недостижим. Упомянутая выше система синтеза, размером с домашний лазерный принтер, обещает какие-то сказочные показатели эффективности, 99.5–99.7% на цикл, что очень круто, я бы был осторожнее и ограничился бы 99.0%. Выход НК обещают на уровне ~100 пикомоль. Предположим даже, мы смогли с помощью микрофлюидики и lab-on-chip даунскейлить всё это дело в 1000 раз, и получили синтезатор размером с яблоко. Ну, плюс обвязка, всякие насосы, емкости с реагентами, подача продукта — это всё снаружи, но это можно обобщить на много синтезаторов. И оттуда выйдет ~1 фемтомоль или 60 пикограмм нашей НК (потому что скейлинг нелинейный, по мере уменьшения периферия будет занимать всё большую долю объема, а реактор — всё меньшую). Это хорошо, это в 1000 раз больше предела, с этим можно надежно (а для устройства записи важна надежность) работать и имеющимися средствами. Итого, раз в 5 часов из объема в ~100 мл будет выходить 50 байт, что соответствует объемной эффективности 1 байт л-1 ч-1. Как, дух уже захватывает от скорости? То ли ещё будет…

Глава вторая. Хранение НК.

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

1) Хранить поодиночке в нумерованных микрохранилищах.

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

2) Хранить в макроскопических хранилищах, адресуя их по номерам, записанным в сами эти цепи.

Тут всё проще в плане постпроцессинга — просто сливай все продукты в одну емкость, условно центрифужную пробирку, и всё. Преимущество по сравнению с первой опцией ещё и в том, что достаточно того фемтомоля, который мы получили с нашего миниатюрного синтезатора. В общем, вариант вполне реальный и технически простой. Однако нумерация цепей отъедает часть полезного объема олигоНК. Сколько? Если у нас на одной олигоНК 50 байт, то мы без проблем можем пожертвовать, скажем, 4 байта на адрес, получив 4 с лишним миллиардов адресов. 4 млрд по 60 пикограмм, то есть 250 мг олигоНК. С учетом того, что хранить их надо в среде, а не в чистом виде — как раз влезет в центрифужную пробирку. По плотности записи данных это около 200 Мб на 2 мл, то есть (я очень, очень грубо округляю) около 1014 нм3 на байт. Плюс, проблема в том, что не только лишь все методы секвенирования могут раздельно секвенировать олигоНК в смеси, тем более в такой адовой (об этом мы поговорим в следующей главе). А разделять макроскопическими методами 4 млрд НК — это вряд ли вообще когда-то будет возможно.

3) Сшивать в длинную НК биохимическими методами.

С одной стороны, это наиболее правильный с точки зрения высшей справедливости способ хранения. Но технически это огромный такой геморрой как с записью, так и с чтением. Чтобы сшить две олигоНК в одну, используют лигазы. Нам по большому счету нужно, чтобы на концах фрагментов, предполагаемых к сшивке, стояли заведомо известные последовательности, и комплементарный этой паре фрагмент (назовем его патчем), этакий сварочный магнит, временно скрепляющий эти фрагменты перед работой сварки (НК-лигазы). Ничего принципиально сложного, но отъедает полезную длину олигоНК, довольно дорого и имеет сравнительно высокий процент ошибки. В теории, можно для довольно большого набора олигоНК синтезировать набор патчей, попарно комплементарных концевым последовательностям олигоНК, и сшить всё это в правильной последовательности в один проход, но во-первых процент ошибки возрастет для совсем уж неприличных значений, а во-вторых, как потом делить этот компот? Второй вариант — сшивать последовательно. Тогда можно обойтись одним патчем и существенно снизить сложность разделения, но ценой времени. Как преимущество — тут действительно можно будет обойтись очень малым числом «длинных» НК при хранении. Я бы сказал, что плотность записи здесь будет на 2–3 порядка выше, чем в случае 2 (ниже по расчетам у меня вышло ~1012 нм3 на байт). В целом, если нам не жалко дни и даже недели на запись — вариант более-менее реалистичный, если сшивать где-то до длины в 5–10 тысяч оснований. Хотя я не то, чтобы сильно шарю за НК-лигазы, наверняка в этом процессе много подводных камней.

Хранить ex vivo олигоНК рекомендуют при низких температурах, от -20 до -78 С. Почему так, мне не очень понятно, тем более когда речь идет о коротких олигоНК без гиперструктуры. По моему опыту, небольшие олигоНК прекрасно хранятся в обычном холодильнике (+2–5 С) по многу лет кряду. In vivo же, сами понимаете, НК хранятся десятилетиями при температуре 36.6 C, и если не шарашить их внешними факторами типа канцерогенов или излучения, ничего с ними не делается. Поэтому пока что условимся, что криобанк нам-таки не нужен, максимум большой холодильник. Вполне достаточно использовать для хранения что-то вроде пронумерованных 96-луночных планшетов или пробирочных штативов, возможно увеличив плотность лунок/дырок для оптимизации свободного пространства. Плотности записи, которые мы считали, надо будет поделить на 2–4, с учетом того, насколько плотно можно напихать среды, содержащие НК, в эти планшеты/штативы, и сколько места отожрут системы транспортировки и прочая сопутствующая инфраструктура.

Глава третья. Чтение с НК.

Тут мы поговорим про наиболее знакомую людям часть всего этого процесса — секвенирование, то есть определение последовательности НК. Итак, как минимум для того, чтобы чтение было многократным, перед чтением надо произвести амплификацию нашего «блока данных» — смеси коротких олигоНК или длинной НК. Благо, здесь нам поможет ПЦР — полимеразная цепная реакция.

Для классической ПЦР нужен праймер — небольшой, 20–30 оснований, олигоНК, с которого и начнется репликация (не придирайтесь к терминологии). В этом плане выгоднее всего смотрится вариант хранения 3 на длинных НК. Потому что потеря 20–30 затравочных оснований на цепи длиной в десятки тысяч вообще нечувствительна, а при этом в одной условной пробирке будет довольно мало различных длинных НК (1–10 млн, против 4 млрд в супе из коротких НК, если хранить в микроемкостях на 10–20 мкл, то можно ещё раз в 100 уменьшить количество, до 10–100 тысяч). Это дает реальную возможность заготовить полный набор праймеров и выгонять поодиночке их при необходимости чтения. То есть нормальный такой доступ по адресам, не совсем даже холодное хранилище выходит, а, скорее, прохладное. Амплифицируем селективно конкретную длинную НК, секвенируем любым доступным методом, желательно конечно NGS (о методах секвенирования отдельно). Можно амплифицировать и из произвольного места НК, имея соответствующий праймер, но не нужно, у нас всё-таки холодное хранилище. А так, если у нас цепочка в 10 тысяч оснований (примерно предел надежной амплификации фрагмента), то в пределах погрешности ячейка памяти у нас будет 20 Кб. Тогда одна микроемкость со, скажем, 100 тысячами различных НК будет кластером размером в 2 Гб. С учетом размера стенок и тд., объем такой емкости будет в пределах 0.5 мл, что дает плотность ~1012 нм3 на байт. Уже ближе к HDD, но всё ещё 3 порядка разделяют нас, точнее их.

Если говорить про суп из олигоНК по варианту 2, то отожрать 20–30 оснований из цепи в 200 уже как-то жаба душит. Хотя, это всего 10–15% объема данных, пережить можно. Если мы используем праймеры, то их нужно ~4 миллиарда (см. выше). Причем они нужны уже в достаточно больших количествах (они используются в каждой операции чтения), и они должны храниться раздельно, чтобы физически можно было отобрать один и поместить в суп для селективной амплификации нужной олигоНК. Это возможно, конечно, но весьма громоздко. Скажем, если хранить праймеры даже в 15 мл центрифужных пробирках, это ~ 60 000 м3 чистого объема, с учетом обвязки и неиспользованного пространства — ещё в несколько раз больше, то есть отдельное большое здание для хранения праймеров, плюс сложная, дорогая и медленная логистика. Но есть варианты. Во-первых, есть беспраймерная амплификация. Она, понятное дело, копирует без вариантов олигоНК целиком, ну, а нам того и надо. Сейчас это не коммерческая технология, а исследовательский метод, но ничего принципиально сложного в ней нет. Просто healthcare индустрии она не нужна, поэтому и не коммерциализуется. Ну и второй, самый читерский вариант — банальной, дешевой, грубой и топорной химией можно легко получить исчерпывающую смесь олигоНК примерно определенной длины (скажем, в диапазоне 20–30 оснований). Исчерпывающую — значит что там будут представлены все возможные комбинации, и в пропорциях примерно соответствующих комбинаторным. Делается это в растворе, а не на твердой фазе, поэтому сделать этого праймер-супа можно много. А далее, используем этот праймер-суп для амплификации нашего супа из олигоНК, мы получаем…много этого же самого супа, достаточно для секвенирования.

Секвенатор MinION. Даже сейчас довольно компактная штука.

Секвенатор MinION. Даже сейчас довольно компактная штука.

Но и здесь есть, конечно же, проблемы. Во-первых, это я так лихо тут рассуждаю при амплификацию супа из миллиардов олигоНК, а насколько хорошо это будет работать на практике, и с какой долей ошибок — я не знаю. По идее, чем длиннее праймер, тем меньше ошибок, но тем больше мы отжираем от данных. В целом, решаемо, вопрос в нахождении баланса. Во-вторых, не только лишь все методы секвенирования тут помогут. Я бы даже сказал, что буквально полтора. Классические методы, вроде метода Сэнгера, отсеиваются сразу. Из NGS (по крайней мере как видится мне) подойдет лишь метод MinION. Суть метода проста: Есть сложная супрамолекулярная конструкция (сканер или считыватель), через которую протягивается цепочка НК. Прохождение каждого основания меняет электрический потенциал конструкции, который может детектироваться прямо (да, умеют прям электродами измерять и изменения потенциала в столь малых объектах) или косвенно. Соответственно, регистрируется по сути цифровой сигнал с пятью логическими уровнями — ноль и четыре варианта оснований. Цепочка за цепочкой, этот девайс может прочитать все присутствующие в смеси варианты олигоНК, а если он будет не один, чтение, разумеется, пройдет быстрее. Минус метода — высокая доля ошибок. Во-первых, погрешность самого метода, а во-вторых, потери данных: чисто статистически есть неиллюзорная вероятность, что среди 4 млрд вариантов олигоНК, присутствующих в растворе, какие-то из них ни разу не попадутся в цепкие лапы сканера. Либо надо обеспечить высокую долю прочтения, что увеличит время секвенирования. Короче, ситуация примерно как с потерей пакетов при передаче данных. Но, с этим вполне умеют бороться, и я уверен, что при необходимости поборют и потери при секвенировании супа. Хэшированием, многократным секвенированием или чем-то похитрее, я не силен в этом. Ну и ещё есть половинка метода — многомерный гель-электрофорез с последующим секвенированием другими методами, например Illumina-SOLEXA. Половинка потому, что а) я не знаю, вытянет ли в принципе многомерный электрофорез разделение такого количества не таких уж и коротких олигоНК, а во-вторых, хватит ли чисто по количеству разделенного для секвенирования «как есть». Метод супа, как мне кажется, хорош для максимально холодного хранения, когда доступ к данным нужен максимально редко и ко всем сразу.

Скорость чтения упирается по сути в возможности MinION, поэтому в пределе примерно одинакова для обоих методов: около 0.1 с на основание, то есть 0.4 с на байт (амплификацию не учитываем, т.к. она одна на очень-очень много олигоНК). Система секвенирования MinION после некоторой доработки вполне может поместиться в объеме 10 мл, поэтому 250 байт она прочитает за 1 с в считывателе (многопотоковом) объемом 1 л, то есть 900 Кбайт ч-1 л-1 . Для метода 2 надо учитывать борьбу с потерями пакетов, что уменьшит скорость чтения, скажем, на порядок, то есть 90 Кбайт ч-1 л-1, что на 5 порядков выше, чем скорость записи. По методу 3 можно как амплифицировать селективно отдельную НК, так и анализировать по той же схеме, что и суп из метода 2. Поэтому в пределе скорость чтения ± такая же, но есть возможность более медленного и дорогого доступа по адресам.

Итог

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

1) Плотность записи от 1012 нм3 байт-1

2) Объемная скорость записи 1 байт л-1 ч-1

3) Объемная скорость чтения 90 Кбайт л-1 ч-1

4) Цена — over дохрена. Я бы сказал, что хранилище, вне зависимости от объема, будет стоить от нескольких десятков миллионов долларов.

Главная проблема в том, что мы не можем оперировать единичными макромолекулами НК, и даже сотнями-тысячами. Нужны миллионы. Узким местом является именно процесс записи (синтеза олигоНК), потому что чтение (амплификация-секвенирование) может быть осуществлено c меньших количеств. Хоть амплификация даже 60 пикограмм олигоНК это уже не совсем рутинная задача по меркам сегодняшних коммерческих технологий, но принципиальных ограничений на повышение чувствительности пока нет.

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

С другой стороны, есть протеомика, где даже природных аминокислот 20 штук. Много ли это даст? Ну, увеличение плотности записи в 2 с лишним разом за счет увеличения логической плотности, плюс мономерное звено пептида по физическом объему раза в 3 меньше, чем НК. С другой стороны там всё сложнее и с амплификацией, и с секвенированием. Хотя, есть надежда что аналог MinION сделают и для протеомики. А, ну и с хранением намного проще, вообще холодить не надо, особенно если из списка аминокислот исключить цистеин.

© Habrahabr.ru