Python의 Smith-Waterman 알고리즘

Aditya Raj 2023년1월30일
  1. Python의 Smith-Waterman 알고리즘
  2. 결론
Python의 Smith-Waterman 알고리즘

Smith-Waterman 알고리즘은 문자열의 로컬 시퀀스 정렬을 수행하는 데 사용됩니다. 문자열은 대부분 DNA 가닥 또는 단백질 서열을 나타냅니다.

이 기사에서는 Python에서 Smith-Waterman 알고리즘을 구현하는 방법에 대해 설명합니다.

Python의 Smith-Waterman 알고리즘

swalign 모듈에는 Python에서 Smith-Waterman 알고리즘을 구현하는 여러 함수가 포함되어 있습니다. 명령줄에서 다음 명령문을 실행하여 PIP를 사용하여 swalign 모듈을 설치할 수 있습니다.

pip3 install swalign

위의 명령문은 Python 버전 3용 모듈을 설치합니다. Python 버전 2에 모듈을 설치하려면 다음 명령을 사용할 수 있습니다.

pip install swalign

swalign 모듈을 설치한 후 다음 단계를 사용하여 Python 프로그램에서 Smith-Waterman 알고리즘을 구현합니다.

  1. 먼저 import 문을 사용하여 swalign 모듈을 가져옵니다.

  2. 정렬을 수행하려면 뉴클레오티드 스코어링 매트릭스를 만들어야 합니다. 매트릭스에서 각 일치 및 불일치에 대한 점수를 제공합니다.

    일반적으로 일치 점수에는 2를 사용하고 불일치에는 -1을 사용합니다.

  3. 뉴클레오티드 스코어링 매트릭스를 생성하기 위해 NucleotideScoringMatrix() 방법을 사용합니다. NucleotideScoringMatrix()는 첫 번째 입력 인수로 일치 점수를 사용하고 두 번째 입력 인수로 불일치 점수를 사용합니다.

    실행 후 IdentityScoringMatrix 개체를 반환합니다.

  4. 뉴클레오타이드 매트릭스를 얻으면 LocalAlignment() 메소드를 사용하여 LocalAlignment 객체를 생성합니다. LocalAlignment() 메소드는 뉴클레오티드 스코어링 매트릭스를 입력으로 사용하고 LocalAlignment 객체를 반환합니다.

  5. LocalAlignment 객체를 가져오면 align() 메서드를 사용하여 Smith-Waterman 알고리즘을 실행할 수 있습니다.

  6. LocalAlignment 객체에서 호출되는 align() 메소드는 첫 번째 입력 인수로 DNA 가닥을 나타내는 문자열을 사용합니다. 참조 DNA 가닥을 나타내는 또 다른 문자열이 필요합니다.

  7. 실행 후 align() 메서드는 Alignment 객체를 반환합니다. Alignment 개체에는 입력 문자열의 일치 세부 정보 및 불일치 및 기타 여러 세부 정보가 포함되어 있습니다.

다음 예제에서 전체 프로세스를 관찰할 수 있습니다.

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()

출력:

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

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

결론

이 기사에서는 Python의 swalign 모듈을 사용하여 Smith-Waterman 알고리즘을 구현하는 방법에 대해 설명합니다.

작가: 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

관련 문장 - Python Algorithm