А как их читают программисты?

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

От крошечных бактерий, таких как E. coli к Homo sapiens, эта крошечная молекула является источником невероятного биологического разнообразия Земли. Хотя последствия сложны, структура самой ДНК совсем не сложна. Как это возможно? Что такое ДНК и как она может так много делать?

Основная структура жизни

ДНК очень мала, но если бы вы могли приблизить масштаб ядра одной клетки в своем теле, вы бы увидели своего рода извилистую лестницу, свернутую в виде спирали. Лестница строится ступенька за ступенькой из относительно простых молекул, называемых нуклеотидами. В ДНК есть четыре типа нуклеотидов: аденин, тимин, цитозин и гуанин; обычно сокращается до A, T, C или G соответственно. У каждого нуклеотида есть партнер; Нуклеотид A на одной стороне лестницы всегда сочетается с T на другой стороне лестницы, чтобы образовалась стабильная ступенька. Точно так же нуклеотид C всегда спаривается с G. В ДНК эти связанные партнеры называются парами оснований.

Пара за парой эти маленькие молекулы объединяются, образуя ДНК. Отдельная непрерывная молекула ДНК называется хромосомой. Совокупность всех хромосом одного человека называется их геномом. Число хромосом и число пар оснований в геноме довольно сильно варьируется от вида к виду, но остается неизменным среди людей внутри вида.

У человека примерно 3 миллиарда пар оснований, распределенных по 46 хромосомам. Э. coli K-12 имеет около 4,5 миллионов пар оснований и одну круговую хромосому. Митохондрия человека (верно, наши митохондрии имеют свои собственные геномы!) Имеет всего 16000 пар оснований, также в одной хромосоме. Есть и другие различия, например, люди получают 2 копии (одну от мамы, одну от отца) 23 видов хромосом - бактерии размножаются бесполым путем, поэтому все их хромосомы происходят от одной родительской клетки.

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

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

В 1953 году трое ученых по имени Уотсон, Крик и Франклин [1] обнаружили структуру «двойной спирали» ДНК, в которой две цепи параллельны и соединены в центре. Точная молекулярная форма каждого нуклеотида не очень важна для остальной части этой статьи, но химически склонным и любопытным может понравиться это короткое видео о молекулярной структуре нуклеотидов.

Когда ученые проводят генетический анализ, важную генетическую информацию (гены) можно найти на любой из двух параллельных цепей. Интересно, что из-за биологического механизма в наших клетках генетическая информация всегда кодируется в одном и том же направлении, независимо от того, на какой цепи она находится . Каждая нить ДНК имеет два конца, один конец называется трехполюсным концом, а другой - пятиконечным концом (обычно обозначаемым как 3 ’и 5’). Белки, ферменты и органеллы, считывающие ДНК, такие как ДНК-полимераза, всегда читают в одном и том же направлении: от 5 ’конца к 3’.

Рассмотрим этот простой пример:

5’ ACTG 3’
3’ TGAC 5’

В этом формате мы указали, какая цепь находится в направлении от 5 ’к 3’, и наоборот, закругляя нуклеотидную последовательность символами 5 ’и 3’. Генетические данные, которые могут использоваться нашим телом в этом примере, - это ACTG или CAGT - считывание любой цепи от 5 ’конца к 3’. Последовательность TGAC не является частью этой цепи ДНК, потому что для чтения этой последовательности потребуется пересечь ДНК от 3 ’конца к 5’.

Вот химическая диаграмма той же последовательности:

Эти короткие примеры показывают параллельную структуру ДНК. Две пряди - своего рода зеркало друг для друга. Из-за этого свойства принято представлять только одну сторону ДНК в цифровых представлениях генетической информации в целях экономии места - при необходимости другую сторону можно просто реконструировать.

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

Кодирующая ДНК, некодирующая ДНК и кодоны

Вообще говоря, ученые разделили ДНК на две группы, известные как некодирующие и кодирующие разделы. Любой участок ДНК можно классифицировать как любой из двух вариантов; и одна хромосома (одна непрерывная молекула ДНК) может иметь как кодирующие, так и некодирующие участки. Один кодирующий участок ДНК называется геном. Опять же, он довольно сильно варьируется от вида к виду, но, по оценкам, у людей около 19000 генов. Эти гены составляют только 2% генома человека, остальная часть нашей ДНК не кодирует.

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

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

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

Итак, кодирующие области ДНК называются генами, а гены кодируют белки. Белки состоят из молекул, называемых аминокислотами, которые соединены в определенном порядке, образуя длинную цепь. Затем эта аминокислотная цепь скручивается в уникальную форму, и полученная в результате аминокислотная цепь называется белком. Этот процесс называется синтезом белка, и инструкции по его созданию хранятся в нашей ДНК. В кодирующих участках ДНК пары оснований сгруппированы в триплеты, называемые кодонами. Каждая из 20 аминокислот, которые используются для создания белков, может быть представлена ​​последовательностью из 3 нуклеотидов.

Есть 4 * 4 * 4 = 64 способа объединить наши 4 нуклеотида в последовательность из 3 (например, AAA, GAT, CTG, TCG…), но есть только 20 аминокислот. Это означает, что некоторые аминокислоты представлены множественными кодонами. Например, аргинин представлен шестью разными кодонами, а триптофан представлен всего одним. Если вы изучали информатику, вы могли бы сравнить перекрывающиеся кодоны ДНК с хеш-таблицей, где ключами являются кодоны, а значениями - аминокислоты. кислота - аминокислоты с несколькими кодонами могут напоминать вам о конфликтах хешей (20 ведер, 64 значения).

Есть также стартовый и стоп-кодоны, которые указывают начало и конец одного гена. Между парой старт-стоп находятся инструкции по созданию единого белка. Давайте рассмотрим пример: Trp Cage - самый маленький из известных белков, состоящий всего из 20 аминокислот, а именно:

Asparagine, leucine, tyrosine, isoleucine, glutamine, tryptophan, leucine, lysine, aspartate, glycine, glycine, proline, serine, serine, glycine, arginine, proline, proline, proline, serine.

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

NLYIQWLKDGGPSSGRPPPS

Поскольку несколько кодонов соответствуют одной и той же аминокислоте, количество генетических последовательностей, которые могут представлять Trp Cage, составляет 73 383 542 784. Это наименьший из известных белков, и, тем не менее, существует почти 80 миллиардов способов его записи, и это лишь одна из причин, почему биоинформатика требует больших вычислительных ресурсов. Мы можем вычислить это число для любой аминокислотной цепи, многократно умножая количество кодонов для каждой аминокислоты. В случае Trp Cage:

N L Y I Q W L K D G G P S S G R P P P S
2*6*2*3*2*1*6*2*2*4*4*4*6*6*4*6*4*4*4*6 = 73,383,542,784

(К этой статье прилагается функция, которая может вычислить, сколько различных последовательностей ДНК существует для каждой данной аминокислотной последовательности)

Вот 2 из этих 78 миллиардов последовательностей пар оснований; обе эти последовательности кодируют белок клетки Trp:

ATGTTAAATATATAAGTTACCAATTTTCTACCACCAGGAAGAAGACCAGCAGGAGGAGGAAGAACT
ATGTTGGACATGTATGTCACCGACTTCCTGCCCCCCGGCTCGTCGCCCTCCGGCGGCGGCTCGATC

В зависимости от контекста генетики могут предпочесть нуклеотидную последовательность или аминокислотную последовательность. Например, если вы пытаетесь сравнить функциональный аспект двух генов, имеет смысл преобразовать эти гены в их аминокислотные последовательности; Поскольку существует 73 миллиарда способов ДНК сказать «Trp Cage», сравнивая нуклеотиды напрямую, рискует «пропустить лес за деревьями». Например, обратите внимание, что предыдущие 2 нуклеотидные последовательности содержат значительные различия (обратите внимание на жирный шрифт). С другой стороны, при отслеживании наследственности или определении того, насколько тесно связаны два вида, имеет значение нуклеотидная последовательность, потому что при воспроизводстве организмов передается конкретная нуклеотидная последовательность.

По словам доктора Ребекки Маккелпранг, научного сотрудника Проекта CLEAR Калифорнийского университета в Беркли (и полное раскрытие информации, моя невестка):

При изучении взаимоотношений, эволюции или мутаций внутри вида или между близкородственными видами имеет смысл обратить внимание на вариации среди нуклеотидов. При сравнении генов или белков между видами более полезно смотреть на аминокислотную последовательность. Многие мутации в ДНК фактически не изменяют аминокислотную последовательность, поэтому на эти нуклеотиды не оказывается селективного давления, чтобы они оставались прежними. При сравнении видов мы не заботимся об этих различиях между парами оснований, если аминокислота остается прежней. Итак, мы просто смотрим на аминокислотную последовательность вместо того, чтобы сосредотачиваться на последовательности нуклеотидов ». - [гиперссылка моя]

Точка зрения доктора невестки о мутациях проистекает из того факта, что одна аминокислота может быть представлена ​​несколькими кодонами. Если мы заботимся об экспрессии генов в форме синтеза белка, тогда мы действительно заботимся только о кодонах, а не об отдельных парах оснований.

Генетика и программирование

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

В частности, я написал код, который может делать 5 вещей:

  • Сгенерируйте случайную последовательность пар оснований, генерируемую кодон за кодоном, которая закрыта с любого конца стартовым / стоп-кодоном.
  • Преобразуйте последовательность пар оснований в соответствующую аминокислотную последовательность (при условии, что длина последовательности кратна 3).
  • Преобразуйте последовательность однобуквенных аминокислот, например «NLYIQWLKDGGPSSGRPPPS» для Trp Cage, в полные названия аминокислот. (В основном для того, чтобы мне не пришлось переводить его вручную для Trp Cage, упомянутого ранее в статье)
  • Учитывая однобуквенную аминокислотную последовательность, случайным образом сгенерируйте строку пар оснований, которая отображается на эту аминокислотную последовательность. И наконец,
  • Для однобуквенной аминокислотной последовательности укажите, сколько различных комбинаций кодонов можно использовать для кодирования этой аминокислотной последовательности.

Для этого мне пришлось вручную создать несколько словарей. Одно отображение аминокислот на кодоны в виде нуклеотидных последовательностей; одно отображение кодонов на аминокислоты; и одно сопоставление однобуквенных представлений аминокислот с их полными именами.

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

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

Вот код:

Эта статья является частью Teb’s Lab. Посетите веб-сайт, чтобы узнать больше, или подпишитесь на мою еженедельную рассылку или присоединитесь ко мне на Patreon в моем стремлении никогда не переставать учиться.

[1]: Если вам нравятся исторические драмы, история Розалинды Франклин - интересная история и классический пример того, как женщины-ученые не получают должного признания. См. Также рассказ Мэрилин вос Савант или фильм Скрытые фигуры.