SuperAPI AI 工具集

scikit-bio

数据与分析

查看项目

更新于 10-15 09:10

技能介绍

用途

scikit-bio 是一个用于处理生物数据的综合 Python 库,面向生物信息学分析,覆盖序列操作、比对、系统发育、微生物生态学与多元统计等方向。当用户需要处理生物序列(DNA、RNA、蛋白质)、读写生物文件格式、进行序列比对或基序搜索、构建或分析系统发育树、计算多样性指标、执行排序分析、对生物或生态数据做统计检验、分析微生物组或群落生态数据、处理蛋白质语言模型嵌入,或操作生物数据表时,均可使用该库。

主要能力

1. 序列操作

使用 DNA、RNA、Protein 等专用类处理生物序列,支持从 FASTA、FASTQ、GenBank、EMBL 格式读写序列,进行切片、拼接、搜索、反向互补、转录(DNA→RNA)、翻译(RNA→蛋白质)、正则查找基序、计算距离(Hamming、k-mer)以及处理质量分数和元数据。DNA、RNA、Protein 类提供字母表校验,Sequence 类用于无字母表限制的通用序列。FASTQ 文件的质量分数会自动加载到位置元数据中。

2. 序列比对

支持全局比对(Needleman-Wunsch 及半全局变体)和局部比对(Smith-Waterman),可配置打分方案(匹配/错配、空位罚分、替换矩阵),支持 CIGAR 字符串转换,并通过 TabularMSA 存储和操作多序列比对。局部比对可使用 local_pairwise_align_ssw,蛋白质比对可使用 StripedSmithWaterman。

3. 系统发育树

支持从距离矩阵构建树(UPGMA、WPGMA、邻接法、GME、BME),进行树操作(修剪、重定根、遍历)、距离计算(patristic、cophenetic、Robinson-Foulds)、ASCII 可视化以及 Newick 格式读写。大规模树可优先使用 GME 或 BME。

4. 多样性分析

计算 alpha 多样性(丰富度、Shannon 熵、Simpson 指数、Faith's PD、Pielou 均匀度)和 beta 多样性(Bray-Curtis、Jaccard、加权/非加权 UniFrac、欧氏距离),支持系统发育多样性指标、稀释与子采样,并与排序和统计检验集成。计数必须为整数丰度,系统发育指标需要树和 OTU ID 映射。

5. 排序方法

支持 PCoA(主坐标分析)、CA(对应分析)、CCA(典范对应分析)、RDA(冗余分析)以及用于特征解释的 biplot 投影。PCoA 适用于任意距离/相异矩阵,排序结果可与 matplotlib、seaborn、plotly 等绘图库集成。

6. 统计检验

提供 PERMANOVA、ANOSIM、PERMDISP、Mantel 检验、Bioenv 等生态与生物数据专用假设检验。置换检验提供非参数显著性检验,建议使用 999 次以上置换以获得稳健 p 值。

7. 文件 I/O 与格式转换

支持 19 种以上生物文件格式的读写与自动格式检测,包括序列(FASTA、FASTQ、GenBank、EMBL、QSeq)、比对(Clustal、PHYLIP、Stockholm)、树(Newick)、表(BIOM 的 HDF5 与 JSON)、距离(分隔方阵)、分析(BLAST+6/7、GFF3、排序结果)以及元数据(TSV/CSV)。大文件可使用生成器以节省内存。

8. 距离矩阵

支持存储对称(DistanceMatrix)或非对称(DissimilarityMatrix)数据,基于 ID 的索引与切片,与多样性、排序和统计检验集成,支持分隔文本格式读写。DistanceMatrix 强制对称且对角线为零。

9. 生物表

支持微生物组研究中常见的特征表(OTU/ASV 表),提供 BIOM 格式 I/O(HDF5 与 JSON),与 pandas、polars、AnnData、numpy 集成,支持数据增强技术(phylomix、mixup、组合方法)、样本/特征过滤与归一化以及元数据集成。

10. 蛋白质嵌入

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

使用方式

安装命令:

uv pip install scikit-bio

常见工作流包括:

  • 微生物组多样性分析:读取 BIOM 表 → 计算 alpha/beta 多样性 → 排序(PCoA)→ 统计检验(PERMANOVA)
  • 系统发育分析:读取序列 → 比对 → 构建距离矩阵 → 构建树 → 计算系统发育距离
  • 序列处理:读取 FASTQ → 质量过滤 → 修剪/清洗 → 查找基序 → 翻译 → 写出 FASTA
  • 比较基因组学:读取序列 → 成对比对 → 计算距离 → 构建树 → 分析分支

代码示例(序列操作):

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}')

代码示例(多样性分析):

from skbio.diversity import alpha_diversity, beta_diversity

alpha = alpha_diversity('shannon', counts_matrix, ids=sample_ids)
bc_dm = beta_diversity('braycurtis', counts_matrix, ids=sample_ids)

代码示例(统计检验):

from skbio.stats.distance import permanova

permanova_results = permanova(distance_matrix, grouping, permutations=999)

适用场景

适用于生物信息学与微生物生态学研究,包括微生物组多样性分析、系统发育分析、序列处理与清洗、比较基因组学、群落生态统计检验,以及蛋白质语言模型嵌入的下游分析(如序列聚类、分类和可视化)。该库与 Biopython、pandas、polars、AnnData、scikit-learn 及 QIIME 2 生态集成,可与 QIIME 2 的 BIOM、树和距离矩阵等产物无缝配合。

限制

资料未提供关于收费、价格、平台支持范围或具体性能基准的说明。部分指标有前置要求:系统发育指标(Faith's PD、UniFrac)需要树和 OTU ID 映射;多样性计算的计数必须为整数丰度而非相对频率;某些树指标对是否定根有要求。大文件处理建议使用生成器,大规模系统发育树建议优先使用 GME 或 BME,大表建议使用 BIOM(HDF5)而非 JSON。