生物数据分析工具包Skill scikit-bio

scikit-bio 是一个用于生物信息学分析的 Python 工具包,提供序列处理、对齐、系统发育树构建、多样性计算、排序分析和统计测试等功能。关键词:生物数据、序列分析、系统发育树、多样性、PCoA、PERMANOVA、生物信息学、Python、数据分析。

数据分析 0 次安装 0 次浏览 更新于 3/16/2026

name: scikit-bio description: “生物数据工具包。序列分析、对齐、系统发育树、多样性指标(alpha/beta, UniFrac)、排序分析(PCoA)、PERMANOVA、FASTA/Newick 输入输出,用于微生物组分析。”

scikit-bio

概述

scikit-bio 是一个全面的 Python 库,用于处理生物数据。应用此技能进行生物信息学分析,涵盖序列操作、对齐、系统发育学、微生物生态学和多变量统计。

何时使用此技能

此技能应在用户:

  • 处理生物序列(DNA, RNA, 蛋白质)时使用
  • 需要读写生物文件格式(FASTA, FASTQ, GenBank, Newick, BIOM 等)时
  • 执行序列对齐或搜索模式时
  • 构建或分析系统发育树时
  • 计算多样性指标(alpha/beta 多样性,UniFrac 距离)时
  • 执行排序分析(PCoA, CCA, RDA)时
  • 对生物/生态数据运行统计测试(PERMANOVA, ANOSIM, Mantel)时
  • 分析微生物组或群落生态数据时
  • 处理来自语言模型的蛋白质嵌入时
  • 需要操作生物数据表时

核心能力

1. 序列操作

使用专门的 DNA、RNA 和蛋白质数据类处理生物序列。

关键操作:

  • 从 FASTA、FASTQ、GenBank、EMBL 格式读写序列
  • 序列切片、连接和搜索
  • 反向互补、转录(DNA→RNA)和翻译(RNA→蛋白质)
  • 使用正则表达式查找模式和图案
  • 计算距离(汉明距离、k-mer 基距离)
  • 处理序列质量分数和元数据

常见模式:

import skbio

# 从文件读取序列
seq = skbio.DNA.read('input.fasta')

# 序列操作
rc = seq.reverse_complement()
rna = seq.transcribe()
protein = rna.translate()

# 查找模式
motif_positions = seq.find_with_regex('ATG[ACGT]{3}')

# 检查属性
has_degens = seq.has_degenerates()
seq_no_gaps = seq.degap()

重要注意事项:

  • 使用 DNARNAProtein 类用于语法化序列并带验证
  • 使用 Sequence 类用于无字母表限制的通用序列
  • 从 FASTQ 文件自动加载质量分数到位置元数据
  • 元数据类型:序列级(ID、描述)、位置级(每碱基)、区间级(区域/特征)

2. 序列对齐

使用动态规划算法进行成对和多重序列对齐。

关键能力:

  • 全局对齐(Needleman-Wunsch,带半全局变体)
  • 局部对齐(Smith-Waterman)
  • 可配置的评分方案(匹配/不匹配、空位惩罚、替换矩阵)
  • CIGAR 字符串转换
  • 使用 TabularMSA 存储和操作多重序列对齐

常见模式:

from skbio.alignment import local_pairwise_align_ssw, TabularMSA

# 成对对齐
alignment = local_pairwise_align_ssw(seq1, seq2)

# 访问对齐序列
msa = alignment.aligned_sequences

# 从文件读取多重对齐
msa = TabularMSA.read('alignment.fasta', constructor=skbio.DNA)

# 计算一致序列
consensus = msa.consensus()

重要注意事项:

  • 使用 local_pairwise_align_ssw 进行局部对齐(更快,基于 SSW)
  • 使用 StripedSmithWaterman 进行蛋白质对齐
  • 推荐使用仿射空位惩罚处理生物序列
  • 可以在 scikit-bio、BioPython 和 Biotite 对齐格式之间转换

3. 系统发育树

构建、操作和分析表示进化关系的系统发育树。

关键能力:

  • 从距离矩阵构建树(UPGMA、WPGMA、Neighbor Joining、GME、BME)
  • 树操作(修剪、重新生根、遍历)
  • 距离计算(祖线距离、共祖距离、Robinson-Foulds)
  • ASCII 可视化
  • Newick 格式输入输出

常见模式:

from skbio import TreeNode
from skbio.tree import nj

# 从文件读取树
tree = TreeNode.read('tree.nwk')

# 从距离矩阵构建树
tree = nj(distance_matrix)

# 树操作
subtree = tree.shear(['taxon1', 'taxon2', 'taxon3'])
tips = [node for node in tree.tips()]
lca = tree.lowest_common_ancestor(['taxon1', 'taxon2'])

# 计算距离
patristic_dist = tree.find('taxon1').distance(tree.find('taxon2'))
cophenetic_matrix = tree.cophenetic_matrix()

# 比较树
rf_distance = tree.robinson_foulds(other_tree)

重要注意事项:

  • 使用 nj() 进行邻接法(经典系统发育方法)
  • 使用 upgma() 进行 UPGMA(假设分子钟)
  • GME 和 BME 高度可扩展用于大型树
  • 树可以有根或无根;某些度量需要特定生根

4. 多样性分析

为微生物生态学和群落分析计算 alpha 和 beta 多样性指标。

关键能力:

  • Alpha 多样性:丰富度、香农熵、辛普森指数、Faith’s PD、Pielou’s 均匀度
  • Beta 多样性:Bray-Curtis、Jaccard、加权/非加权 UniFrac、欧几里得距离
  • 系统发育多样性指标(需要树输入)
  • 稀疏采样和子采样
  • 与排序分析和统计测试集成

常见模式:

from skbio.diversity import alpha_diversity, beta_diversity
import skbio

# Alpha 多样性
alpha = alpha_diversity('shannon', counts_matrix, ids=sample_ids)
faith_pd = alpha_diversity('faith_pd', counts_matrix, ids=sample_ids,
                          tree=tree, otu_ids=feature_ids)

# Beta 多样性
bc_dm = beta_diversity('braycurtis', counts_matrix, ids=sample_ids)
unifrac_dm = beta_diversity('unweighted_unifrac', counts_matrix,
                           ids=sample_ids, tree=tree, otu_ids=feature_ids)

# 获取可用指标
from skbio.diversity import get_alpha_diversity_metrics
print(get_alpha_diversity_metrics())

重要注意事项:

  • 计数必须是表示丰度的整数,而不是相对频率
  • 系统发育指标(Faith’s PD、UniFrac)需要树和 OTU ID 映射
  • 使用 partial_beta_diversity() 仅计算特定样本对
  • Alpha 多样性返回 Series,Beta 多样性返回 DistanceMatrix

5. 排序方法

将高维生物数据降维到可可视化的低维空间。

关键能力:

  • 从距离矩阵进行 PCoA(主坐标分析)
  • 用于列联表的 CA(对应分析)
  • 带环境约束的 CCA(典范对应分析)
  • 用于线性关系的 RDA(冗余分析)
  • 用于特征解释的双标图投影

常见模式:

from skbio.stats.ordination import pcoa, cca

# 从距离矩阵进行 PCoA
pcoa_results = pcoa(distance_matrix)
pc1 = pcoa_results.samples['PC1']
pc2 = pcoa_results.samples['PC2']

# 带环境变量的 CCA
cca_results = cca(species_matrix, environmental_matrix)

# 保存/加载排序结果
pcoa_results.write('ordination.txt')
results = skbio.OrdinationResults.read('ordination.txt')

重要注意事项:

  • PCoA 适用于任何距离/相异矩阵
  • CCA 揭示群落组成的环境驱动因素
  • 排序结果包括特征值、解释比例和样本/特征坐标
  • 结果与绘图库集成(matplotlib、seaborn、plotly)

6. 统计测试

执行针对生态和生物数据的假设检验。

关键能力:

  • PERMANOVA:使用距离矩阵检验组间差异
  • ANOSIM:组间差异的替代检验
  • PERMDISP:检验组间离散度的同质性
  • Mantel 检验:距离矩阵之间的相关性
  • Bioenv:查找与环境变量相关的距离

常见模式:

from skbio.stats.distance import permanova, anosim, mantel

# 检验组间是否显著不同
permanova_results = permanova(distance_matrix, grouping, permutations=999)
print(f"p-value: {permanova_results['p-value']}")

# ANOSIM 检验
anosim_results = anosim(distance_matrix, grouping, permutations=999)

# 两个距离矩阵之间的 Mantel 检验
mantel_results = mantel(dm1, dm2, method='pearson', permutations=999)
print(f"Correlation: {mantel_results[0]}, p-value: {mantel_results[1]}")

重要注意事项:

  • 置换检验提供非参数显著性检验
  • 使用 999+ 置换以获得稳健的 p 值
  • PERMANOVA 对离散度差异敏感;与 PERMDISP 配对使用
  • Mantel 检验评估矩阵相关性(例如,地理与遗传距离)

7. 文件输入输出和格式转换

读写 19+ 种生物文件格式,带自动格式检测。

支持的格式:

  • 序列:FASTA、FASTQ、GenBank、EMBL、QSeq
  • 对齐:Clustal、PHYLIP、Stockholm
  • 树:Newick
  • 表:BIOM(HDF5 和 JSON)
  • 距离:分隔符分隔的方阵
  • 分析:BLAST+6/7、GFF3、排序结果
  • 元数据:带验证的 TSV/CSV

常见模式:

import skbio

# 带自动格式检测读取
seq = skbio.DNA.read('file.fasta', format='fasta')
tree = skbio.TreeNode.read('tree.nwk')

# 写入文件
seq.write('output.fasta', format='fasta')

# 用于大文件的生成器(内存高效)
for seq in skbio.io.read('large.fasta', format='fasta', constructor=skbio.DNA):
    process(seq)

# 转换格式
seqs = list(skbio.io.read('input.fastq', format='fastq', constructor=skbio.DNA))
skbio.io.write(seqs, format='fasta', into='output.fasta')

重要注意事项:

  • 使用生成器处理大文件以避免内存问题
  • 当指定 into 参数时,格式可以自动检测
  • 某些对象可以写入多种格式
  • 支持标准输入/输出管道,使用 verify=False

8. 距离矩阵

创建和操作距离/相异矩阵,带统计方法。

关键能力:

  • 存储对称(DistanceMatrix)或非对称(DissimilarityMatrix)数据
  • 基于 ID 的索引和切片
  • 与多样性、排序分析和统计测试集成
  • 读写分隔符分隔文本格式

常见模式:

from skbio import DistanceMatrix
import numpy as np

# 从数组创建
data = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0]])
dm = DistanceMatrix(data, ids=['A', 'B', 'C'])

# 访问距离
dist_ab = dm['A', 'B']
row_a = dm['A']

# 从文件读取
dm = DistanceMatrix.read('distances.txt')

# 在下游分析中使用
pcoa_results = pcoa(dm)
permanova_results = permanova(dm, grouping)

重要注意事项:

  • DistanceMatrix 强制执行对称性和零对角线
  • DissimilarityMatrix 允许非对称值
  • ID 启用与元数据和生物知识的集成
  • 与 pandas、numpy 和 scikit-learn 兼容

9. 生物表

处理微生物组研究中常见的特征表(OTU/ASV 表)。

关键能力:

  • BIOM 格式输入输出(HDF5 和 JSON)
  • 与 pandas、polars、AnnData、numpy 集成
  • 数据增强技术(phylomix、mixup、组合方法)
  • 样本/特征过滤和归一化
  • 元数据集成

常见模式:

from skbio import Table

# 读取 BIOM 表
table = Table.read('table.biom')

# 访问数据
sample_ids = table.ids(axis='sample')
feature_ids = table.ids(axis='observation')
counts = table.matrix_data

# 过滤
filtered = table.filter(sample_ids_to_keep, axis='sample')

# 转换到/从 pandas
df = table.to_dataframe()
table = Table.from_dataframe(df)

重要注意事项:

  • BIOM 表是 QIIME 2 工作流中的标准
  • 行通常表示样本,列表示特征(OTUs/ASVs)
  • 支持稀疏和密集表示
  • 输出格式可配置(pandas/polars/numpy)

10. 蛋白质嵌入

处理蛋白质语言模型嵌入用于下游分析。

关键能力:

  • 存储来自蛋白质语言模型的嵌入(ESM、ProtTrans 等)
  • 将嵌入转换为距离矩阵
  • 为可视化生成排序对象
  • 导出到 numpy/pandas 用于机器学习工作流

常见模式:

from skbio.embedding import ProteinEmbedding, ProteinVector

# 从数组创建嵌入
embedding = ProteinEmbedding(embedding_array, sequence_ids)

# 转换为距离矩阵用于分析
dm = embedding.to_distances(metric='euclidean')

# 嵌入空间的 PCoA 可视化
pcoa_results = embedding.to_ordination(metric='euclidean', method='pcoa')

# 导出用于机器学习
array = embedding.to_array()
df = embedding.to_dataframe()

重要注意事项:

  • 嵌入桥接蛋白质语言模型与传统生物信息学
  • 与 scikit-bio 的距离/排序/统计生态系统兼容
  • SequenceEmbedding 和 ProteinEmbedding 提供专门功能
  • 用于序列聚类、分类和可视化

最佳实践

安装

pip install scikit-bio
# 或使用 conda:
conda install -c conda-forge scikit-bio

性能考量

  • 对大型序列文件使用生成器以最小化内存使用
  • 对于大型系统发育树,优先选择 GME 或 BME 而非 NJ
  • Beta 多样性计算可以使用 partial_beta_diversity() 并行化
  • BIOM 格式(HDF5)比 JSON 更高效用于大型表

与生态系统集成

  • 序列通过标准格式与 Biopython 互操作
  • 表与 pandas、polars 和 AnnData 集成
  • 距离矩阵与 scikit-learn 兼容
  • 排序结果可可视化与 matplotlib/seaborn/plotly
  • 与 QIIME 2 工无缝协作(BIOM、树、距离矩阵)

常见工作流

  1. 微生物组多样性分析:读取 BIOM 表 → 计算 alpha/beta 多样性 → 排序(PCoA) → 统计测试(PERMANOVA)
  2. 系统发育分析:读取序列 → 对齐 → 构建距离矩阵 → 构建树 → 计算系统发育距离
  3. 序列处理:读取 FASTQ → 质量过滤 → 修剪/清理 → 查找模式 → 翻译 → 写入 FASTA
  4. 比较基因组学:读取序列 → 成对对齐 → 计算距离 → 构建树 → 分析支系

参考文档

有关详细 API 信息、参数规范和高级用法示例,请参阅 references/api_reference.md,其中包含:

  • 所有能力的完整方法签名和参数
  • 复杂工作流的扩展代码示例
  • 常见问题故障排除
  • 性能优化提示
  • 与其他库的集成模式

额外资源