scikit-bio について
scikit-bio スキルは、生物情報学や微生物生態学向けの Python ライブラリを解説します。配列、系統樹、群集、統計の分析に加え、生物データ形式やタンパク質埋め込みも扱います。
主な機能
- 01DNA、RNA、タンパク質の配列操作
- 02配列アライメントと系統樹分析
- 03微生物多様性とオーディネーション
- 04生態学的な統計検定
- 05生物データ形式の読み込みと変換
- 06タンパク質埋め込みと距離分析
活用シーン
- 01FASTA、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 など)の読み書きが必要である
- 配列アライメントを実行する、またはモチーフを検索する
- 系統樹を構築または解析する
- 多様性指標(アルファ多様性・ベータ多様性、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()を使用してください - 分子時計を仮定する UPGMA には
upgma()を使用してください - GME と BME は大規模な系統樹に対して非常にスケーラブルです
- 系統樹は有根または無根にすることができ、指標によっては特定の根の設定が必要です
4. 多様性解析
微生物生態学および群集解析のために、アルファ多様性およびベータ多様性の指標を計算します。
主な機能:
- アルファ多様性: 種数(richness)、シャノンエントロピー、シンプソン指数、Faith's PD、Pielou の均等度
- ベータ多様性: Bray-Curtis、Jaccard、重み付き/重み付きでない UniFrac、ユークリッド距離
- 系統学的多様性指標(ツリー入力が必要)
- レアファクション(希薄化)とサブサンプリング
- 順序付け(ordination)および統計検定との統合
よくある使用パターン:
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]}")
重要な注意事項:
- 置換検定は、ノンパラメトリックな有意性検定を提供します
- 頑健な p 値を得るには、999 回以上の置換を使用してください
- 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. 生物学的テーブル
マイクロbiome研究で一般的な特徴テーブル(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へのエクスポート
よく使うパターン:
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
パフォーマンスに関する考慮事項
- 大規模な配列ファイルにはジェネレーターを使用し、メモリ使用量を抑えてください
- 大規模な系統樹には、NJよりもGMEまたはBMEを優先してください
- 多様性(ベータ多様性)の計算は
partial_beta_diversity()で並列化できます - 大規模なテーブルでは、JSONよりもBIOM形式(HDF5)の方が効率的です
エコシステムとの統合
- 配列は標準形式を介してBiopythonと相互運用できます
- テーブルはpandas、polars、AnnDataと統合できます
- 距離行列はscikit-learnと互換性があります
- 順序付けの結果はmatplotlib/seaborn/plotlyで可視化できます
- QIIME 2のアーティファクト(BIOM、系統樹、距離行列)とシームレスに動作します
一般的なワークフロー
- マイクロバイオーム多様性分析: BIOMテーブルの読み込み → アルファ/ベータ多様性の計算 → 順序付け(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エコシステムの一部です)