ДНК глазами кодера
или
если ты молоток, то всё кругом похоже на гвозди.
|
'Одна из крутейших вещей, которые я читал в последнее время.' -- jwz Оригинал текста на английском. Перевод
выполнен При копировании перевода ссылка
обязательна.
|
Это лишь некоторые размышления программиста о ДНК. Я не генетик. Если вы нашли ошибку, пожалуйста сообщите по почте (Берту Хуберту) по адресу ahu@ds9a.nl.
Я не пытаюсь навязать свой взгляд на ДНК - каждое наблюдение довольно свободное. Спросите откуда я взял всё это? Из головы и из книг.
3 января 2008:
Много добавлений пришло после добавления
страницы в Reddit.com, Я сейчас
систематизирую и объединяю предложенные изменения. Пожалуйста
продолжайте присылать обновления!
23 сентября 2006:
Небольшое изменнеия в количестве генов. Еще
несколько изменений было прислано в последние 4 года. Я попытаюсь
добавить их на страницу.
16 июня 2002:
Добавил маленький кусочек в проблему зависания и
рак. Я думаю это новый взгляд, но не уверен. В списке того, что надо
сделать: повторное использование кода через альтернативный сплайсинг.
18 мая 2002:
Между тем специалисты по генетике прочитали статью
нашли и исправили некоторые ошибки. На днях я добавил информацию о
клетке как конечном автомате, о форке и форкбомбах.
24 мая 2002:
Немного ясности по OPN внесли отличные люди с
#bioinformatics. Добавил несколько картинок, чтоб украсить страницу.
Добавил немного в раздел основная догма.
Здесь. Это не шутка. Хотя мы можем задуматься насчет лицензии. Возможно мы должны спросить разрешение у: Крейга Вентера. Исходник можно посмотреть через прекрасный набор perl скриптов 'Ensembl'. Человеческий геном занимает порядка 3 гигабайт, его можно ужать до 750 мегабайт. Довольно удручающе, сравнимо по размеру с 2.8 браузерами Mozilla.
ДНК не похожа на исходник на C, более похожа на скомпилированный байткод для виртуальной машины под названием 'Ядро клетки'. Сомневаюсь, что есть исходник этого байткода - то, что вы видите это всё, что у нас есть.
|
Язык ДНК цифровой, но не двоичный. Если двичный код имеет два значения в арсенале 0 и 1, то ДНК имеет 4 - T, C, G и A. Тогда как цифровой байт занимает 8 двоичных знаков, 'байт' ДНК (называемый 'кодон') имеет три знака. Каждый знак может иметь 4, а не 2 значения, т.е кодон ДНК может иметь 64 различных значения, в отличии от 256 значений байта. |
|
Пример кодон ДНК 'GCC' кодирует аминокислоту Аланин. Комбинация аминокислот называется 'полипептид' или 'протеин', это химически активные вещества необходимые для существования всего живого.
Читайте также http://www.ultranet.com/~jkimball/BiologyPages/C/Codons.html.
Библиотеки динамического связывания (.so в Unix, .dll в Microsoft) их код не может использовать статические адреса внутри т.к. Он может располагаться в различных участках памяти в разных ситуациях. В ДНК тоже есть что-то подобное, это 'переносимый код':
|
Около половины генома человека составлено из переносимых элементов или прыгающих ДНК. Впервые открытые в 1940ых Барбарой Мак-Клинток при изучении специфических образцов наследования цвета кукурузы, прыгающая ДНК относится к идее о том, что некоторые отрезки ДНК непостоянны и "переносимы", то есть, они могут переместиться между хромосомами. |
||
|
|
Из 20,000 - 30,000 генов человеческого генома, большинство клеток используют лишь малую часть, которая имеет значение, клетка печени особо не нуждается в коде ДНК который создает нейроны. Но поскольку практически все клетки хранят полную копию (дистрибутив) генома системе необходима директива #ifdef чтоб исключить лишний код. И именно так всё и работает. Генетический код полон #if/#endif директив. Вот почему 'стволовые клетки' так популярны прямо сейчас — эти клетки имеют возможность преобразоваться во что угодно. Код не был обработан в соответствии с директивами #ifdef. Говоря более точно, стволовые клетки не включают в себя всё — оне не являются одновременно клетками печени и нейронами. Клетки подобны конечным автоматам, изначально являющимися стволовыми клетками. В течении времени жизни клетки, она клонируется ('fork()') несколько раз и специализируется. Каждая специализация может быть расценена как выбор ветви дерева. Каждая клетка может принять решение (или ее побуждают) о своем будущем, которое делает ее более специализированной. Эти решения сохраняются при клонировании в факторах предписания и в пространственном расположении ДНК ('стерический эффект'). Клетка печени, хотя она и несет в себе необходимую генетическую информацию, не сможет функционировать как клетка кожи. Есть некоторые предпосылки к тому, что возможно 'размножить' клетки 'вверх' по иерархии, делая их плюрипотентными. См. также эту статью. |
|
|
Геном замусорен старыми копиями генов и экспериментами, которые прошли неудачно в последние, скажем, пол миллиона лет. Код храниться, но он неактивен. Это так называемые 'псевдо гены'. Более того, 97% ДНК закомментировано. ДНК линейна и читается от начала до конца. Части которые не должны быть раскодированы четко помечены, похоже на комментарии в языке C. Используемые 3% формируют так называемые 'экзоны'. Комментарии, которые идут в промежутках называются 'интроны'. Эти комментарии захватывающие по праву. Как в комментариях языка C у них есть начальный маркер, похожий на /*, и конечный, похожий на */. Но есть дополнительная структура. Помните что ДНК похожа на магнитофонную ленту - комментарии надо удалить физически! Начало комментария почти всегда обозначается буквами 'GT', которые таким образом соответствуют /*, конец обозначается 'AG', что соответствует */. Тем не менее, ввиду физического извлечения комментариев, необходимо немного клея для склейки кода перед комментарием и кода после, что делает оформление комментариев более похожим на html комментарии, которые длиннее: '<!--' обозначает начало, '-->' обозначает конец. |
Итак действующая ДНК с экзонами и интронами может выглядеть так:
ДЕЙСТВУЮЩИЙ КОД<!-- бла бла бла бла бла ---- бла -->ACTUAL CODE
| | | | | |
экзон 1 акцептор интрон 1 ветвь донор экзон 2
(начало комментария) (конец комментария)Начало комментария понятно, за ним следует много некодирующих ДНК. Где-то рядом с концом комментария находится 'место ветви', которое указывает на то, что комментарий вот-вот закончится. Затем еще несколько комментариев, и действительный конец комментария.
Удаление комментариев происходит после того как ДНК считывается в РНК путем соединения действующих участков кода. РНК обрезается в 'месте ветви' рядом с окончанием комментария, после чего 'акцептор' (начало комментария) и 'донатор' (окончание комментария) соединяются вместе.
Теперь, для чего же нужны комментарии? Эта дискуссия часть священной войны, которая может соперничать с vi против emacs. Сравнивая разные биологические виды, мы узнаем, что некоторые интроны отличаются меньше чем соседние экзоны. Это подсказывает, что комментарии очень важны для чего-то.
Есть много объяснений для большого количества некодирующей информации ДНК — одна из наиболее притягательных (для кодера) это 'склонность к склеиванию'. ДНК хранится в сильно закрученной форме, но не все ДНК коды соответствуют этому.
Это напомнит вам RLL или MFM кодирование. На жестком диске бит кодируется сменой полярности или отсутствием ее. Простейшее кодирование: 1 это смена полярности, 0 - нет.
Для кодирования 000000 просто не меняем магнитное поле на нескольких микрометрах. Тем не менее, при раскодировании, возникает неясность — сколько микрометров мы прочитали? Соответствует ли оно 6 нулям или 5? Чтоб избежать этой проблемы данные хранятся так чтоб длинных цепочек без изменения полярности не встречалось.
Если мы встречаем 'нет смены полярности, нет смены полярности, нет смены полярности, смена полярности, смена полярности' на диске, мы можем быть уверены, что это соответствует '0011' — весьма маловероятно, что наш процесс чтения настолько неточен, что это может соответствовать '00011' или '00111'. Итак нам необходимо вставить разделители чтоб предотвратить образование участков без смены полярности. Это называется 'RLL' на магнитных носителях.
Стоит заметить что иногда нужно добавить дополнительную информацию, чтоб убедится, что данные храняться надежно. Интроны возможно выполняют эту функцию, обеспечивая дополнительную надежность хранения основного кода.
Тем не менее, эта область молекулярной биологии — минное поле! Огромный гнев и критика по поводу интронов, научных фраз типа 'склонность к склеиванию' и 'потенциал стволовых циклов (stem-loop)'. Я думаю лучше всего не встревать в гневные дискуссии.
Очаровательная ссылка сомнительного научного значения http://post.queensu.ca/~forsdyke/introns.htm .
Как принято в unix, клетки не 'порождают' — они делают fork. Все Ваши клетки начинаются с яйцеклетки, которая много раз форкнула себя. Как и процессы, обе половинки fork() в основном идентичны вначале, но после они могут выполнять разные действия.
Как и в unix, большая проблема возникает, когда клетки продолжаюь безудержно форкать. Быстро истощающиеся ресурсы иногда ведут к смерти. Это называется опухоль. Клетки отсеиваются через 'ulimits' и 'watchdogs' чтоб предотвратить данную ситуацию. Количество делений ограничено например с помощью укорачивания теломеры.
Клетка не может клонироваться до тех пор пока не встречено обязательное условие — 'защищенная по умолчанию' конфигурация. И только если все эти защитные барьеры не справляются может начаться рост опухоли. Как и в компьютерной безопасности, сложно найти золотую середину между защищенностью ('ни одна клетка не может делиться') и полезностью.
Сравнивая с широко известной Проблемой зависания, вперые описанной основателем компьютерной науки, Аланом Тьюрингом.Видимо также невозможно предсказать закончится ли данная программа когда-нибудь как и создать действующий геном, который не может заболеть раком?
Он вскоре понял, что это именно то, что биологические вирусы делали на протяжении миллионов лет. И они чрезвычайно хорошо справлялись.
Многие из этих вирусов стали фиксированной частью нашего генома и являются попутчиками всех нас. Чтобы сделать это, они вынуждены скрываться от антивирусного сканера, который пытается обнаружить чужой код и не допустить его попадание в ДНК.
Когда ученые еще открывали основы генетики они сталкивались со множеством различных химических веществ, но корреляция была неясной. Когда же стало ясно, что происходит от чего, это было воспринято как великий триумф и получило название «Основная догма».
Эта догма говорит нам, что ДНК используется для создания РНК и РНК используется для производства белков, похоже, скажем, на то как из a.с файла получается a.o файл, который может быть скомпилирован в исполняемый файл (a.out / exe ). Она также говорит нам, что это единственный путь, которым проходит информационный поток.
В настоящее время Основная догма несколько запятнана. Как и любой проект программируемый миллиард лет, много хаков уже произошло, и иногда информационные потоки идут в другую сторону. Иногда РНК патчит ДНК, и ДНК изменяется белками, созданными ранее.
Но в целом, зависимость ясна, поэтому «Основаная догма» остается важной.
|
|
Мы можем достаточно легко хитрить с ДНК. Есть компании, которым можно отправить ASCII файл с символами ДНК, и они будут синтезировать соответствующий "выходной продукт" для вас. Мы можем также скрещивать ДНК и производить новые виды животных и растений. Гораздо труднее пропатчить исполняющийся в данный момент код, как любой программист может подтвердить. Тоже самое и с геномом. Чтобы изменить запущенную копию ( 'человек'), вам необходимо отредактировать каждую и все соответствующие копии гена, который вы патчите. На протяжении многих лет, медицинская наука пытается пропатчить людей с ОКИД, или «острый комбинированный иммунодефицит», который является очень неприятной болезнью, она фактически отключает иммунную систему - приводит ко многим болезням. Стало ясно, что проблема кроется в ДНК и она должна быть исправлена, чтобы вылечить этих людей. Многочисленные попытки, сделал заплатку реальным людям были предприняты. Использовали вирусы, чтоб вставить новый ДНК в живые организмы, но это оказалось очень трудно. Геном охраняется очень хорошо для такого простого подхода к работе — клетки охраняют их код лучше, чем Microsoft! Однако, в последнее время правильный вирус был найден, который смог нарушить защиту генома и отремонтировать поврежденные символы, что привело к выздоравлению людей. |
При исправлении багов в компьютерном ПО, мы часто добавляем новые в ходе процесса. В геноме полно такого. Многие афроамериканцы имеют иммунитет к малярии, но в место этого страдают от серповидно-клеточной анемии:
|
В тропических регионах мира, где очень распространена
переносимая паразитами болезнь малярия, люди с одной копией
определнной генетической мутации имеют преимущество выживания.
|
Есть немало примеров такого явления. Смотрите также отличную книгу Мэтта Ридли 'Геном'.
Как и компьютерное хранилище данных, ДНК (и ее производная 'РНК') может испортиться. Для защиты от обычных 'ошибок одного бита', кодирование из конкретной ДНК в белок вырождается. Есть 4 РНК символа, U, C, G и A - другими словами, 'байт' имеет длину два бита. Тройка символов соответствуют аминокислотам.
|
|
6 бит могут предположительно отобразиться на 64 аминокислоты, тем не менее только 20 аминокислот используются. Например, UCU, UCC, UCA и UCG все кодируют 'Серин', тогда как UGG кодирует 'Триптофан'. |
Теперь выясняется что некоторое подобие опечатки (UCU -> UCC) в кодировании привело к тому что они кодирую одну и ту же аминокислоту. Больше информации об этом увлекательном явлении можно прочитать в книге Дугласа Хофштадтера 'Metamagical Themas'.
Некоторый код священен. Мы не помним кто его написал, или зачем - мы только знаем что он работает. Парень который его придумал уже покинул компанию. Такой код нельзя трогать.
В ДНК есть концепция 'молекулярных часов'. Некоторые части генома активно меняются и некоторые учатки неприкосновенны. Хороший пример это Гистоны H3 и H4.
Эти гены основополагающие для фактического хранилища генома и поэтому имеют первостепенное значение. Любой сбой в этом коде приведет к отказу организма.
Таким образом этот код не следует трогать. Гены H3 и H4 имеют нулевой уровень мутации среди людей. Более того, точно такой же код имеют все от цыплят до растений и плесени.
|
ЧАСТОТА ЗАМЕНЫ НУКЛЕОТИДОВ В ОДНОМ МЕСТЕ НА 1000 МИЛЛИОНОВ ЛЕТ СРЕДИ РАЗНЫХ ЛЮДЕЙ И ГРЫЗУНОВ В ПРОТЕИНО-КОДИРУЮЩИХ ГЕНАХ С ВЫБОРКОЙ В 80 МИЛЛИОНОВ ЛЕТ НА ОСНОВЕ РАСКОПОК:
|
|||||||||||||||||
|
http://www.staffs.ac.uk/schools/sciences/biology/Handbooks/evolseqphylo.htm |
Итак похоже есть два способа которыми геном может убедиться что он не мутировал. Первый способ описан выше: использовать вырожденные аминокислоты, гарантирующий что опечатки имеющие место быть дают тем не менее правильный результат.
Кроме того ген может быть скопирован раньше или позже в репродуктивном процессе клетки, ведущий к более или менее благоприятным условиям копирования. Множество подобных условий применяется.
Похоже, Н3, Н4 был продуман автором очень внимательно, поскольку они имеют много «тождественных изменений», которые благодаря умным техникам, описанным выше, не приводят к изменениям на выходе.
...0 0000 0001 0000 0010 0000 0011 0...
Эта последовательность однозначно описывает 8 битные значения 1, 2 и 3. Пробелы я добавил, чтоб было более понятно где начинается и заканчивается байт. Многие устройства последовательного чтения задействуют стартовый и стоповый биты, чтоб закодировать точку начала чтения. Если мы сдвинем последовательность слегка:
...00 0000 0010 000 00100 000 00110 ...
Внезапно читаем 2, 4, 6! Чтоб предотвратить такие вещи в ДНК используются сигналы, которые сообщают клетке, где начать чтение. Интересно, что есть участки кода в геноме которые можно читать с разных начальных позиций, и получать полезный (но различный) результат каждый раз. Вот что я называю кул хаком!
Каждый из способов кторым нить ДНК может быть прочитана называется Открытый читающий фрэйм и их, как правило, 6, по 3 с кажой стороны.
Теперь, ДНК не похожа на язык программирования. Это действительно так. Но есть колоссальные аналогии. Мы можем рассматривать каждую клетку как процессор, исполняющий свое программное ядро. Каждая клетка имеет копию всего ядра, но активирует только соответствующие ей части. Грубо говоря модули и драйвера которые она загружает.
|
Если клетка должна сделать что-то ('вызвать функцию'), она выбирает нужный кусок генома и кодирует на его основе РНК. РНК транслируется в последовательность аминокислот, которые совместно создают протеин, результат кода ДНК. Теперь действительно крутая фишка. :-) Созданный протеин помечен адресом доставки. Этот маркер состоит из нескольких аминокислот, которые сообщают клетке, куда этому протеину следует перемещаться. Есть механизм который исполняет данные инструкции, и доставляет протеин к месту, возможно и вне клетки. Затем инструкции доставки удаляются и несколько шагов пост обработки могут выполнятся. Возможно активация протеина - что удобно т.к. не всегда нужно транспортировать активный протеин в местах, где он не должен работать. Удобнее активировать на месте. |
|
Если мы уничтожим все компиляторы языка C на планете и оставим только исходник компилятора, у нас будет большая проблема. Да, мы имеем исходники C компилятора на C, но нам нужен работающий C компилятор чтоб собрать его!
В реальности, этой проблемы не возникло так как первый C компилятор был написан не на C, а на доступном языке: B. Читайте тут детали 'начальной загрузки'.
Тоже самое касается и генома. Чтоб создать новый 'бинарник' по образцу, требуется действующая живая сущность. Геному требуется инструменатрий чтоб создать живое. Код сам по себе бессилен. Этот инструментарий обычно называют 'ваши родители'.
Похоже что РНК, являющаяся посредником между ДНК и белком, возможно является 'B' для ДНК. Отсюда вопрос откуда взялась первая РНК. Любопытно заметить, что внеземные объекты часто содержат аминокислоты! Гуглите http://www.google.com/search?hl=en&q=amino+acids+meteorites
|
|
Организм обычно начинается с одной клетки, которая, как говорилось выше, содержит две полные копии генома. Большой tar-файл так сказать, с распакованными файлами, готовыми к работе. Что дальше? Знакомьтесь Гомеобокс гены. Клетки должны копироваться и получать назначение. Гомеобокс гены полагаются на принцип 'сверху вниз', который гласит 'начинаем с головы'. Чтоб такой порядок состоялся, химический градиент создан клетками, которые ощущают себя необходимыми для строения головы или для создания изначальной хорды. Открытые только в 1983, Гомеобокс гены очень захватывающая область исследования прямо сейчас. Интересно заметить, что как и Makefile, 'HOX' гены только регулируют другие гены и не создают чего-то материального сами. Синтаксис Гомеобокса представляется очень священным в смысле описанном выше. Что произойдет если вы скопируете 'селектор ног' часть мышиного HOX гена в Гомеобокс дрозофилы:
Геномы человека и дрозофилы разошлись не миллион лет назад, а сотни миллионов лет назад. И вы можете копипастить куски ('Селекторы' на языке генетики) мэйкфайла и оно сработает. Пожалуйста помните, что процедура 'создать ногу' у дрозофилы радикально отличается от аналогичной у мыши, но 'селектор' корректно будет выполнять инструкции. |
|
Геном Мэтт Ридли |
Удивительный сборник эффектов которые каждая хромосома оказывает на нашу жизнь. Очень читабельно, не слишком теоретизировано. Содержит впечатляющий набор ссылок. Источник многих впечатляющих примеров этой страницы. И чтоб помочь Мэтту в вопросе, который он поставил в своей книге. Я хочу твердо заявить: Причины болезней не в генах |
|
Молекулярная генетика, второе издание Тома Страчан и Эндрю P. Рида |
Заполняет пробел между 'основной литературой' (т.е. академические журналы и газеты) и вводной литературой. Я прочитал ее от корки до корки, постоянно выискивая что-то, чтобы понять предмет. Если вы хотите узнать детали про интроны, экзоны, РНК во всех вариациях, как гены вызывают и предотвращают заболевания, стоит выбрать эту книгу. |
|
Эгоистичный ген Ричарда Докинза |
Ричард Докинз это Ричард Стивенс теории эволюции. Оба посвятили практическую работу предмету, но более известны наглядным представлением теории миллионной аудитории. В этой книге Докинз объясняет эволюцию с точки зрения гена, а не видов. |
|
Слепой часовщик : Почему доказательства эволюции свидетельствуют о Вселенной без строения Ричарда Докинза |
Еще одна книга Докинза. Больше о эволюции, а не о генах. Ясно объясняет как эволюция может быть причиной сложного строения живых существ. Еще одна очень читабельная книга для любого уровня подготовки. |
|
Metamagical Themas Дугласа Хофштадтера |
Это книга-идея. Она переполнена
идеями, идеи вытекают со страниц. Многие
из этих идей о теории информации, генетике, жизни, исследованиях,
музыке, математике и людях. Не генетический учебник, но сыграл
весомую роль во вдохновлении многих людей. Часто можно найти в
букинистических магазинах. |