¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Traducir codones a una proteína

Después de esta lección: Puedo traducir los codones de una secuencia a una proteína, eligiendo el marco de lectura.

Lección de 75 min4 comandosLaboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿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

PalabraQué significaEjemplo
Codónun grupo de tres bases seguidasATG
Tabla de codonesla lista que da una letra a cada codón
Proteínauna cadena de aminoácidos, cada uno con una letra
Codón de paradaun codón que termina la traducción
Marco de lecturala 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ónLetraCodónLetra
ATGMGAAE
GCTACCCP
AAAKTCTS
TTTFCATH
GGCGTAA* (parada)
TGA* (parada)

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Corta una secuencia en codones

Comando
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

Comando
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

Comando
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

Código: python
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ónLetraProteína hasta ahora
ATGMM
GCTAMA
AAAKMAK
TTTFMAKF
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

Comando
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

MarcoCodonesProteína
0CAT, GGC, TAAHG, y se detiene en TAA
1ATG, GCT, AAA, TGAMAK, y se detiene en TGA
2TGG, CTA, AATXXX, 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.

Sobre este laboratorio y su código: Laboratorio JupyterLab de ciencia de datos: pandas, Matplotlib y scikit-learn en el navegador

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.