Генетический код и таблица кодонов
Генетический код — это словарь, переводящий тройки нуклеотидов в аминокислоты. Один из главных «справочников» биоинформатики.
Кодон — тройка подряд идущих нуклеотидов мРНК, кодирующая одну аминокислоту или сигнал «стоп». Генетический код — соответствие всех 64 кодонов аминокислотам.
Мы уже выяснили, почему чтение идёт тройками: 4³ = 64 комбинации хватает на 20 аминокислот. Теперь превратим это в рабочую таблицу и научимся ей пользоваться. Эта таблица — фундамент всего раздела про трансляцию.
Структура кода: 64 кодона
Из 64 кодонов: 61 кодирует аминокислоты, 3 (UAA, UAG, UGA) — стоп-сигналы. Старт почти всегда — AUG (он же кодирует метионин). Запишем таблицу как словарь Python и сразу посчитаем её свойства.
CODON = {
'UUU':'F','UUC':'F','UUA':'L','UUG':'L','CUU':'L','CUC':'L','CUA':'L','CUG':'L',
'AUU':'I','AUC':'I','AUA':'I','AUG':'M','GUU':'V','GUC':'V','GUA':'V','GUG':'V',
'UCU':'S','UCC':'S','UCA':'S','UCG':'S','CCU':'P','CCC':'P','CCA':'P','CCG':'P',
'ACU':'T','ACC':'T','ACA':'T','ACG':'T','GCU':'A','GCC':'A','GCA':'A','GCG':'A',
'UAU':'Y','UAC':'Y','UAA':'*','UAG':'*','CAU':'H','CAC':'H','CAA':'Q','CAG':'Q',
'AAU':'N','AAC':'N','AAA':'K','AAG':'K','GAU':'D','GAC':'D','GAA':'E','GAG':'E',
'UGU':'C','UGC':'C','UGA':'*','UGG':'W','CGU':'R','CGC':'R','CGA':'R','CGG':'R',
'AGU':'S','AGC':'S','AGA':'R','AGG':'R','GGU':'G','GGC':'G','GGA':'G','GGG':'G',
}
from collections import Counter
by_aa = Counter(CODON.values())
print('Всего кодонов:', len(CODON))
print('Кодируют стоп:', by_aa['*'])
print('Кодонов на L (лейцин):', by_aa['L'])
print('Кодонов на M (метионин):', by_aa['M'])Вывод:
Всего кодонов: 64 Кодируют стоп: 3 Кодонов на L (лейцин): 6 Кодонов на M (метионин): 1
Вырожденность кода
Код вырожден (избыточен): большинству аминокислот соответствует несколько кодонов. Лейцину — целых 6, а метионину и триптофану — по одному. Часто синонимичные кодоны различаются только третьей буквой — это «качающаяся» (wobble) позиция. Биологический смысл: мутация в третьей букве часто молчащая, белок не меняется. Для биоинформатика это значит, что не всякая мутация в ДНК важна — надо смотреть, меняет ли она аминокислоту.
GCU GCC GCA GCG -> все четыре = Аланин (A)
^третья буква "качается", аминокислота та жеЗачем хранить код как словарь
Словарь даёт перевод за O(1) и читается тривиально. На нём строится вся трансляция: разбить мРНК на тройки и подставить значения. Покажем перевод одного кодона и обработку неизвестного.
CODON = {'AUG':'M','GCC':'A','UAA':'*'} # фрагмент для примера
for codon in ['AUG', 'GCC', 'UAA']:
print(codon, '->', CODON[codon])
print('Неизвестный кодон обрабатываем через .get:', CODON.get('XYZ', '?'))Вывод:
AUG -> M GCC -> A UAA -> * Неизвестный кодон обрабатываем через .get: ?
Как работает под капотом: почти универсальность
Поразительный факт: генетический код почти одинаков у бактерии, дрожжей и человека — он сложился на заре жизни. Это позволяет переносить гены между видами (так делают инсулин в бактериях). Но есть исключения: митохондрии и некоторые организмы используют слегка изменённые таблицы (например, UGA у них может кодировать аминокислоту, а не стоп). Поэтому в серьёзных инструментах таблица кодонов — параметр, а не константа: NCBI нумерует десятки вариантов кода.
Стоит задуматься, почему код устроен именно так, а не как попало. Распределение кодонов не случайно: похожие по химии аминокислоты часто имеют похожие кодоны. Например, кодоны, начинающиеся с двух одинаковых букв, нередко кодируют родственные аминокислоты. Благодаря этому многие точечные мутации либо вообще не меняют аминокислоту (синонимичные замены, особенно в третьей позиции), либо меняют её на похожую — а значит, последствия мягче. Получается, что сам генетический код обладает встроенной устойчивостью к ошибкам, будто его «спроектировали» с заделом на надёжность. Для биоинформатика это практический ориентир: оценивая эффект мутации, важно различать синонимичные замены (часто безвредны), миссенс-замены (аминокислота меняется) и нонсенс-замены (появляется преждевременный стоп — обычно самые тяжёлые).
Полезно понимать и разницу между кодоном и антикодоном. На стороне мРНК — кодон, а доставляет аминокислоту молекула тРНК, у которой есть комплементарный антикодон. Именно тРНК физически реализует таблицу кода: каждая «знает», какую аминокислоту нести и к какому кодону пристроиться. В коде мы этот биологический механизм сворачиваем в простой словарь, но за каждой строчкой таблицы стоит отдельная молекула-переводчик — приятная деталь, объясняющая, почему код такой, какой есть.
Частые ошибки
- Транслировать ДНК с T. Таблица написана для РНК (с U); сначала транскрибируйте или используйте ДНК-вариант таблицы.
- Считать код однозначным в обе стороны. Кодон → аминокислота однозначно, но аминокислота → кодон неоднозначно (вырожденность).
- Жёстко зашивать стандартный код. Для митохондрий и ряда организмов таблица другая.
Итог
- Кодон — тройка нуклеотидов; 64 кодона кодируют 20 аминокислот и 3 стоп-сигнала.
- Код вырожден: у большинства аминокислот несколько синонимичных кодонов (часто различаются 3-й буквой).
- Удобно хранить код как словарь — перевод за O(1).
- Код почти универсален, но есть варианты (митохондрии), поэтому таблицу делают параметром.