Биопайтон - выравнивание последовательностей
Sequence alignment представляет собой процесс расположения двух или более последовательностей (последовательностей ДНК, РНК или белков) в определенном порядке для определения области сходства между ними.
Идентификация подобной области позволяет нам сделать вывод о том, какие черты сохраняются между видами, насколько генетически близки разные виды, как виды эволюционируют и т. Д. Biopython обеспечивает обширную поддержку выравнивания последовательностей.
Давайте узнаем некоторые из важных функций, предоставляемых Biopython в этой главе -
Выравнивание последовательности синтаксического анализа
Biopython предоставляет модуль Bio.AlignIO для чтения и записи выравнивания последовательностей. В биоинформатике доступно множество форматов для определения данных выравнивания последовательностей, аналогичных ранее изученным данным последовательностей. Bio.AlignIO предоставляет API, аналогичный Bio.SeqIO, за исключением того, что Bio.SeqIO работает с данными последовательностей, а Bio.AlignIO работает с данными выравнивания последовательностей.
Прежде чем приступить к изучению, давайте загрузим образец файла выравнивания последовательностей из Интернета.
Чтобы загрузить образец файла, выполните следующие действия:
Step 1 - Откройте свой любимый браузер и перейдите в http://pfam.xfam.org/family/browseВеб-сайт. Он покажет все семейства Pfam в алфавитном порядке.
Step 2- Выберите любую семью, имеющую меньшее количество семян. Он содержит минимум данных и позволяет нам легко работать с центровкой. Здесь мы выбрали / щелкнули PF18225, и он откроется, перейдите кhttp://pfam.xfam.org/family/PF18225 и показывает полную информацию о нем, включая выравнивание последовательностей.
Step 3 - Перейдите в раздел выравнивания и загрузите файл выравнивания последовательностей в Стокгольмском формате (PF18225_seed.txt).
Давайте попробуем прочитать загруженный файл выравнивания последовательностей, используя Bio.AlignIO, как показано ниже -
Импортировать модуль Bio.AlignIO
>>> from Bio import AlignIO
Считайте выравнивание с помощью метода чтения. Метод чтения используется для чтения данных одиночного выравнивания, имеющихся в данном файле. Если данный файл содержит много выравниваний, мы можем использовать метод синтаксического анализа. Метод parse возвращает повторяемый объект выравнивания, аналогичный методу parse в модуле Bio.SeqIO.
>>> 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.pairwise2для идентификации последовательности выравнивания с использованием попарного метода. Biopython применяет лучший алгоритм для поиска последовательности выравнивания, и он не уступает другим программам.
Напишем пример, чтобы найти выравнивание последовательностей двух простых и гипотетических последовательностей с помощью попарного модуля. Это поможет нам понять концепцию выравнивания последовательностей и то, как ее программировать с помощью Biopython.
Шаг 1
Импортировать модуль pairwise2 с помощью команды, приведенной ниже -
>>> from Bio import pairwise2
Шаг 2
Создайте две последовательности, seq1 и seq2 -
>>> from Bio.Seq import Seq
>>> seq1 = Seq("ACCGGT")
>>> seq2 = Seq("ACGT")
Шаг 3
Вызовите метод pairwise2.align.globalxx вместе с seq1 и seq2, чтобы найти выравнивания, используя следующую строку кода -
>>> 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 относится к словарю, доступному в модуле 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
- ЭМБОСС игла и вода
Давайте напишем простой пример в Biopython для создания выравнивания последовательностей с помощью самого популярного инструмента выравнивания ClustalW.
Step 1 - Загрузите программу Clustalw из http://www.clustal.org/download/current/и установите его. Также обновите системный PATH, указав «clustal» путь установки.
Step 2 - импортировать ClustalwCommanLine из модуля Bio.Align.Applications.
>>> from Bio.Align.Applications import ClustalwCommandline
Step 3 - Установите cmd, вызвав ClustalwCommanLine с входным файлом opuntia.fasta, доступным в пакете 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 - Вызов 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
>>>