HOWTO · Python

Obtenga el complemento inverso de una hebra de ADN usando Python

Este artículo analiza cómo podemos crear un complemento inverso de una hebra de ADN utilizando Python. Utiliza los métodos de cadena incorporados y el módulo Biopython.

En esta página

Para la hebra de ADN ACGTAATTGGCC, el complemento inverso es GGCCAATTACGT. Python lo produce complementando cada base y leyendo las bases desde el final hasta el principio.

Complemento inverso de una hebra de ADN

El ADN utiliza los pares de bases A↔T y C↔G. El complemento de ACGTAATTGGCC es TGCATTAACCGG; invertir ese complemento da GGCCAATTACGT. La inversión cambia el orden, mientras que la complementación cambia cada base.

Los ejemplos siguientes asignan las letras mayúsculas A, T, C y G. Conservan otros símbolos tal como están escritos, incluidas las letras minúsculas; no normalizan las mayúsculas y minúsculas ni validan un alfabeto de ADN completo.

Obtener el complemento inverso de una hebra de ADN usando el bucle for en Python

Para una secuencia de ADN en mayúsculas, este ejemplo completo construye el resultado con un bucle for:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
result = ""
for base in reversed(input_strand):
    result += complements.get(base, base)
print(result)
GGCCAATTACGT

El bucle recorre las bases en orden inverso. El valor de reserva del diccionario mantiene un símbolo sin cambios cuando no es una de las cuatro bases en mayúsculas.

Obtener el complemento inverso de una hebra de ADN usando el método join() en Python

Recopilar los caracteres en una lista y unirlos hace que el paso de ensamblado sea claro:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
complement_chars = [complements.get(base, base) for base in reversed(input_strand)]
result = "".join(complement_chars)
print(result)
GGCCAATTACGT

join() combina los elementos de la lista en una sola cadena. Este enfoque de la biblioteca estándar evita extender repetidamente la cadena de resultado.

Obtener el complemento inverso de una hebra de ADN usando el método get() en Python

Aquí, base es la clave del diccionario. get(base, base) devuelve el complemento asignado cuando la clave existe y devuelve el carácter original como valor de reserva en caso contrario:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
result_chars = []
for base in reversed(input_strand):
    result_chars.append(complements.get(base, base))
print("".join(result_chars))
GGCCAATTACGT

La forma de lista y unión mantiene el bucle legible mientras ensambla una cadena a partir de caracteres.

Obtener el complemento inverso de una hebra de ADN usando comprensión de listas en Python

El segmento inverso [::-1] recorre la entrada de derecha a izquierda. Proporcionar el carácter original como valor de reserva garantiza que cada elemento de la lista sea una cadena:

input_strand = "ACGTAATTGGCC"
complements = {"A": "T", "T": "A", "C": "G", "G": "C"}
result = "".join(complements.get(base, base) for base in input_strand[::-1])
print(result)
GGCCAATTACGT

Sin ese valor de reserva, una base sin asignar produciría None, que join() no puede combinar con cadenas.

Obtener el complemento inverso de una hebra de ADN usando el método translate() en Python

El str.maketrans() de la biblioteca estándar crea una tabla de asignación de caracteres; str.translate() la aplica. Invierta la hebra por separado y luego traduzca cada base:

input_strand = "ACGTAATTGGCC"
table = str.maketrans("ATCG", "TAGC")
result = input_strand[::-1].translate(table)
print(result)
GGCCAATTACGT

Los caracteres ausentes de la tabla pasan sin cambios. Este enfoque no necesita ninguna biblioteca externa.

Obtener el complemento inverso de una hebra de ADN usando el módulo Biopython en Python

Biopython es una dependencia externa que proporciona utilidades de secuencias, incluida reverse_complement(). Su nombre de distribución es biopython, mientras que la ruta de importación de Python comienza con Bio. Instálelo en el entorno utilizado para ejecutar su script con python -m pip install biopython.

Lo siguiente es una ilustración de sintaxis, no un ejemplo verificado en tiempo de ejecución: la instalación y la importación no se han confirmado en el entorno de ejecución seleccionado.

from Bio.Seq import Seq y Seq("ACGTAATTGGCC").reverse_complement()

Esta opción depende de que Biopython esté instalado; los ejemplos anteriores de la biblioteca estándar no. Use la biblioteca cuando sus utilidades de secuencias se ajusten a su proyecto, o elija un enfoque de biblioteca estándar cuando agregar una dependencia no sea adecuado.

Conclusión

Use un bucle, un diccionario, una comprensión de listas o translate() para una solución con la biblioteca estándar. Elija Biopython cuando sus utilidades de secuencias más amplias se adapten a la tarea. Una cadena vacía produce un resultado vacío. Los ejemplos conservan otros símbolos y los caracteres de entrada en minúsculas; normalice o valide la entrada por separado si sus datos requieren esa política.