Biopython-시퀀스 정렬

Sequence alignment 둘 이상의 서열 (DNA, RNA 또는 단백질 서열)을 특정 순서로 배열하여 이들 사이의 유사성 영역을 식별하는 과정입니다.

유사한 영역을 식별하면 종간에 어떤 형질이 보존되는지, 유 전적으로 서로 다른 종이 얼마나 가까운 지, 종이 어떻게 진화하는지 등과 같은 많은 정보를 추론 할 수 있습니다. Biopython은 서열 정렬에 대한 광범위한 지원을 제공합니다.

이 장에서 Biopython이 제공하는 몇 가지 중요한 기능에 대해 알아 보겠습니다.

구문 분석 시퀀스 정렬

Biopython은 시퀀스 정렬을 읽고 쓰기위한 모듈 인 Bio.AlignIO를 제공합니다. 생물 정보학에서는 이전에 학습 한 서열 데이터와 유사한 서열 정렬 데이터를 지정하는 데 사용할 수있는 많은 형식이 있습니다. Bio.AlignIO는 Bio.SeqIO가 시퀀스 데이터에 대해 작동하고 Bio.AlignIO가 시퀀스 정렬 데이터에 대해 작동한다는 점을 제외하면 Bio.SeqIO와 유사한 API를 제공합니다.

학습을 시작하기 전에 인터넷에서 샘플 시퀀스 정렬 파일을 다운로드 해 보겠습니다.

샘플 파일을 다운로드하려면 다음 단계를 따르십시오.

Step 1 − 좋아하는 브라우저를 열고 http://pfam.xfam.org/family/browse웹 사이트. 모든 Pfam 제품군이 알파벳 순서로 표시됩니다.

Step 2− 시드 값이 적은 한 가족을 선택하십시오. 여기에는 최소한의 데이터가 포함되어 있으며 정렬 작업을 쉽게 수행 할 수 있습니다. 여기에서 PF18225를 선택 / 클릭하면 열립니다.http://pfam.xfam.org/family/PF18225 시퀀스 정렬을 포함하여 그것에 대한 완전한 세부 사항을 보여줍니다.

Step 3 − 정렬 섹션으로 이동하여 Stockholm 형식 (PF18225_seed.txt)의 시퀀스 정렬 파일을 다운로드합니다.

아래의 Bio.AlignIO를 이용하여 다운로드 한 시퀀스 정렬 파일을 읽어 보겠습니다.

Bio.AlignIO 모듈 가져 오기

>>> from Bio import AlignIO

읽기 방법을 사용하여 정렬을 읽습니다. read 메소드는 주어진 파일에서 사용 가능한 단일 정렬 데이터를 읽는 데 사용됩니다. 주어진 파일에 많은 정렬이 포함되어 있으면 구문 분석 방법을 사용할 수 있습니다. parse 메서드는 Bio.SeqIO 모듈의 parse 메서드와 유사한 반복 가능한 정렬 개체를 반환합니다.

>>> alignment = AlignIO.read(open("PF18225_seed.txt"), "stockholm")

정렬 개체를 인쇄합니다.

>>> print(alignment)
SingleLetterAlphabet() alignment with 6 rows and 65 columns
MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVA...EGP B7RZ31_9GAMM/59-123 
AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADIT...KKP A0A0C3NPG9_9PROT/58-119 
ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMA...KKP A0A143HL37_9GAMM/57-121 
TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMA...NKP A0A0X3UC67_9GAMM/57-121 
AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIM...NRK B3PFT7_CELJU/62-126 
AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVA...NRT K4KEM7_SIMAS/61-125
>>>

또한 정렬에서 사용 가능한 시퀀스 (SeqRecord)를 확인할 수도 있습니다.

>>> for align in alignment: 
... print(align.seq) 
... 
MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVATVANQLRGRKRRAFARHREGP 
AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADITA---RLDRRREHGEHGVRKKP 
ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMAPMLIALNYRNRESHAQVDKKP 
TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMAPLFKVLSFRNREDQGLVNNKP 
AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIMVLAPRLTAKHPYDKVQDRNRK 
AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVADLMRKLDLDRPFKKLERKNRT 
>>>

다중 정렬

일반적으로 대부분의 시퀀스 정렬 파일에는 단일 정렬 데이터가 포함되어 있으며 read그것을 구문 분석하는 방법. 다중 서열 정렬 개념에서 둘 이상의 서열이 그들 사이의 최상의 하위 서열 일치를 위해 비교되고 단일 파일에서 다중 서열 정렬이 발생합니다.

입력 시퀀스 정렬 형식에 두 개 이상의 시퀀스 정렬이 포함되어 있으면 다음을 사용해야합니다. parse 대신 방법 read 아래 명시된 방법-

>>> from Bio import AlignIO 
>>> alignments = AlignIO.parse(open("PF18225_seed.txt"), "stockholm") 
>>> print(alignments) 
<generator object parse at 0x000001CD1C7E0360> 
>>> for alignment in alignments: 
... print(alignment) 
... 
SingleLetterAlphabet() alignment with 6 rows and 65 columns 
MQNTPAERLPAIIEKAKSKHDINVWLLDRQGRDLLEQRVPAKVA...EGP B7RZ31_9GAMM/59-123 
AKQRGIAGLEEWLHRLDHSEAIPIFLIDEAGKDLLEREVPADIT...KKP A0A0C3NPG9_9PROT/58-119 
ARRHGQEYFQQWLERQPKKVKEQVFAVDQFGRELLGRPLPEDMA...KKP A0A143HL37_9GAMM/57-121 
TRRHGPESFRFWLERQPVEARDRIYAIDRSGAEILDRPIPRGMA...NKP A0A0X3UC67_9GAMM/57-121 
AINRNTQQLTQDLRAMPNWSLRFVYIVDRNNQDLLKRPLPPGIM...NRK B3PFT7_CELJU/62-126 
AVNATEREFTERIRTLPHWARRNVFVLDSQGFEIFDRELPSPVA...NRT K4KEM7_SIMAS/61-125
>>>

여기서 parse 메서드는 반복 가능한 정렬 객체를 반환하며 실제 정렬을 얻기 위해 반복 할 수 있습니다.

쌍방향 시퀀스 정렬

Pairwise sequence alignment 한 번에 두 개의 시퀀스 만 비교하고 최상의 시퀀스 정렬을 제공합니다. Pairwise 이해하기 쉽고 결과 시퀀스 정렬에서 추론하기가 매우 뛰어납니다.

Biopython은 특별한 모듈을 제공합니다. Bio.pairwise2pairwise 방법을 사용하여 정렬 순서를 식별합니다. Biopython은 정렬 순서를 찾기 위해 최상의 알고리즘을 적용하며 다른 소프트웨어와 동등합니다.

pairwise 모듈을 사용하여 두 개의 단순 및 가상 시퀀스의 시퀀스 정렬을 찾는 예제를 작성해 보겠습니다. 이것은 시퀀스 정렬의 개념과 Biopython을 사용하여 프로그래밍하는 방법을 이해하는 데 도움이 될 것입니다.

1 단계

모듈 가져 오기 pairwise2 아래에 주어진 명령으로-

>>> from Bio import pairwise2

2 단계

두 시퀀스, seq1 및 seq2 만들기-

>>> from Bio.Seq import Seq 
>>> seq1 = Seq("ACCGGT") 
>>> seq2 = Seq("ACGT")

3 단계

seq1 및 seq2와 함께 pairwise2.align.globalxx 메서드를 호출하여 아래 코드 줄을 사용하여 정렬을 찾습니다.

>>> alignments = pairwise2.align.globalxx(seq1, seq2)

여기, globalxx메서드는 실제 작업을 수행하고 주어진 시퀀스에서 가능한 모든 최상의 정렬을 찾습니다. 실제로 Bio.pairwise2는 다양한 시나리오에서 정렬을 찾기 위해 아래 규칙을 따르는 꽤 많은 방법을 제공합니다.

<sequence alignment type>XY

여기서, 시퀀스 정렬 유형은 글로벌 또는 로컬 일 수있는 정렬 유형을 의미한다 . 글로벌 유형은 전체 시퀀스를 고려하여 시퀀스 정렬을 찾는 것입니다. 로컬 유형은 주어진 시퀀스의 하위 집합도 조사하여 시퀀스 정렬을 찾는 것입니다. 이것은 지루하지만 주어진 시퀀스 간의 유사성에 대한 더 나은 아이디어를 제공합니다.

  • X는 일치 점수를 나타냅니다. 가능한 값은 x (정확히 일치), m (동일한 문자를 기반으로 한 점수), d (문자 및 일치 점수가있는 사용자 제공 사전) 및 마지막으로 c (사용자 지정 점수 알고리즘을 제공하는 사용자 정의 함수)입니다.

  • Y는 갭 페널티를 나타냅니다. 가능한 값은 x (갭 페널티 없음), s (두 시퀀스에 대해 동일한 페널티), d (각 시퀀스에 대해 다른 페널티) 및 마지막으로 c (사용자 정의 간격 페널티를 제공하는 사용자 정의 함수)입니다.

따라서 localds는 로컬 정렬 기술, 일치에 대한 사용자 제공 사전 및 두 시퀀스에 대한 사용자 제공 갭 패널티를 사용하여 시퀀스 정렬을 찾는 유효한 방법이기도합니다.

>>> test_alignments = pairwise2.align.localds(seq1, seq2, blosum62, -10, -1)

여기서 blosum62는 match score를 제공하기 위해 pairwise2 모듈에서 사용할 수있는 사전을 의미합니다. -10은 갭 오픈 페널티를 의미하고 -1은 갭 연장 페널티를 의미합니다.

4 단계

반복 가능한 정렬 개체를 반복하고 각 개별 정렬 개체를 가져 와서 인쇄합니다.

>>> for alignment in alignments: 
... print(alignment) 
... 
('ACCGGT', 'A-C-GT', 4.0, 0, 6) 
('ACCGGT', 'AC--GT', 4.0, 0, 6) 
('ACCGGT', 'A-CG-T', 4.0, 0, 6) 
('ACCGGT', 'AC-G-T', 4.0, 0, 6)

5 단계

Bio.pairwise2 모듈은 결과를 더 잘 시각화하기 위해 형식 지정 방법 인 format_alignment를 제공합니다.

>>> from Bio.pairwise2 import format_alignment 
>>> alignments = pairwise2.align.globalxx(seq1, seq2) 
>>> for alignment in alignments: 
... print(format_alignment(*alignment)) 
...

ACCGGT 
| | || 
A-C-GT 
   Score=4 
   
ACCGGT 
|| || 
AC--GT 
   Score=4 

ACCGGT 
| || | 
A-CG-T 
   Score=4 

ACCGGT 
|| | | 
AC-G-T 
   Score=4

>>>

Biopython은 또한 시퀀스 정렬을위한 또 다른 모듈 인 Align을 제공합니다. 이 모듈은 알고리즘, 모드, 매치 스코어, 갭 페널티 등과 같은 매개 변수 설정을 간단하게하기 위해 다른 API 세트를 제공합니다. Align 객체를 간단히 살펴보면 다음과 같습니다.

>>> from Bio import Align
>>> aligner = Align.PairwiseAligner()
>>> print(aligner)
Pairwise sequence aligner with parameters
   match score: 1.000000
   mismatch score: 0.000000
   target open gap score: 0.000000
   target extend gap score: 0.000000
   target left open gap score: 0.000000
   target left extend gap score: 0.000000
   target right open gap score: 0.000000
   target right extend gap score: 0.000000
   query open gap score: 0.000000
   query extend gap score: 0.000000
   query left open gap score: 0.000000
   query left extend gap score: 0.000000
   query right open gap score: 0.000000
   query right extend gap score: 0.000000
   mode: global
>>>

시퀀스 정렬 도구 지원

Biopython은 Bio.Align.Applications 모듈을 통해 많은 시퀀스 정렬 도구에 대한 인터페이스를 제공합니다. 일부 도구는 다음과 같습니다.

  • ClustalW
  • MUSCLE
  • EMBOSS 바늘과 물

Biopython에서 가장 널리 사용되는 정렬 도구 인 ClustalW를 통해 시퀀스 정렬을 만드는 간단한 예제를 작성해 보겠습니다.

Step 1 − 다음에서 Clustalw 프로그램 다운로드 http://www.clustal.org/download/current/설치하십시오. 또한 "clustal"설치 경로로 시스템 PATH를 업데이트합니다.

Step 2 − Bio.Align.Applications 모듈에서 ClustalwCommanLine을 가져옵니다.

>>> from Bio.Align.Applications import ClustalwCommandline

Step 3 − Biopython 패키지에서 사용 가능한 입력 파일 opuntia.fasta로 ClustalwCommanLine을 호출하여 cmd를 설정합니다. https://raw.githubusercontent.com/biopython/biopython/master/Doc/examples/opuntia.fasta

>>> cmd = ClustalwCommandline("clustalw2",
infile="/path/to/biopython/sample/opuntia.fasta")
>>> print(cmd)
clustalw2 -infile=fasta/opuntia.fasta

Step 4 − cmd ()를 호출하면 clustalw 명령이 실행되고 결과 정렬 파일 인 opuntia.aln의 출력이 제공됩니다.

>>> stdout, stderr = cmd()

Step 5 − 아래와 같이 정렬 파일을 읽고 인쇄합니다 −

>>> from Bio import AlignIO
>>> align = AlignIO.read("/path/to/biopython/sample/opuntia.aln", "clustal")
>>> print(align)
SingleLetterAlphabet() alignment with 7 rows and 906 columns
TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273285|gb|AF191659.1|AF191
TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273284|gb|AF191658.1|AF191
TATACATTAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273287|gb|AF191661.1|AF191
TATACATAAAAGAAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273286|gb|AF191660.1|AF191
TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273290|gb|AF191664.1|AF191
TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273289|gb|AF191663.1|AF191
TATACATTAAAGGAGGGGGATGCGGATAAATGGAAAGGCGAAAG...AGA
gi|6273291|gb|AF191665.1|AF191
>>>