[ PROMPT_NODE_26264 ]
sequence_io
[ SKILL_DOCUMENTATION ]
# 使用 Bio.Seq 和 Bio.SeqIO 处理序列
## 概述
Bio.Seq 提供了用于生物序列的 `Seq` 对象及专门的方法,而 Bio.SeqIO 则为读取、写入和转换多种格式的序列文件提供了统一的接口。
## Seq 对象
### 创建序列
python
from Bio.Seq import Seq
# 创建基础序列
my_seq = Seq("AGTACACTGGT")
# 序列支持类似字符串的操作
print(len(my_seq)) # 长度
print(my_seq[0:5]) # 切片
### 核心序列操作
python
# 互补序列和反向互补序列
complement = my_seq.complement()
rev_comp = my_seq.reverse_complement()
# 转录 (DNA 转 RNA)
rna = my_seq.transcribe()
# 翻译 (转为蛋白质)
protein = my_seq.translate()
# 反转录 (RNA 转 DNA)
dna = rna_seq.back_transcribe()
### 序列方法
- `complement()` - 返回互补链
- `reverse_complement()` - 返回反向互补链
- `transcribe()` - DNA 到 RNA 的转录
- `back_transcribe()` - RNA 到 DNA 的转换
- `translate()` - 翻译为蛋白质序列
- `translate(table=N)` - 使用特定的遗传密码表
- `translate(to_stop=True)` - 在第一个终止密码子处停止
## Bio.SeqIO: 序列文件 I/O
### 核心函数
**Bio.SeqIO.parse()**: 读取序列文件的主要工具,返回 `SeqRecord` 对象的迭代器。
python
from Bio import SeqIO
# 解析 FASTA 文件
for record in SeqIO.parse("sequences.fasta", "fasta"):
print(record.id)
print(record.seq)
print(len(record))
**Bio.SeqIO.read()**: 用于单记录文件(验证是否存在且仅存在一条记录)。
python
record = SeqIO.read("single.fasta", "fasta")
**Bio.SeqIO.write()**: 将 SeqRecord 对象输出到文件。
python
# 将记录写入文件
count = SeqIO.write(seq_records, "output.fasta", "fasta")
print(f"Wrote {count} records")
**Bio.SeqIO.convert()**: 简化的格式转换。
python
# 在格式间转换
count = SeqIO.convert("input.gbk", "genbank", "output.fasta", "fasta")
### 支持的文件格式
常见格式包括:
- **fasta** - FASTA 格式
- **fastq** - FASTQ 格式 (包含质量分数)
- **genbank** 或 **gb** - GenBank 格式
- **embl** - EMBL 格式
- **swiss** - SwissProt 格式
- **fasta-2line** - 序列在单行的 FASTA 格式
- **tab** - 简单的制表符分隔格式
### SeqRecord 对象
`SeqRecord` 对象将序列数据与注释结合在一起:
python
record.id # P