¿Cómo se traduce un gen a una proteína?
Traducir una secuencia de ADN es leerla de tres en tres bases, llamadas codones, y cambiar cada codón por una letra de la proteína. Una proteína es una cadena de aminoácidos, y cada aminoácido se escribe con una letra.
Para un programa es una tarea de texto: cortar en trozos de tres y buscar cada trozo en una tabla. Las secuencias de esta lección son inventadas y la tabla es solo una parte de la real.
Al final de esta lección
Nota
Puedo traducir los codones de una secuencia a una proteína, eligiendo el marco de lectura.
Palabras clave
| Palabra | Qué significa | Ejemplo |
|---|---|---|
| Codón | un grupo de tres bases seguidas | ATG |
| Tabla de codones | la lista que da una letra a cada codón | |
| Proteína | una cadena de aminoácidos, cada uno con una letra | |
| Codón de parada | un codón que termina la traducción | |
| Marco de lectura | la posición de la que se empieza a leer de tres en tres |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un codón son tres bases
Con cuatro bases hay 4 x 4 x 4 = 64 codones posibles. La tabla de codones da a cada uno una letra de aminoácido o una señal de parada.
Aquí se usa una tabla pequeña de once codones, para trabajar con ejemplos cortos. El signo * marca un codón de parada.
Ejemplo resuelto: la tabla de codones
| Codón | Letra | Codón | Letra |
|---|---|---|---|
| ATG | M | GAA | E |
| GCT | A | CCC | P |
| AAA | K | TCT | S |
| TTT | F | CAT | H |
| GGC | G | TAA | * (parada) |
| TGA | * (parada) |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Corta una secuencia en codones
docker exec jupyter python3 -c "s='ATGGCTAAATGA'; print([s[i:i+3] for i in range(0, len(s) - 2, 3)])"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Cuenta las combinaciones de varias longitudes
docker exec jupyter python3 -c "print(4 ** 2, 4 ** 3, 4 ** 5)"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
La traducción avanza de tres en tres
El bucle avanza de tres en tres: range(0, len(dna) - 2, 3). En cada paso corta un codón y busca su letra en la tabla.
Si la letra es *, la proteína termina y el bucle se detiene. Si sobran una o dos bases al final, no forman un codón completo y se ignoran.
Traduce ATGGCTAAATGA con una tabla corta
docker exec jupyter python3 -c "t={'ATG':'M','GCT':'A','AAA':'K','TGA':'*'}; s='ATGGCTAAATGA'; print(''.join(t[s[i:i+3]] for i in range(0, len(s) - 2, 3)))"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Traduce hasta el codón de parada
table = {"ATG": "M", "GCT": "A", "AAA": "K", "TTT": "F", "TGA": "*"}
dna = "ATGGCTAAATTTTGA"
protein = ""
for i in range(0, len(dna) - 2, 3):
codon = dna[i:i + 3]
letter = table[codon]
if letter == "*":
break # el codón de parada termina la proteína
protein = protein + letter
print(protein)
# Cambia dna por "ATGTTTTGAAAA": ¿qué proteína sale?
Ejemplo resuelto: ATGGCTAAATTTTGA, codón a codón
| Codón | Letra | Proteína hasta ahora |
|---|---|---|
| ATG | M | M |
| GCT | A | MA |
| AAA | K | MAK |
| TTT | F | MAKF |
| TGA | * (parada) | MAKF, se detiene |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
El marco de lectura cambia los codones
El marco de lectura dice en qué base se empieza a leer de tres en tres. Hay tres marcos: empezar en la posición 0, en la 1 o en la 2.
Una base de diferencia cambia todos los codones. Una misma secuencia da así tres proteínas distintas. Si un codón no está en la tabla de la lección, se escribe X.
Corta la misma secuencia en dos marcos
docker exec jupyter python3 -c "s='CATGGCTAAATGA'; print([s[i:i+3] for i in range(1, len(s) - 2, 3)], [s[i:i+3] for i in range(0, len(s) - 2, 3)])"Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Ejemplo resuelto: los tres marcos de CATGGCTAAATGA
| Marco | Codones | Proteína |
|---|---|---|
| 0 | CAT, GGC, TAA | HG, y se detiene en TAA |
| 1 | ATG, GCT, AAA, TGA | MAK, y se detiene en TGA |
| 2 | TGG, CTA, AAT | XXX, porque no están en la tabla |
Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.
Un error muy común
Advertencia
Mucha gente cree que la traducción siempre empieza en la primera base de la secuencia. No: depende del marco que se elija. Si empiezas una base más tarde, todos los codones cambian y sale otra proteína.
Para ir más lejos: el marco más largo
Con tu función all_frames, traduce la secuencia GAATCTCCCTTT y mira los tres marcos. Solo uno da una proteína con letras de verdad. Escribe una función que devuelva el marco cuya proteína no tenga ninguna X.