¿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

El ADN como cadena de texto

Después de esta lección: Puedo contar las bases de una secuencia, calcular su contenido GC y escribir su complemento inverso.

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

¿Cómo se guarda una secuencia de ADN?

Una secuencia de ADN (ácido desoxirribonucleico) se guarda en un ordenador como una cadena de texto hecha con cuatro letras: A, C, G y T. Con esa idea, la bioinformática cuenta, compara y transforma secuencias con programas en lugar de hacerlo a mano.

Todas las secuencias de este módulo son inventadas. Sirven para practicar con cadenas de texto y no dicen nada de ningún ser vivo.

Al final de esta lección

Nota

Puedo contar las bases de una secuencia, calcular su contenido GC y escribir su complemento inverso.

Palabras clave

PalabraQué significaEjemplo
Secuenciauna cadena de bases en un ordenATGCCA
Baseuna de las cuatro letras A, C, G o T
Contenido GCel porcentaje de bases que son G o C
Complementola secuencia que cambia cada base por su pareja
Complemento inversoel complemento leído de derecha a izquierda

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

Una secuencia es una cadena de texto

En Python una secuencia es un str. len(s) da su longitud. s[0] es la primera base y s[-1] es la última.

Un trozo se corta con s[a:b]: empieza en la posición a y termina antes de la b. Las posiciones se cuentan desde 0. s.count("G") dice cuántas veces aparece una base.

Ejemplo resuelto: contar las bases de ATGCGCATTAAT

BaseVecesParte de las 12 bases
A44 de 12
C22 de 12
G22 de 12
T44 de 12

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

Cuenta cada base de la secuencia

Comando
docker exec jupyter python3 -c "s='ATGCGCATTAAT'; print(len(s), s.count('A'), s.count('C'), s.count('G'), s.count('T'))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Corta tres trozos de la secuencia

Comando
docker exec jupyter python3 -c "s='ATGCGCATTAAT'; print(s[0:3], s[3:6], s[-3:])"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

El contenido GC es un porcentaje

El contenido GC dice qué parte de la secuencia son bases G o C. Se cuentan las G, se cuentan las C, se suman y se divide entre la longitud total.

Después se multiplica por 100 para tener un porcentaje. Dos secuencias de distinta longitud se comparan bien con este número.

Calcula el contenido GC con un bucle

Código: python
sequences = ["ATGCGCATTAAT", "GGCCGC", "ATATAT"]
for seq in sequences:
    gc = 0
    for base in seq:
        if base == "G" or base == "C":
            gc = gc + 1
    percent = round(100 * gc / len(seq), 1)
    print(seq, percent)
# Añade otra secuencia inventada a la lista y vuelve a ejecutar.

Ejemplo resuelto: tres secuencias inventadas

SecuenciaBases G o CLongitudContenido GC
ATGCGCATTAAT41233,3 %
GGCCGC66100 %
ATATAT060 %

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

Calcula el contenido GC en una línea

Comando
docker exec jupyter python3 -c "s='ATGCGCATTAAT'; print(round(100 * (s.count('G') + s.count('C')) / len(s), 1))"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un error muy común

Advertencia

Mucha gente cree que el contenido GC se divide entre el número de bases G y C. No: se divide entre la longitud total. La A y la T también cuentan en la longitud, aunque no se sumen en el numerador.

El complemento inverso se hace en dos pasos

Cada base tiene una pareja: A con T, y C con G. El complemento cambia cada base por su pareja.

El complemento inverso es el complemento leído al revés. Primero se cambia cada letra y después se da la vuelta a la cadena. En Python, s[::-1] da la vuelta a una cadena.

Ejemplo resuelto: el complemento inverso de ATGCCA

PasoResultado
Secuencia originalATGCCA
Complemento, base a baseTACGGT
Complemento leído al revésTGGCAT

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

Escribe el complemento inverso con un diccionario

Código: python
pairs = {"A": "T", "T": "A", "G": "C", "C": "G"}
seq = "ATGCCA"
complement = ""
for base in seq:
    complement = complement + pairs[base]
print(complement)
print(complement[::-1])
# Prueba con otra secuencia inventada: "GGATCC".

Comprueba los dos pasos en una línea

Comando
docker exec jupyter python3 -c "s='ATGCCA'; c={'A':'T','T':'A','G':'C','C':'G'}; k=''.join(c[b] for b in s); print(k); print(k[::-1])"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Para ir más lejos: una secuencia al revés

Escribe la secuencia ATGCCA al revés, sin cambiar las letras, y compárala con su complemento inverso. ¿Son la misma cadena? Después busca una secuencia inventada que sea igual a su propio complemento inverso. Pista: empieza por GA y piensa en las parejas.

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.