Учебники

Biopython — выравнивание последовательностей

Выравнивание последовательностей представляет собой процесс расположения двух или более последовательностей (последовательностей ДНК, РНК или белка) в определенном порядке, чтобы идентифицировать область сходства между ними.

Идентификация подобного региона позволяет нам вывести много информации, например, какие признаки сохраняются между видами, насколько генетически близки различные виды, как эволюционируют виды и т. Д. Biopython предоставляет обширную поддержку для выравнивания последовательностей.

Давайте изучим некоторые важные функции, предоставляемые Biopython в этой главе:

Выравнивание последовательности парсинга

Biopython предоставляет модуль Bio.AlignIO для чтения и записи выравниваний последовательностей. В биоинформатике существует множество доступных форматов для указания данных выравнивания последовательностей, аналогичных ранее изученным данным последовательностей. Bio.AlignIO предоставляет API, аналогичный Bio.SeqIO, за исключением того, что Bio.SeqIO работает с данными последовательности, а Bio.AlignIO работает с данными выравнивания последовательности.

Прежде чем приступить к изучению, давайте загрузим образец файла выравнивания последовательности из Интернета.

Чтобы загрузить файл примера, выполните следующие действия:

Шаг 1 — Откройте ваш любимый браузер и перейдите на сайт http://pfam.xfam.org/family/browse . Он покажет все семейства Pfam в алфавитном порядке.

Шаг 2 — Выберите любую семью с меньшим количеством семян. Он содержит минимальные данные и позволяет нам легко работать с выравниванием. Здесь мы выбрали / щелкнули PF18225, и он открывается, перейдите по адресу http://pfam.xfam.org/family/PF18225 и показывает полную информацию о нем, включая выравнивание последовательностей.

Шаг 3 — Перейдите в раздел выравнивания и загрузите файл выравнивания последовательности в формате Стокгольма (PF18225_seed.txt).

Давайте попробуем прочитать загруженный файл выравнивания последовательности, используя Bio.AlignIO, как показано ниже:

Импортировать модуль Bio.AlignIO

>>> from Bio import AlignIO

Считать выравнивание, используя метод чтения. Метод read используется для чтения отдельных данных выравнивания, доступных в данном файле. Если данный файл содержит много выравниваний, мы можем использовать метод разбора. Метод 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 . В концепции множественного выравнивания последовательностей две или более последовательностей сравниваются для лучшего совпадения подпоследовательностей между ними и приводит к выравниванию множественных последовательностей в одном файле.

Если формат выравнивания входной последовательности содержит более одного выравнивания последовательности, то нам нужно использовать метод разбора вместо метода чтения, как указано ниже —

>>> 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 возвращает итеративный объект выравнивания, и его можно повторять, чтобы получить фактические выравнивания.

Парное выравнивание последовательности

Попарное выравнивание последовательностей сравнивает только две последовательности одновременно и обеспечивает наилучшие возможные выравнивания последовательностей. Попарно легко понять и исключить из полученного выравнивания последовательности.

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 (точное совпадение), m (оценка, основанная на одинаковых символах), d (пользовательский словарь с символом и счетом совпадения) и, наконец, c (определенная пользователем функция для предоставления собственного алгоритма оценки).

  • Y относится к штрафу за разрыв. Возможные значения: x (без штрафных санкций), s (одинаковые штрафы для обеих последовательностей), d (разные штрафы для каждой последовательности) и, наконец, c (пользовательская функция для предоставления пользовательских штрафов за пропуск)

Х относится к совпадению баллов. Возможные значения: 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
  • EMBOSS игла и вода

Давайте напишем простой пример в Biopython для создания выравнивания последовательностей с помощью самого популярного инструмента выравнивания ClustalW.

Шаг 1 — Загрузите программу Clustalw с http://www.clustal.org/download/current/ и установите ее. Также обновите системный PATH, указав путь установки «clustal».

Шаг 2 — импортировать ClustalwCommanLine из модуля Bio.Align.Applications.

>>> from Bio.Align.Applications import ClustalwCommandline

Шаг 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

Шаг 4 — вызов cmd () запустит команду clustalw и выдаст выходной файл результирующего выравнивания opuntia.aln.

>>> stdout, stderr = cmd()

Шаг 5 — Прочитайте и распечатайте файл выравнивания, как показано ниже —