关于 scikit-bio
scikit-bio 技能面向生物信息学与微生物生态研究,介绍用于序列、系统发育、群落和统计分析的 Python 库。内容还涵盖多种生物数据格式及蛋白质嵌入分析。
主要功能
- 01DNA、RNA 与蛋白质序列操作
- 02序列比对与系统发育树分析
- 03微生物多样性与排序分析
- 04生态统计检验
- 05读取和转换生物数据格式
- 06蛋白质嵌入及距离分析
适用场景
- 01处理 FASTA、FASTQ 等序列文件
- 02分析微生物群落多样性
- 03构建或分析系统发育树
- 04对蛋白质嵌入进行降维分析
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ jackspace/ claudeskillz --skill scikit-bio安装后在 Claude Code 中输入/scikit-bio确认已加载。
附带文件SKILL.json
详细介绍
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
# Read sequences from file
seq = skbio.DNA.read('input.fasta')
# Sequence operations
rc = seq.reverse_complement()
rna = seq.transcribe()
protein = rna.translate()
# Find motifs
motif_positions = seq.find_with_regex('ATG[ACGT]{3}')
# Check for properties
has_degens = seq.has_degenerates()
seq_no_gaps = seq.degap()
重要说明:
- 对具有校验功能的序列使用
DNA、RNA、Protein类 - 对没有字母表限制的通用序列使用
Sequence类 - FASTQ 文件中的质量分数会自动加载到位置元数据中
- 元数据类型:序列级(ID、描述)、位置级(每个碱基)和区间级(区域/特征)
2. 序列比对
使用动态规划算法执行成对和多序列比对。
主要功能:
- 全局比对(Needleman-Wunsch,含半全局变体)
- 局部比对(Smith-Waterman)
- 可配置的评分方案(匹配/不匹配、空位罚分、替换矩阵)
- CIGAR 字符串转换
- 使用
TabularMSA存储和操作多序列比对
常见模式:
from skbio.alignment import local_pairwise_align_ssw, TabularMSA
# Pairwise alignment
alignment = local_pairwise_align_ssw(seq1, seq2)
# Access aligned sequences
msa = alignment.aligned_sequences
# Read multiple alignment from file
msa = TabularMSA.read('alignment.fasta', constructor=skbio.DNA)
# Calculate consensus
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
# Read tree from file
tree = TreeNode.read('tree.nwk')
# Construct tree from distance matrix
tree = nj(distance_matrix)
# Tree operations
subtree = tree.shear(['taxon1', 'taxon2', 'taxon3'])
tips = [node for node in tree.tips()]
lca = tree.lowest_common_ancestor(['taxon1', 'taxon2'])
# Calculate distances
patristic_dist = tree.find('taxon1').distance(tree.find('taxon2'))
cophenetic_matrix = tree.cophenetic_matrix()
# Compare trees
rf_distance = tree.robinson_foulds(other_tree)
重要说明:
- 使用
nj()执行 Neighbor Joining(经典系统发育方法) - 使用
upgma()执行 UPGMA(假设存在分子钟) - GME 和 BME 可高度扩展,适用于大型树
- 树可以有根或无根;部分指标要求特定的定根方式
4. 多样性分析
计算微生物生态学和群落分析中的 α 多样性和 β 多样性指标。
主要功能:
- α 多样性:丰富度、Shannon 熵、Simpson 指数、Faith's PD、Pielou 均匀度
- β 多样性:Bray-Curtis、Jaccard、加权/非加权 UniFrac、欧氏距离
- 系统发育多样性指标(需要输入树)
- 稀释和子采样
- 与排序分析和统计检验集成
常见模式:
from skbio.diversity import alpha_diversity, beta_diversity
import skbio
# Alpha diversity
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 diversity
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)
# Get available metrics
from skbio.diversity import get_alpha_diversity_metrics
print(get_alpha_diversity_metrics())
重要说明:
- 计数必须为表示丰度的整数,而非相对频率
- 系统发育指标(Faith's PD、UniFrac)需要树和 OTU ID 映射
- 仅计算指定样本对时,请使用
partial_beta_diversity() - α 多样性返回 Series,β 多样性返回 DistanceMatrix
5. 排序分析方法
将高维生物数据降至可视化的低维空间。
主要功能:
- 基于距离矩阵的 PCoA(主坐标分析)
- 用于列联表的 CA(对应分析)
- 带环境约束的 CCA(典范对应分析)
- 用于线性关系的 RDA(冗余分析)
- 用于特征解读的双标图投影
常见模式:
from skbio.stats.ordination import pcoa, cca
# PCoA from distance matrix
pcoa_results = pcoa(distance_matrix)
pc1 = pcoa_results.samples['PC1']
pc2 = pcoa_results.samples['PC2']
# CCA with environmental variables
cca_results = cca(species_matrix, environmental_matrix)
# Save/load ordination results
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
# Test if groups differ significantly
permanova_results = permanova(distance_matrix, grouping, permutations=999)
print(f"p-value: {permanova_results['p-value']}")
# ANOSIM test
anosim_results = anosim(distance_matrix, grouping, permutations=999)
# Mantel test between two distance matrices
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
# Read with automatic format detection
seq = skbio.DNA.read('file.fasta', format='fasta')
tree = skbio.TreeNode.read('tree.nwk')
# Write to file
seq.write('output.fasta', format='fasta')
# Generator for large files (memory efficient)
for seq in skbio.io.read('large.fasta', format='fasta', constructor=skbio.DNA):
process(seq)
# Convert formats
seqs = list(skbio.io.read('input.fastq', format='fastq', constructor=skbio.DNA))
skbio.io.write(seqs, format='fasta', into='output.fasta')
重要说明:
- 对于大型文件,请使用生成器以避免内存问题
- 指定
into参数时可自动检测格式 - 某些对象可写入多种格式
- 支持使用
verify=False通过 stdin/stdout 进行管道传输
8. 距离矩阵
使用统计方法创建和操作距离/相异度矩阵。
主要功能:
- 存储对称数据(DistanceMatrix)或非对称数据(DissimilarityMatrix)
- 基于 ID 的索引和切片
- 与多样性分析、排序分析和统计检验集成
- 读写带分隔符的文本格式
常见模式:
from skbio import DistanceMatrix
import numpy as np
# Create from array
data = np.array([[0, 1, 2], [1, 0, 3], [2, 3, 0]])
dm = DistanceMatrix(data, ids=['A', 'B', 'C'])
# Access distances
dist_ab = dm['A', 'B']
row_a = dm['A']
# Read from file
dm = DistanceMatrix.read('distances.txt')
# Use in downstream analyses
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
# Read BIOM table
table = Table.read('table.biom')
# Access data
sample_ids = table.ids(axis='sample')
feature_ids = table.ids(axis='observation')
counts = table.matrix_data
# Filter
filtered = table.filter(sample_ids_to_keep, axis='sample')
# Convert to/from pandas
df = table.to_dataframe()
table = Table.from_dataframe(df)
重要说明:
- BIOM 表是 QIIME 2 工作流中的标准格式
- 行通常表示样本,列表示特征(OTU/ASV)
- 支持稀疏和稠密表示
- 可配置输出格式(pandas/polars/numpy)
10. 蛋白质嵌入
处理用于下游分析的蛋白质语言模型嵌入。
主要功能:
- 存储蛋白质语言模型(ESM、ProtTrans 等)的嵌入
- 将嵌入转换为距离矩阵
- 生成用于可视化的排序对象
- 导出为 numpy/pandas,以用于 ML 工作流
常见模式:
from skbio.embedding import ProteinEmbedding, ProteinVector
# Create embedding from array
embedding = ProteinEmbedding(embedding_array, sequence_ids)
# Convert to distance matrix for analysis
dm = embedding.to_distances(metric='euclidean')
# PCoA visualization of embedding space
pcoa_results = embedding.to_ordination(metric='euclidean', method='pcoa')
# Export for machine learning
array = embedding.to_array()
df = embedding.to_dataframe()
重要说明:
- 嵌入可连接蛋白质语言模型与传统生物信息学
- 兼容 scikit-bio 的距离/排序/统计生态系统
- SequenceEmbedding 和 ProteinEmbedding 提供专用功能
- 适用于序列聚类、分类和可视化
最佳实践
安装
pip install scikit-bio
# Or with conda:
conda install -c conda-forge scikit-bio
性能注意事项
- 处理大型序列文件时使用生成器,以尽量减少内存使用
- 对于超大型系统发育树,优先选择 GME 或 BME,而不是 NJ
- 可使用
partial_beta_diversity()并行计算 Beta 多样性 - 对于大型表格,BIOM 格式(HDF5)比 JSON 更高效
与生态系统集成
- 序列可通过标准格式与 Biopython 互操作
- 表格可与 pandas、polars 和 AnnData 集成
- 距离矩阵兼容 scikit-learn
- 排序结果可通过 matplotlib/seaborn/plotly 可视化
- 可与 QIIME 2 成品(BIOM、树、距离矩阵)无缝协作
常见工作流
- 微生物组多样性分析:读取 BIOM 表 → 计算 Alpha/Beta 多样性 → 排序(PCoA)→ 统计检验(PERMANOVA)
- 系统发育分析:读取序列 → 比对 → 构建距离矩阵 → 构建树 → 计算系统发育距离
- 序列处理:读取 FASTQ → 质量筛选 → 修剪/清理 → 查找基序 → 翻译 → 写入 FASTA
- 比较基因组学:读取序列 → 两两比对 → 计算距离 → 构建树 → 分析分支
参考文档
有关详细的 API 信息、参数说明和高级用法示例,请参阅 references/api_reference.md,其中包含以下内容的完整文档:
- 所有功能的完整方法签名和参数
- 复杂工作流的扩展代码示例
- 常见问题的故障排除方法
- 性能优化技巧
- 与其他库的集成模式
其他资源
- 官方文档:https://scikit.bio/docs/latest/
- GitHub 仓库:https://github.com/scikit-bio/scikit-bio
- 论坛支持:https://forum.qiime2.org(scikit-bio 是 QIIME 2 生态系统的一部分)
评论
支持 Markdown