Учебники

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

Biopython предоставляет модуль Bio.SeqIO для чтения и записи последовательностей из и в файл (любой поток) соответственно. Он поддерживает практически все форматы файлов, доступные в биоинформатике. Большая часть программного обеспечения обеспечивает разный подход для разных форматов файлов. Но Biopython сознательно следует единому подходу, чтобы представить данные проанализированной последовательности пользователю через его объект SeqRecord.

Давайте узнаем больше о SeqRecord в следующем разделе.

SeqRecord

Модуль Bio.SeqRecord предоставляет SeqRecord для хранения мета-информации о последовательности, а также о самих данных последовательности, как показано ниже —

  • seq — это фактическая последовательность

  • id — это первичный идентификатор данной последовательности. Тип по умолчанию — строка.

  • name — это имя последовательности. Тип по умолчанию — строка.

  • description — отображает удобочитаемую информацию о последовательности.

  • аннотации — это словарь дополнительной информации о последовательности.

seq — это фактическая последовательность

id — это первичный идентификатор данной последовательности. Тип по умолчанию — строка.

name — это имя последовательности. Тип по умолчанию — строка.

description — отображает удобочитаемую информацию о последовательности.

аннотации — это словарь дополнительной информации о последовательности.

SeqRecord может быть импортирован как указано ниже

from Bio.SeqRecord import SeqRecord

Давайте разберемся в нюансах разбора файла последовательности с использованием файла реальной последовательности в следующих разделах.

Форматы файла последовательности разбора

В этом разделе объясняется, как анализировать два наиболее популярных формата файлов последовательности, FASTA и GenBank .

FASTA

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

Biopython предоставляет пример файла FASTA, доступ к которому можно получить по адресу https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Загрузите и сохраните этот файл в каталоге образцов Biopython под именем ‘orchid.fasta’ .

Модуль Bio.SeqIO предоставляет метод parse () для обработки файлов последовательности и может быть импортирован следующим образом:

from Bio.SeqIO import parse

Метод parse () содержит два аргумента, первый — дескриптор файла, а второй — формат файла.

>>> file = open('path/to/biopython/sample/orchid.fasta') 
>>> for record in parse(file, "fasta"): 
...    print(record.id) 
... 
gi|2765658|emb|Z78533.1|CIZ78533 
gi|2765657|emb|Z78532.1|CCZ78532 
.......... 
.......... 
gi|2765565|emb|Z78440.1|PPZ78440 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

Здесь метод parse () возвращает итеративный объект, который возвращает SeqRecord на каждой итерации. Будучи повторяемым, он предоставляет множество сложных и простых методов и позволяет нам увидеть некоторые из особенностей.

следующий()

Метод next () возвращает следующий элемент, доступный в итерируемом объекте, который мы можем использовать для получения первой последовательности, как показано ниже:

>>> first_seq_record = next(SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta')) 
>>> first_seq_record.id 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.name 'gi|2765658|emb|Z78533.1|CIZ78533' 
>>> first_seq_record.seq Seq('CGTAACAAGGTTTCCGTAGGTGAACCTGCGGAAGGATCATTGATGAGACCGTGG...CGC', SingleLetterAlphabet()) 
>>> first_seq_record.description 'gi|2765658|emb|Z78533.1|CIZ78533 C.irapeanum 5.8S rRNA gene and ITS1 and ITS2 DNA' 
>>> first_seq_record.annotations 
{} 
>>>

Здесь seq_record.annotations пуст, поскольку формат FASTA не поддерживает аннотации последовательности.

понимание списка

Мы можем преобразовать итерируемый объект в список, используя понимание списка, как указано ниже

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> all_seq = [seq_record for seq_record in seq_iter] >>> len(all_seq) 
94 
>>>

Здесь мы использовали метод len, чтобы получить общее количество. Мы можем получить последовательность с максимальной длиной следующим образом:

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> max_seq = max(len(seq_record.seq) for seq_record in seq_iter) 
>>> max_seq 
789 
>>>

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

>>> seq_iter = SeqIO.parse(open('path/to/biopython/sample/orchid.fasta'),'fasta') 
>>> seq_under_600 = [seq_record for seq_record in seq_iter if len(seq_record.seq) < 600] 
>>> for seq in seq_under_600: 
...    print(seq.id) 
... 
gi|2765606|emb|Z78481.1|PIZ78481 
gi|2765605|emb|Z78480.1|PGZ78480 
gi|2765601|emb|Z78476.1|PGZ78476 
gi|2765595|emb|Z78470.1|PPZ78470 
gi|2765594|emb|Z78469.1|PHZ78469 
gi|2765564|emb|Z78439.1|PBZ78439 
>>>

Записать коллекцию объектов SqlRecord (проанализированные данные) в файл так же просто, как вызвать метод SeqIO.write, как показано ниже:

file = open("converted.fasta", "w) 
SeqIO.write(seq_record, file, "fasta")

Этот метод может быть эффективно использован для преобразования формата, как указано ниже —

file = open("converted.gbk", "w) 
SeqIO.write(seq_record, file, "genbank")

GenBank

Это более богатый формат последовательности для генов и включает поля для различных видов аннотаций. Biopython предоставляет пример файла GenBank, доступ к которому можно получить по адресу https://github.com/biopython/biopython/blob/master/Doc/examples/ls_orchid.fasta.

Загрузите и сохраните файл в вашем каталоге образцов Biopython под именем ‘orchid.gbk’

Поскольку Biopython предоставляет единственную функцию, разбирать для разбора всех форматов биоинформатики. Разбор формата GenBank так же прост, как изменение параметра формата в методе разбора.

Код для того же самого был дан ниже —