技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
scikit-bio【数据与研究】A Python bioinformatics toolkit for sequence, phylogeny, and microbiome/community-ecology analysis; use it when you need to compute diversity/ordination/statistics from biological data and standard formats (FASTA/FASTQ/Newick/BIOM).
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
DNA, RNA, Protein, and generic Sequence with validation, slicing, motif search, reverse complement, transcription/translation, and metadata handling.TabularMSA) with consensus support.TreeNode manipulation, tree construction from distance matrices (e.g., Neighbor Joining), and tree distance/metrics.Series/DistanceMatrix.Table.scikit-bio>=0.6.0numpy>=1.23pandas>=1.5# pip install scikit-bio numpy pandas
import numpy as np
import pandas as pd
import skbio
from skbio import DNA, TreeNode
from skbio.diversity import alpha_diversity, beta_diversity
from skbio.stats.ordination import pcoa
from skbio.stats.distance import permanova
# ----------------------------
# 1) Sequence manipulation
# ----------------------------
seq = DNA("ACGTACGTNN--ACGT", metadata={"id": "seq1"})
seq_clean = seq.degap()
rc = seq_clean.reverse_complement()
motif_hits = seq_clean.find_with_regex("ACG[TA]")
print("Original:", str(seq))
print("Degapped:", str(seq_clean))
print("Reverse complement:", str(rc))
print("Motif hits:", list(motif_hits))
# ----------------------------
# 2) Microbiome-style counts
# ----------------------------
# rows = samples, cols = features/OTUs/ASVs
counts = np.array([
[10, 0, 3, 1],
[ 0, 8, 2, 0],
[ 5, 1, 0, 4],
], dtype=int)
sample_ids = ["S1", "S2", "S3"]
feature_ids = ["F1", "F2", "F3", "F4"]
# Alpha diversity (Shannon)
shannon = alpha_diversity("shannon", counts, ids=sample_ids)
print("\nAlpha diversity (Shannon):")
print(shannon)
# Beta diversity (Bray-Curtis) -> DistanceMatrix
dm = beta_diversity("braycurtis", counts, ids=sample_ids)
print("\nBeta diversity (Bray-Curtis) distance matrix:")
print(dm)
# ----------------------------
# 3) Ordination (PCoA)
# ----------------------------
ord_res = pcoa(dm)
print("\nPCoA sample coordinates (first 2 axes):")
print(ord_res.samples[["PC1", "PC2"]])
# ----------------------------
# 4) PERMANOVA on the distance matrix
# ----------------------------
grouping = pd.Series(["A", "A", "B"], index=sample_ids)
perma = permanova(dm, grouping=grouping, permutations=99)
print("\nPERMANOVA result:")
print(perma)
# ----------------------------
# 5) Tree I/O (Newick) + basic manipulation
# ----------------------------
newick = "((F1:0.1,F2:0.2):0.3,(F3:0.2,F4:0.4):0.1);"
tree = TreeNode.read([newick])
subtree = tree.shear(["F1", "F2", "F3"])
print("\nSheared tree (tips F1,F2,F3):")
print(subtree.ascii_art())
Sequence model
DNA/RNA/Protein for alphabet-aware validation and biological operations (e.g., reverse_complement, transcribe, translate).Sequence when you need a generic container without strict alphabet constraints.Diversity computations
alpha_diversity(metric, counts, ids=...) returns a per-sample vector (typically a pandas Series).beta_diversity(metric, counts, ids=...) returns a DistanceMatrix suitable for ordination and hypothesis tests.Distance matrices
DistanceMatrix enforces symmetry and a zero diagonal; IDs are used for consistent alignment with metadata and group labels.DistanceMatrix.Ordination
pcoa(dm) performs eigen-decomposition on a transformed distance matrix and returns OrdinationResults containing eigenvalues and sample coordinates.Permutation-based statistics
permanova(dm, grouping, permutations=N) estimates significance by permuting group labels; increase permutations (e.g., 999+) for more stable p-values in real analyses.