Всё сочувствие, на которое мы решились
 

Язык программирования для живого компьютера

Набор логических элементов, которые можно записать в ДНК, позволяет создавать относительно сложные алгоритмы для «бактериального калькулятора».

Язык программирования для живого компьютера

В основе работы электронных устройств, от калькулятора до компьютера, лежат логические операции: например, если выполняются два каких-то условия, связанные логическим оператором AND, то машина что-нибудь посчитает, если же одно условие не выполняется, то машина ничего делать не станет. Можно ли то же самое сделать на основе живой клетки?

Оказывается, можно, если логическим операциям поставить в соответствие молекулярно-биохимические процессы, когда связкам AND (и), OR (или) и другим будут соответствовать те или иные внутриклеточные реакции. Например, логический оператор AND может запустить синтез флуоресцентного белка: в клетку приходят извне два сигнала (в виде каких-то химических веществ), биохимические процессы выполняют аналог логического сложения и, если операция прошла успешно, в итоге синтезируется светящаяся белковая молекула. За последние годы такие живые калькуляторы сумели сделать в Высшей технической школы Цюриха и в Массачусетском технологическом институте. Более того, бактерию даже научили помнить результат, полученный в результате её «логических размышлений»: в экспериментах исследователей из Массачусетского технологического института кишечная палочка в ответ на какой-то сигнал из внешней среды синтезировала кусок ДНК, а специальный фермент, которым её снабдили, встраивал новосинтезированную ДНК в бактериальный геном, причём в строго определённое место. Таким образом, хромосома бактерии выступала в роли жёсткого диска; об этой работе мы уже писали.

Ну а если не ограничиваться одной-двумя логическими процедурами, а попытаться создать целый язык программирования, воплощённый в молекулярных взаимодействиях и биохимических реакциях? В статье в Science Кристофер Войгт (Christopher A. Voigt) из всё того же Массачусетского технологического института и его коллеги из Бостонского университета и Национального института стандартов и технологий как раз такой язык и описывают. В качестве основы исследователи использовали Verilog, один из так называемых языков описания аппаратуры, с помощью которых логические операции переводят в электрические микросхемы. Составными элементами «клеточного Verilog’а» стали логические элементы и сенсоры, от которых к логическим элементам поступали самые разные данные, от содержания кислорода или глюкозы в среде до температуры и уровня кислотности. Самым сложным, по словам авторов работы, было вписать в бактериальный геном 14 логических вентилей – так называют элементы цифровых схем, выполняющие элементарные логические операции (вроде уже упомянутых AND, OR, NOT и т. д.); трудность же была в том, чтобы химические реакции и межмолекулярные взаимодействия, которые служили алгоритмам материальной базой, не мешали бы ни друг другу, ни прочим клеточным процессам.

Язык программирования для живого компьютера
Схема чипа с четырьмя логическими вентилями NAND (НЕИ). Теперь похожие логические схемы можно создавать в бактериальных клетках.

В результате удалось сконструировать 60 разных программных цепочек. Некоторые из них предназначались для измерений каких-то внешних параметров, некоторые же были посложнее: например, от клетки требовалось проранжировать три входящих сигнала и отреагировать на тот, который в данный момент оказался самым главным. Одна из логических цепей включала в себя семь элементарных логических операций, и для её записи понадобилось 12 000 генетических «букв» ДНК.

Язык программирования для живого компьютера
Клетки кишечной палочки можно запрограммировать на выполнение сложных алгоритмов, содержащих семь логических операций.

Все эксперименты делали на кишечной палочке, однако в перспективе исследователи хотят адаптировать этот язык программирования для других бактерий, таких как Bacteroides (представители которых живут в нашей пищеварительной системе) и Pseudomonas (обитающий на корнях растений); кроме того, сложному программированию хотят подвергнуть и дрожжей Saccharomyces cerevisiae. Можно представить, что в будущем удастся разработать системы программирования и для многоклеточных организмов, однако не стоит забывать, что успех программы будет зависеть от того, насколько сложен геном организма и насколько хорошо мы понимаем, как он работает. Варианты программных алгоритмов для эукариотических клеток, чей геном больше и сложнее, чем у дрожжей, появятся, скорее всего, не очень скоро.

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

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

Автор: Кирилл Стасевич

Ссылка на источник