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 так же прост, как изменение параметра формата в методе разбора.
Код для того же самого был дан ниже —