📅  最后修改于: 2023-12-03 14:59:31.368000             🧑  作者: Mango
Biopython是一个Python生物信息学库,它包含了处理生物序列数据的工具和算法,可以很方便地对DNA、RNA、蛋白质等进行分析、操作和可视化。其中,序列输入输出是Biopython最基本的功能之一,使我们能够方便地读取和写入各种格式的生物序列文件。
如果你还没有安装Biopython库,可以通过下面的命令来进行安装:
pip install biopython
Biopython支持的序列文件格式很多,包括FASTA、GenBank、BLAST、Phylip、Clustal等常用格式。下面我们分别介绍一下这些格式的特点。
FASTA格式是一种以’>‘开头的文本文件格式,其后跟着序列的名称和序列信息,序列信息可以是单行序列或多行序列。下面是一个例子:
>sequence1
ATCGATCGATCGATCGATCG
>sequence2
GCTAGCTGACTGATCGAT
在Biopython中,我们可以使用SeqIO模块来读取和写入FASTA格式的序列文件。
from Bio import SeqIO
# 读取FASTA文件
records = SeqIO.parse("sequences.fasta", "fasta")
for record in records:
print(record.id) # 序列名称
print(record.seq) # 序列信息
# 写入FASTA文件
record1 = SeqIO.SeqRecord(Seq("ATCGATCGATCGATCGATCG"), "sequence1")
record2 = SeqIO.SeqRecord(Seq("GCTAGCTGACTGATCGAT"), "sequence2")
records = [record1, record2]
SeqIO.write(records, "sequences.fasta", "fasta")
GenBank是一种由美国国家生物技术信息中心(National Center for Biotechnology Information, NCBI)维护的生物序列数据库,GenBank格式是一种以’//‘结尾的文本文件格式,其包含序列的名称、源信息、特征信息以及其他注释信息。下面是一个例子:
LOCUS sequence1 100 bp DNA
DEFINITION DNA sequence for sequence1.
ACCESSION A12345
VERSION A12345.1
KEYWORDS .
SOURCE
ORGANISM .
FEATURES Location/Qualifiers
source 1..100
ORIGIN
1 ATCGTCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGATCGAT 60
//
在Biopython中,我们可以使用SeqIO模块来读取和写入GenBank格式的序列文件。
from Bio import SeqIO
# 读取GenBank文件
records = SeqIO.parse("sequences.gbk", "genbank")
for record in records:
print(record.id) # 序列名称
print(record.seq) # 序列信息
print(record.features) # 特征信息
# 写入GenBank文件
record = SeqIO.SeqRecord(Seq("ATCGATCGATCGATCGATCG"), id="sequence1", description="DNA sequence for sequence1")
record.features = []
records = [record]
SeqIO.write(records, "sequences.gbk", "genbank")
BLAST格式是一种以’#‘开头的文本文件格式,其包含查询序列、比对序列、比对得分以及其他信息。下面是一个例子:
BLASTN 2.6.0+
Reference: Zheng Zhang, Scott Schwartz, Lukas Wagner, and Webb
Miller (2000), "A greedy algorithm for aligning DNA sequences", J
Comput Biol 2000; 7(1-2):203-14.
Query= sequence1
Length=100
Score E
Sequences producing significant alignments: (Bits) Value
sequence2 60 2e-10
...
# BLAST processed 1 queries
在Biopython中,我们可以使用NCBIXML模块来读取和写入BLAST格式的序列文件,也可以使用SeqIO模块将BLAST结果转化为FASTA格式。
from Bio.Blast import NCBIXML
from Bio import SeqIO
# 读取BLAST文件
result_handle = open("blast_results.xml")
blast_records = NCBIXML.parse(result_handle)
for blast_record in blast_records:
for alignment in blast_record.alignments:
print(alignment.title) # 序列名称
print(alignment.length) # 序列长度
# 写入FASTA文件
blast_records = NCBIXML.parse(open("blast_results.xml"))
records = []
for blast_record in blast_records:
for alignment in blast_record.alignments:
title = alignment.title.split()[1] # 获取序列名称
description = blast_record.query # 获取查询序列名称
seq = alignment.hsps[0].sbjct # 获取序列信息
record = SeqIO.SeqRecord(Seq(seq), id=title, description=description)
records.append(record)
SeqIO.write(records, "blast_results.fasta", "fasta")
Biopython提供了强大的序列输入输出功能,在处理生物序列数据时非常方便高效,可以读取和写入各种格式的生物序列文件。除了上面介绍的几种格式外,还有很多其他的格式,可以在官方文档中了解更多。