Algoritmo de Smith-Waterman en Python

Aditya Raj 30 enero 2023
  1. Algoritmo de Smith-Waterman en Python
  2. Conclusión
Algoritmo de Smith-Waterman en Python

El algoritmo de Smith-Waterman se utiliza para realizar la alineación de secuencia local de cadenas. Las cadenas representan principalmente cadenas de ADN o secuencias de proteínas.

Este artículo analiza la implementación del algoritmo Smith-Waterman en Python.

Algoritmo de Smith-Waterman en Python

El módulo swalign contiene varias funciones para implementar el algoritmo Smith-Waterman en Python. Puede instalar el módulo swalign usando PIP ejecutando la siguiente declaración en la línea de comando.

pip3 install swalign

La declaración anterior instala el módulo para la versión 3 de Python. Para instalar el módulo en la versión 2 de Python, puede usar el siguiente comando.

pip install swalign

Después de instalar el módulo swalign, usaremos los siguientes pasos para implementar el algoritmo Smith-Waterman en nuestro programa Python.

  1. Primero, importaremos el módulo swalign utilizando la instrucción import.

  2. Para realizar la alineación, debemos crear una matriz de puntuación de nucleótidos. En la matriz, proporcionamos una puntuación para cada coincidencia y discrepancia.

    Comúnmente, usamos 2 para una puntuación de coincidencia y -1 para una falta de coincidencia.

  3. Para crear la matriz de puntuación de nucleótidos, utilizaremos el método NucleotideScoringMatrix(). La NucleotideScoringMatrix() toma la puntuación de coincidencia como su primer argumento de entrada y la puntuación de desajuste como su segundo argumento de entrada.

    Después de la ejecución, devuelve un objeto IdentityScoringMatrix.

  4. Una vez que obtengamos la matriz de nucleótidos, crearemos un objeto LocalAlignment utilizando el método LocalAlignment(). El método LocalAlignment() toma la matriz de puntuación de nucleótidos como entrada y devuelve un objeto LocalAlignment.

  5. Una vez que obtengamos el objeto LocalAlignment, podemos ejecutar el algoritmo Smith-Waterman utilizando el método align().

  6. El método align(), cuando se invoca en un objeto LocalAlignment, toma una cadena que representa una hebra de ADN como su primer argumento de entrada. Toma otra cadena que representa la hebra de ADN de referencia.

  7. Después de la ejecución, el método align() devuelve un objeto Alignment. El objeto Alignment contiene los detalles de la coincidencia y la falta de coincidencia de las cadenas de entrada y varios otros detalles.

Puedes observar todo el proceso en el siguiente ejemplo.

import swalign

dna_string = "ATCCACAGC"
reference_string = "ATGCAGCGC"
match_score = 2
mismatch_score = -1
matrix = swalign.NucleotideScoringMatrix(match_score, mismatch_score)
lalignment_object = swalign.LocalAlignment(matrix)
alignment_object = lalignment_object.align(dna_string, reference_string)
alignment_object.dump()

Producción :

Query:  1 ATGCAGC-GC 9
          ||.|| | ||
Ref  :  1 ATCCA-CAGC 9

Score: 11
Matches: 7 (70.0%)
Mismatches: 3
CIGAR: 5M1I1M1D2M

Conclusión

Este artículo analiza cómo podemos implementar el algoritmo de Smith-Waterman utilizando el módulo swalign de Python.

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 Algorithm