Obtenga el complemento inverso de una hebra de ADN usando Python

Aditya Raj 30 enero 2023
  1. Complemento inverso de una hebra de ADN
  2. Obtenga el complemento inverso de una hebra de ADN usando el bucle for en Python
  3. Obtenga el complemento inverso de una hebra de ADN usando el método join() en Python
  4. Obtenga el complemento inverso de una hebra de ADN usando el método get() en Python
  5. Obtenga el complemento inverso de una hebra de ADN usando la comprensión de listas en Python
  6. Obtenga el complemento inverso de una hebra de ADN usando el método translate() en Python
  7. Obtenga el complemento inverso de una hebra de ADN usando el módulo Biopython en Python
  8. Conclusión
Obtenga el complemento inverso de una hebra de ADN usando Python

Mientras trabajamos en tareas científicas en Python, necesitamos realizar ciertas tareas. Este artículo analiza varias formas de obtener el complemento inverso de una hebra de ADN utilizando Python.

Complemento inverso de una hebra de ADN

Una hebra de ADN está representada principalmente por cuatro tipos de bases, a saber, Adenina (A), Timina (T), Guanina (G) y Citosina (C). Puede haber otros tipos de bases también.

Cada cadena de ADN está representada por una serie de letras A, T, G y C. Por ejemplo, ACGTAATTGGCC podría ser una de las cadenas de ADN.

Para obtener el complemento de una cadena de ADN, reemplazamos A con T, C con G, G con C y T con A en la cadena original. Por ejemplo, el complemento de ACGTAATTGGCC es TGCATTAACCGG.

Para invertir el complemento de una cadena de ADN, invertiremos los caracteres en el complemento de la cadena de ADN. Por tanto, el complemento inverso será GGCCAATTACGT.

Analicemos ahora las formas de obtener el complemento inverso de una cadena de ADN usando Python.

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

Seguiremos los siguientes pasos para obtener el complemento inverso de una hebra de ADN usando un bucle for en Python.

  • Primero definiremos una cadena vacía llamada reversed_strand para almacenar la cadena de salida.
  • Luego, encontraremos la longitud de la hebra de ADN de entrada usando la función len(). La función len() toma la cadena de la hebra de ADN y devuelve la longitud.
  • Después de eso, iteraremos a través de los caracteres de la hebra de ADN de entrada usando un bucle for en el orden inverso.
  • Durante la iteración, si encontramos el carácter A, agregaremos T a reversed_strand. De manera similar, agregaremos T, G y C a reversed_strand si encontramos A, C y G en la secuencia.
  • Si encontramos cualquier otro carácter en la hebra de ADN de entrada, añadiremos el mismo carácter a la reversed_strand.
  • Después de ejecutar el bucle for, obtendremos la hebra de ADN invertida en la variable reversed_strand.

Puedes observar esto en el siguiente ejemplo.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    if character == "A":
        reversed_strand = reversed_strand + "T"
    elif character == "T":
        reversed_strand = reversed_strand + "A"
    elif character == "G":
        reversed_strand = reversed_strand + "C"
    elif character == "C":
        reversed_strand = reversed_strand + "G"
    else:
        reversed_strand = reversed_strand + character
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

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

En el enfoque anterior, al crear reversed_strand, se crea una nueva cadena para cada carácter en la cadena de ADN de entrada. Esto puede resultar costoso en términos de tiempo y memoria si las hebras de ADN de entrada son demasiado largas.

Para evitar esto, podemos usar una lista para obtener el complemento inverso de una hebra de ADN usando Python.

Usaremos los siguientes pasos para complementar inversamente una hebra de ADN usando un bucle for, una lista y el método join().

  • Primero, crearemos una lista vacía llamada complement_chars para almacenar los caracteres del complemento inverso de la hebra de ADN.
  • Luego, encontraremos la longitud de la hebra de ADN de entrada usando la función len().
  • Después de eso, iteraremos a través de los caracteres de la hebra de ADN de entrada usando un bucle for en el orden inverso.
  • En las iteraciones, si encontramos el carácter A, agregaremos T a complement_chars usando el método append(). El método append(), cuando se invoca en complement_chars, toma un carácter como argumento de entrada y lo agrega a complement_chars.
  • De manera similar, agregaremos T, G y C a complement_chars si encontramos A, C y G en la secuencia.
  • Si encontramos cualquier otro carácter en la hebra de ADN de entrada, agregaremos el mismo carácter a los complement_chars.
  • Después de ejecutar el bucle for, obtendremos una lista de caracteres del complemento inverso de la hebra de ADN de entrada en complement_chars.
  • Después de esto, utilizaremos el método join() para obtener el complemento inverso de la hebra de ADN original. El método join(), cuando se invoca en una cadena_de_entrada, toma un objeto iterable como argumento de entrada; después de ejecutarse, devuelve una nueva cadena que contiene los elementos del objeto iterable como sus caracteres, separados por input_string.
  • Para obtener el complemento inverso de la hebra de ADN utilizando el método join(), invocaremos el método join() en una cadena vacía con complement_chars como argumento de entrada. Después de ejecutar el método join(), obtendremos el complemento inverso de la hebra de ADN de entrada.

Puedes observar esto en el siguiente ejemplo.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
complement_chars = []
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    if character == "A":
        complement_chars.append("T")
    elif character == "T":
        complement_chars.append("A")
    elif character == "G":
        complement_chars.append("C")
    elif character == "C":
        complement_chars.append("G")
    else:
        complement_chars.append(character)
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

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

En lugar de usar el bloque if-else en el bucle for, podemos usar un diccionario y el método get() para obtener el complemento inverso de una hebra de ADN usando Python. Para esta tarea, crearemos el siguiente diccionario.

reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}

El método get() recupera un valor asociado a una clave en un diccionario. Cuando se invoca en un diccionario, el método get() toma la clave como primer argumento de entrada y un valor opcional como segundo argumento de entrada.

Si la clave está presente en el diccionario, devuelve el valor asociado a ella. De lo contrario, el método get() devuelve el valor opcional pasado como segundo argumento.

Usaremos los siguientes pasos para invertir el complemento de una hebra de ADN usando el método get() y reverse_dict.

  • Primero, definiremos una cadena vacía llamada reversed_strand para almacenar la cadena de salida.
  • Luego, encontraremos la longitud de la hebra de ADN de entrada usando la función len().
  • Después de eso, iteraremos a través de los caracteres de la hebra de ADN de entrada en orden inverso usando un bucle for.
  • Durante la iteración, invocaremos el método get() en reverse_dict con el carácter actual como primer y segundo argumento. Si el carácter actual está presente en reverse_dict, el método get() devolverá el complemento de cadena de ADN; de lo contrario, el método get() devolverá el carácter actual.
  • Añadiremos la salida del método get() a reversed_strand.
  • Después de ejecutar el bucle for, obtendremos la hebra de ADN invertida en la variable reversed_strand.

Puedes observar esto en el siguiente ejemplo.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    reversed_strand = reversed_strand + reverse_dict.get(character, character)

print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Como se discutió anteriormente, el enfoque de crear cadenas en el bucle for es costoso. Por lo tanto, podemos usar una lista y el método join() con el método get() para obtener el complemento inverso de una hebra de ADN usando Python, como se muestra en el siguiente ejemplo.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
complement_chars = []
length = len(input_strand)
for i in range(length):
    character = input_strand[length - 1 - i]
    complement_chars.append(reverse_dict.get(character, character))
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Aquí, primero hemos creado una lista de caracteres en el complemento inverso mientras iteramos la hebra de ADN de entrada. Después de eso, hemos creado el complemento inverso uniendo los caracteres usando el método join().

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

En lugar de usar el bucle for, también puede usar la comprensión de listas para complementar inversamente una hebra de ADN usando Python.

Primero invertiremos la hebra de ADN de entrada mediante la indexación para complementar una hebra de ADN mediante la comprensión de listas. Después de eso, usaremos la comprensión de listas con el método get() y reverse_dict creado en el último ejemplo para obtener una lista de caracteres del complemento inverso.

Una vez que obtengamos la lista de caracteres, usaremos el método join() para encontrar el complemento inverso de la hebra de ADN de entrada, como se muestra en el siguiente ejemplo.

input_strand = "ACGTAATTGGCC"
reversed_strand = ""
reverse_dict = {"A": "T", "T": "A", "G": "C", "C": "G"}
temp = input_strand[::-1]
complement_chars = [reverse_dict.get(character) for character in temp]
reversed_strand = "".join(complement_chars)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

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

También podemos encontrar el complemento inverso de una hebra de ADN utilizando el método translate(). Para ello utilizaremos los siguientes pasos.

  • Primero, invertiremos la hebra de ADN de entrada utilizando la indexación de cadenas. Después de eso, crearemos una tabla de traducción usando la función maketrans().
  • La función maketrans() toma dos cadenas como argumentos de entrada, y la longitud de ambas cadenas debe ser la misma. Después de la ejecución, devuelve una tabla de traducción en la que cada carácter de la primera cadena se asigna al carácter en la misma posición en la segunda cadena.
  • Al invocar el método maketrans() en la hebra de ADN de entrada, pasaremos "ATGC" como primer argumento de entrada y "TACG" como segundo argumento de entrada. De esta forma, cada carácter de la hebra de ADN de entrada se mapeará en su complemento.
  • Después de crear la tabla de traducción, utilizaremos el método translate() para obtener el complemento inverso de la hebra de ADN.
  • El método translate(), cuando se invoca en una cadena, toma una tabla de traducción como argumento de entrada. Después de la ejecución, devuelve una nueva cadena reemplazando los caracteres de la cadena en la que se invoca de acuerdo con la tabla de traducción; si la asignación de un carácter no se encuentra en la tabla de traducción, copia el mismo carácter en la cadena de salida.
  • Invocaremos el método translate() en la hebra de ADN invertida con la tabla de traducción como argumento de entrada.
  • Después de ejecutar el método translate(), obtendremos el complemento inverso de la hebra de ADN de entrada.

Puedes observar esto en el siguiente ejemplo.

input_strand = "ACGTAATTGGCC"
translation_table = input_strand.maketrans("ATCG", "TAGC")
temp = input_strand[::-1]
reversed_strand = temp.translate(translation_table)
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

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

También podemos usar el módulo Biopython en Python para complementar inversamente una hebra de ADN. Usando la siguiente declaración, puede instalar el módulo Biopython usando el instalador del paquete para Python PIP3.

pip3 install Bio

El módulo Biopython proporciona el método reverse_complement() para complementar inversamente una hebra de ADN usando Python. Cuando se invoca en un objeto de secuencia de ADN, el método reverse_complement() devuelve el complemento inverso de una secuencia de ADN.

Usaremos los siguientes pasos para obtener el complemento inverso de una hebra de ADN usando el método reverse_complement() en Python.

  • Primero, creamos una secuencia de ADN a partir de la hebra de ADN utilizando la función Seq(). La función Seq() toma una cadena que representa la hebra de ADN como entrada y devuelve una secuencia de ADN.
  • Después de obtener el objeto de secuencia de ADN, invocaremos el método reverse_complement() sobre la secuencia para obtener el complemento inverso de la hebra de ADN, como se muestra en el siguiente ejemplo.
from Bio.Seq import Seq

input_strand = "ACGTAATTGGCC"
sequence = Seq(input_strand)
reversed_strand = sequence.reverse_complement()
print("The input DNA strand is:", input_strand)
print("The reverse complement is:", reversed_strand)

Producción :

The input DNA strand is: ACGTAATTGGCC
The reverse complement is: GGCCAATTACGT

Conclusión

En este artículo, hemos discutido varios enfoques para complementar inversamente una hebra de ADN usando Python. De todos estos métodos, puede elegir el enfoque con el método translate() si no tiene permitido usar una biblioteca externa; de lo contrario, puede usar el módulo Biopython para complementar inversamente una hebra de ADN en Python.

Esperamos que hayas disfrutado leyendo este artículo. Estén atentos para más artículos informativos.

Autor: Aditya Raj
Aditya Raj avatar Aditya Raj avatar

Aditya Raj is a highly skilled technical professional with a background in IT and business, holding an Integrated B.Tech (IT) and MBA (IT) from the Indian Institute of Information Technology Allahabad. With a solid foundation in data analytics, programming languages (C, Java, Python), and software environments, Aditya has excelled in various roles. He has significant experience as a Technical Content Writer for Python on multiple platforms and has interned in data analytics at Apollo Clinics. His projects demonstrate a keen interest in cutting-edge technology and problem-solving, showcasing his proficiency in areas like data mining and software development. Aditya's achievements include securing a top position in a project demonstration competition and gaining certifications in Python, SQL, and digital marketing fundamentals.

GitHub

Artículo relacionado - Python String