[ PROMPT_NODE_27348 ]
Scikit Bio API 参考
[ SKILL_DOCUMENTATION ]
# scikit-bio API 参考
本文档提供有关使用 scikit-bio 的详细 API 信息、高级示例和故障排除指南。
## 目录
1. [序列类](#sequence-classes)
2. [比对方法](#alignment-methods)
3. [系统发育树](#phylogenetic-trees)
4. [多样性指标](#diversity-metrics)
5. [排序](#ordination)
6. [统计检验](#statistical-tests)
7. [距离矩阵](#distance-matrices)
8. [文件 I/O](#file-io)
9. [故障排除](#troubleshooting)
## 序列类
### DNA, RNA 和蛋白质类
python
from skbio import DNA, RNA, Protein, Sequence
# 创建序列
dna = DNA('ATCGATCG', metadata={'id': 'seq1', 'description': 'Example'})
rna = RNA('AUCGAUCG')
protein = Protein('ACDEFGHIKLMNPQRSTVWY')
# 序列操作
dna_rc = dna.reverse_complement() # 反向互补
rna = dna.transcribe() # DNA -> RNA
protein = rna.translate() # RNA -> 蛋白质
# 使用遗传密码表
protein = rna.translate(genetic_code=11) # 细菌密码
### 序列搜索与模式匹配
python
# 使用正则表达式查找基序
dna = DNA('ATGCGATCGATGCATCG')
motif_locs = dna.find_with_regex('ATG.{3}') # 起始密码子
# 查找所有位置
import re
for match in re.finditer('ATG', str(dna)):
print(f"ATG found at position {match.start()}")
# k-mer 计数
from skbio.sequence import _motifs
kmers = dna.kmer_frequencies(k=3)
### 处理序列元数据
python
# 序列级元数据
dna = DNA('ATCG', metadata={'id': 'seq1', 'source': 'E. coli'})
print(dna.metadata['id'])
# 位置元数据(来自 FASTQ 的每碱基质量分数)
from skbio import DNA
seqs = DNA.read('reads.fastq', format='fastq', phred_offset=33)
quality_scores = seqs.positional_metadata['quality']
# 区间元数据(特征/注释)
dna.interval_metadata.add([(5, 15)], metadata={'type': 'gene', 'name': 'geneA'})
### 距离计算
python
from skbio import DNA
seq1 = DNA('ATCGATCG')
seq2 = DNA('ATCG--CG')
# Hamming 距离(默认)
dist = seq1.distance(seq2)
# 自定义距离函数
from skbio.sequence.distance import kmer_distance
dist = seq1.distance(seq2, metric=kmer_distance)
## 比对方法
### 成对序列比对
python
from skbio.alignment import local_pairwise_align_ssw, global_pairwise_align
from skbio import DNA, Protein
# 局部比对(通过 SSW 的 Smith-Waterman)
seq1 = DNA('ATCGATCGATCG')
seq2 = DNA('ATCGGGGATCG')
alignment = loca