Biopython - Căn chỉnh trình tự

Sequence alignment là quá trình sắp xếp hai hay nhiều trình tự (của trình tự DNA, RNA hoặc protein) theo một trật tự cụ thể để xác định vùng tương đồng giữa chúng.

Việc xác định vùng tương tự cho phép chúng tôi suy ra nhiều thông tin như những đặc điểm nào được bảo tồn giữa các loài, các loài khác nhau gần gũi về mặt di truyền như thế nào, các loài tiến hóa như thế nào, v.v. Biopython cung cấp hỗ trợ rộng rãi cho việc sắp xếp trình tự.

Hãy để chúng tôi tìm hiểu một số tính năng quan trọng được cung cấp bởi Biopython trong chương này -

Phân tích cú pháp sắp xếp trình tự

Biopython cung cấp một mô-đun, Bio.AlignIO để đọc và ghi các căn chỉnh trình tự. Trong tin sinh học, có rất nhiều định dạng có sẵn để chỉ định dữ liệu sắp xếp trình tự tương tự như dữ liệu trình tự đã học trước đó. Bio.AlignIO cung cấp API tương tự như Bio.SeqIO ngoại trừ việc Bio.SeqIO hoạt động trên dữ liệu trình tự và Bio.AlignIO hoạt động trên dữ liệu căn chỉnh trình tự.

Trước khi bắt đầu tìm hiểu, chúng ta hãy tải xuống tệp căn chỉnh trình tự mẫu từ Internet.

Để tải xuống tệp mẫu, hãy làm theo các bước sau:

Step 1 - Mở trình duyệt yêu thích của bạn và truy cập http://pfam.xfam.org/family/browsetrang mạng. Nó sẽ hiển thị tất cả các họ Pfam theo thứ tự bảng chữ cái.

Step 2- Chọn một họ bất kỳ có số lượng hạt giống ít hơn. Nó chứa dữ liệu tối thiểu và cho phép chúng tôi làm việc dễ dàng với sự liên kết. Ở đây, chúng tôi đã chọn / nhấp vào PF18225 và nó sẽ mở rahttp://pfam.xfam.org/family/PF18225 và hiển thị thông tin chi tiết đầy đủ về nó, bao gồm cả căn chỉnh trình tự.

Step 3 - Vào phần căn chỉnh và tải xuống tệp căn chỉnh trình tự ở định dạng Stockholm (PF18225_seed.txt).

Hãy để chúng tôi thử đọc tệp căn chỉnh trình tự đã tải xuống bằng Bio.AlignIO như bên dưới -

Nhập mô-đun Bio.AlignIO

>>> from Bio import AlignIO

Đọc căn chỉnh bằng phương pháp đọc. phương pháp đọc được sử dụng để đọc dữ liệu căn chỉnh đơn có sẵn trong tệp đã cho. Nếu tệp đã cho chứa nhiều căn chỉnh, chúng ta có thể sử dụng phương pháp phân tích cú pháp. phương thức phân tích cú pháp trả về đối tượng căn chỉnh có thể lặp lại tương tự như phương thức phân tích cú pháp trong mô-đun Bio.SeqIO.

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

In đối tượng căn chỉnh.

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

Chúng tôi cũng có thể kiểm tra các chuỗi (SeqRecord) có sẵn trong căn chỉnh cũng như bên dưới -

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

Nhiều căn chỉnh

Nói chung, hầu hết các tệp căn chỉnh trình tự đều chứa dữ liệu căn chỉnh đơn và nó đủ để sử dụng readđể phân tích cú pháp nó. Trong khái niệm căn chỉnh nhiều trình tự, hai hoặc nhiều trình tự được so sánh để có các kết quả phù hợp nhất giữa chúng và dẫn đến nhiều trình tự căn chỉnh trong một tệp duy nhất.

Nếu định dạng căn chỉnh trình tự đầu vào chứa nhiều hơn một căn chỉnh trình tự, thì chúng ta cần sử dụng parse phương pháp thay vì read phương pháp như được chỉ định bên dưới -

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

Ở đây, phương thức phân tích cú pháp trả về đối tượng căn chỉnh có thể lặp lại và nó có thể được lặp lại để có được căn chỉnh thực tế.

Căn chỉnh trình tự theo cặp

Pairwise sequence alignment chỉ so sánh hai trình tự cùng một lúc và cung cấp sự liên kết trình tự tốt nhất có thể. Pairwise dễ hiểu và đặc biệt để suy ra từ sự liên kết trình tự kết quả.

Biopython cung cấp một mô-đun đặc biệt, Bio.pairwise2để xác định trình tự căn chỉnh bằng phương pháp theo cặp. Biopython áp dụng thuật toán tốt nhất để tìm chuỗi căn chỉnh và nó ngang bằng với các phần mềm khác.

Hãy để chúng tôi viết một ví dụ để tìm sự liên kết trình tự của hai chuỗi đơn giản và giả thuyết bằng cách sử dụng mô-đun ghép đôi. Điều này sẽ giúp chúng ta hiểu khái niệm về căn chỉnh trình tự và cách lập trình nó bằng Biopython.

Bước 1

Nhập mô-đun pairwise2 với lệnh dưới đây -

>>> from Bio import pairwise2

Bước 2

Tạo hai chuỗi, seq1 và seq2 -

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

Bước 3

Gọi phương thức pairwise2.align.globalxx cùng với seq1 và seq2 để tìm các căn chỉnh bằng cách sử dụng dòng mã bên dưới:

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

Đây, globalxxphương pháp thực hiện công việc thực tế và tìm tất cả các liên kết tốt nhất có thể trong các trình tự đã cho. Trên thực tế, Bio.pairwise2 cung cấp khá nhiều phương pháp tuân theo quy ước dưới đây để tìm các căn chỉnh trong các tình huống khác nhau.

<sequence alignment type>XY

Ở đây, kiểu căn chỉnh trình tự đề cập đến kiểu căn chỉnh có thể là toàn cục hoặc cục bộ. loại toàn cầu là tìm sự liên kết trình tự bằng cách xem xét toàn bộ trình tự. kiểu cục bộ là tìm sự liên kết trình tự bằng cách xem xét tập hợp con của các trình tự đã cho. Điều này sẽ tẻ nhạt nhưng cung cấp ý tưởng tốt hơn về sự giống nhau giữa các trình tự đã cho.

  • X là điểm phù hợp. Các giá trị có thể có là x (khớp chính xác), m (điểm dựa trên các ký tự giống hệt nhau), d (từ điển do người dùng cung cấp với ký tự và điểm khớp) và cuối cùng là c (hàm do người dùng xác định để cung cấp thuật toán chấm điểm tùy chỉnh).

  • Y đề cập đến hình phạt khoảng cách. Các giá trị có thể có là x (không có hình phạt khoảng cách), s (hình phạt giống nhau cho cả hai chuỗi), d (hình phạt khác nhau cho mỗi chuỗi) và cuối cùng là c (chức năng do người dùng xác định để cung cấp hình phạt khoảng cách tùy chỉnh)

Vì vậy, localds cũng là một phương pháp hợp lệ, tìm thấy sự liên kết trình tự bằng cách sử dụng kỹ thuật căn chỉnh cục bộ, từ điển do người dùng cung cấp cho các trận đấu và hình phạt khoảng cách do người dùng cung cấp cho cả hai chuỗi.

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

Ở đây, blosum62 đề cập đến một từ điển có sẵn trong mô-đun pairwise2 để cung cấp điểm đối sánh. -10 đề cập đến hình phạt mở khoảng cách và -1 là hình phạt mở rộng khoảng cách.

Bước 4

Lặp qua đối tượng căn chỉnh có thể lặp lại và lấy từng đối tượng căn chỉnh riêng lẻ và in nó.

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

Bước 5

Mô-đun Bio.pairwise2 cung cấp một phương pháp định dạng, format_alignment để hình dung rõ hơn kết quả -

>>> 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 cũng cung cấp một mô-đun khác để sắp xếp trình tự, Align. Mô-đun này cung cấp một bộ API khác để đơn giản là cài đặt tham số như thuật toán, chế độ, điểm trận đấu, hình phạt cách biệt, v.v., Cái nhìn đơn giản về đối tượng Align như sau:

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

Hỗ trợ cho các công cụ căn chỉnh trình tự

Biopython cung cấp giao diện cho rất nhiều công cụ căn chỉnh trình tự thông qua mô-đun Bio.Align.Application. Một số công cụ được liệt kê dưới đây:

  • ClustalW
  • MUSCLE
  • Kim EMBOSS và nước

Hãy để chúng tôi viết một ví dụ đơn giản trong Biopython để tạo căn chỉnh trình tự thông qua công cụ căn chỉnh phổ biến nhất, ClustalW.

Step 1 - Tải xuống chương trình Clustalw từ http://www.clustal.org/download/current/và cài đặt nó. Ngoài ra, hãy cập nhật PATH hệ thống với đường dẫn cài đặt “clustal”.

Step 2 - nhập ClustalwCommanLine từ mô-đun Bio.Align.Application.

>>> from Bio.Align.Applications import ClustalwCommandline

Step 3 - Đặt cmd bằng cách gọi ClustalwCommanLine với tệp đầu vào, opuntia.fasta có sẵn trong gói Biopython. 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 - Gọi cmd () sẽ chạy lệnh clustalw và đưa ra kết quả là tệp căn chỉnh kết quả, opuntia.aln.

>>> stdout, stderr = cmd()

Step 5 - Đọc và in tệp căn chỉnh như bên dưới -

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