mcpField
S
scikit-bio

scikit-bio

github.com/jackspace数据与数据库1636 次安装12 周前更新
代码仓库

关于 scikit-bio

scikit-bio 技能面向生物信息学与微生物生态研究,介绍用于序列、系统发育、群落和统计分析的 Python 库。内容还涵盖多种生物数据格式及蛋白质嵌入分析。

主要功能

  1. 01DNA、RNA 与蛋白质序列操作
  2. 02序列比对与系统发育树分析
  3. 03微生物多样性与排序分析
  4. 04生态统计检验
  5. 05读取和转换生物数据格式
  6. 06蛋白质嵌入及距离分析

适用场景

  1. 01处理 FASTA、FASTQ 等序列文件
  2. 02分析微生物群落多样性
  3. 03构建或分析系统发育树
  4. 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、树、距离矩阵)无缝协作
常见工作流
  1. 微生物组多样性分析:读取 BIOM 表 → 计算 Alpha/Beta 多样性 → 排序(PCoA)→ 统计检验(PERMANOVA)
  2. 系统发育分析:读取序列 → 比对 → 构建距离矩阵 → 构建树 → 计算系统发育距离
  3. 序列处理:读取 FASTQ → 质量筛选 → 修剪/清理 → 查找基序 → 翻译 → 写入 FASTA
  4. 比较基因组学:读取序列 → 两两比对 → 计算距离 → 构建树 → 分析分支

参考文档

有关详细的 API 信息、参数说明和高级用法示例,请参阅 references/api_reference.md,其中包含以下内容的完整文档:

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

其他资源

评论

支持 Markdown