biopython
分子生物学のための主要なPythonツールキット。PubMed/NCBIクエリ(Bio.Entrez)、配列操作、ファイル解析(FASTA、GenBank、FASTQ、PDB)、高度なBLASTワークフロー、構造解析、系統解析をPythonベースで行う際に優先して使用します。簡易的なBLASTには gget を、REST APIへの直接アクセスには pubmed-database を使用してください。
description の原文を見る
Primary Python toolkit for molecular biology. Preferred for Python-based PubMed/NCBI queries (Bio.Entrez), sequence manipulation, file parsing (FASTA, GenBank, FASTQ, PDB), advanced BLAST workflows, structures, phylogenetics. For quick BLAST, use gget. For direct REST API, use pubmed-database.
SKILL.md 本文
Biopython: Python による計算分子生物学
概要
Biopython は、生物学的計算のために自由に利用できる包括的な Python ツールセットです。配列操作、ファイル I/O、データベースアクセス、構造生物学情報学、系統学、その他多くの生物学情報学タスクの機能を提供します。最新バージョンは Biopython 1.85 (2025年1月リリース) で、Python 3 をサポートし NumPy が必要です。
このスキルを使用する場合
以下の場合にこのスキルを使用してください:
- 生物学的配列 (DNA、RNA、またはタンパク質) を操作する場合
- 生物学的ファイル形式 (FASTA、GenBank、FASTQ、PDB、mmCIF など) を読み込み、書き込み、または変換する場合
- Entrez 経由で NCBI データベース (GenBank、PubMed、Protein、Gene など) にアクセスする場合
- BLAST 検索を実行したり BLAST 結果を解析したりする場合
- 配列アラインメント (ペアワイズまたは多重配列アラインメント) を実行する場合
- PDB ファイルからタンパク質構造を解析する場合
- 系統樹を作成、操作、または視覚化する場合
- 配列モチーフを検出したりモチーフパターンを解析したりする場合
- 配列統計 (GC 含量、分子量、融解温度など) を計算する場合
- 構造生物学情報学タスクを実行する場合
- 集団遺伝学データを操作する場合
- その他の計算分子生物学タスク
コア機能
Biopython は特定の生物学情報学分野に対応したモジュラーなサブパッケージで構成されています:
- 配列処理 - Bio.Seq と Bio.SeqIO で配列操作とファイル I/O を実行
- アラインメント解析 - Bio.Align と Bio.AlignIO でペアワイズ多重配列アラインメントを実行
- データベースアクセス - Bio.Entrez で NCBI データベースへのプログラマティックアクセスを実行
- BLAST 操作 - Bio.Blast で BLAST 検索を実行し結果を解析
- 構造生物学情報学 - Bio.PDB で 3D タンパク質構造を操作
- 系統学 - Bio.Phylo で系統樹の操作と視覚化を実行
- 高度な機能 - モチーフ、集団遺伝学、配列ユーティリティなど
インストールとセットアップ
pip を使用して Biopython をインストールします (Python 3 と NumPy が必要):
uv pip install biopython
NCBI データベースにアクセスするには、常にメールアドレスを設定してください (NCBI で必須):
from Bio import Entrez
Entrez.email = "your.email@example.com"
# オプション: API キー (リクエスト数制限を 3 req/s から 10 req/s に向上)
Entrez.api_key = "your_api_key_here"
このスキルの使用方法
このスキルは機能領域ごとに整理された包括的なドキュメントを提供します。タスクに取り組む際は、関連する参考ドキュメントを参照してください:
1. 配列処理 (Bio.Seq & Bio.SeqIO)
参考: references/sequence_io.md
使用対象:
- 生物学的配列を作成および操作
- 配列ファイル (FASTA、GenBank、FASTQ など) を読み込みと書き込み
- ファイル形式間の変換
- 大きなファイルから配列を抽出
- 配列の翻訳、転写、逆相補
- SeqRecord オブジェクトの操作
クイック例:
from Bio import SeqIO
# FASTA ファイルから配列を読み込み
for record in SeqIO.parse("sequences.fasta", "fasta"):
print(f"{record.id}: {len(record.seq)} bp")
# GenBank を FASTA に変換
SeqIO.convert("input.gb", "genbank", "output.fasta", "fasta")
2. アラインメント解析 (Bio.Align & Bio.AlignIO)
参考: references/alignment.md
使用対象:
- ペアワイズ配列アラインメント (グローバルおよびローカル)
- 多重配列アラインメントの読み込みと書き込み
- 置換マトリックス (BLOSUM、PAM) の使用
- アラインメント統計の計算
- アラインメントパラメータのカスタマイズ
クイック例:
from Bio import Align
# ペアワイズアラインメント
aligner = Align.PairwiseAligner()
aligner.mode = 'global'
alignments = aligner.align("ACCGGT", "ACGGT")
print(alignments[0])
3. データベースアクセス (Bio.Entrez)
参考: references/databases.md
使用対象:
- NCBI データベース (PubMed、GenBank、Protein、Gene など) を検索
- 配列とレコードをダウンロード
- 出版情報を取得
- データベース間で関連レコードを検出
- 適切なレート制限でバッチダウンロード
クイック例:
from Bio import Entrez
Entrez.email = "your.email@example.com"
# PubMed を検索
handle = Entrez.esearch(db="pubmed", term="biopython", retmax=10)
results = Entrez.read(handle)
handle.close()
print(f"Found {results['Count']} results")
4. BLAST 操作 (Bio.Blast)
参考: references/blast.md
使用対象:
- NCBI ウェブサービス経由で BLAST 検索を実行
- ローカル BLAST 検索を実行
- BLAST XML 出力を解析
- E 値または相同性でフィルター
- ヒット配列を抽出
クイック例:
from Bio.Blast import NCBIWWW, NCBIXML
# BLAST 検索を実行
result_handle = NCBIWWW.qblast("blastn", "nt", "ATCGATCGATCG")
blast_record = NCBIXML.read(result_handle)
# トップヒットを表示
for alignment in blast_record.alignments[:5]:
print(f"{alignment.title}: E-value={alignment.hsps[0].expect}")
5. 構造生物学情報学 (Bio.PDB)
参考: references/structure.md
使用対象:
- PDB および mmCIF 構造ファイルを解析
- タンパク質構造階層を移動 (SMCRA: Structure/Model/Chain/Residue/Atom)
- 距離、角度、二面角を計算
- 二次構造割り当て (DSSP)
- 構造の重ね合わせと RMSD 計算
- 構造から配列を抽出
クイック例:
from Bio.PDB import PDBParser
# 構造を解析
parser = PDBParser(QUIET=True)
structure = parser.get_structure("1crn", "1crn.pdb")
# アルファカーボン間の距離を計算
chain = structure[0]["A"]
distance = chain[10]["CA"] - chain[20]["CA"]
print(f"Distance: {distance:.2f} Å")
6. 系統学 (Bio.Phylo)
参考: references/phylogenetics.md
使用対象:
- 系統樹を読み込みと書き込み (Newick、NEXUS、phyloXML)
- 距離マトリックスまたはアラインメントから樹を構築
- 樹操作 (剪定、付け根変更、はしご配置)
- 系統学的距離を計算
- コンセンサス樹を作成
- 樹を視覚化
クイック例:
from Bio import Phylo
# 樹を読み込みと視覚化
tree = Phylo.read("tree.nwk", "newick")
Phylo.draw_ascii(tree)
# 距離を計算
distance = tree.distance("Species_A", "Species_B")
print(f"Distance: {distance:.3f}")
7. 高度な機能
参考: references/advanced.md
使用対象:
- 配列モチーフ (Bio.motifs) - モチーフパターンを検出および解析
- 集団遺伝学 (Bio.PopGen) - GenePop ファイル、Fst 計算、Hardy-Weinberg 検定
- 配列ユーティリティ (Bio.SeqUtils) - GC 含量、融解温度、分子量、タンパク質解析
- 制限酵素解析 (Bio.Restriction) - 制限酵素サイトを検出
- クラスタリング (Bio.Cluster) - K 平均法と階層的クラスタリング
- ゲノム図 (GenomeDiagram) - ゲノミック機能を視覚化
クイック例:
from Bio.SeqUtils import gc_fraction, molecular_weight
from Bio.Seq import Seq
seq = Seq("ATCGATCGATCG")
print(f"GC content: {gc_fraction(seq):.2%}")
print(f"Molecular weight: {molecular_weight(seq, seq_type='DNA'):.2f} g/mol")
一般的なワークフローガイドライン
ドキュメントの読み方
ユーザーが特定の Biopython タスクについて尋ねた場合:
- タスク説明に基づいて関連モジュールを特定
references/ディレクトリの適切な参考ファイルを読む- 関連するコードパターンを抽出 し、ユーザーの特定のニーズに適応させる
- 複雑なワークフローに対して複数のモジュールを組み合わせる
参考ファイルの検索パターンの例:
# 特定の関数に関する情報を検索
grep -n "SeqIO.parse" references/sequence_io.md
# 特定のタスクの例を検索
grep -n "BLAST" references/blast.md
# 特定の概念に関する情報を検索
grep -n "alignment" references/alignment.md
Biopython コードの作成
Biopython コードを作成する際は、これらの原則に従ってください:
-
モジュールを明示的にインポート
from Bio import SeqIO, Entrez from Bio.Seq import Seq -
NCBI データベースを使用する場合、Entrez メールを設定
Entrez.email = "your.email@example.com" -
適切なファイル形式を使用 - タスクに最適な形式を確認
# 一般的な形式: "fasta"、"genbank"、"fastq"、"clustal"、"phylip" -
ファイルを適切に処理 - 使用後にハンドルを閉じるか、コンテキストマネージャーを使用
with open("file.fasta") as handle: records = SeqIO.parse(handle, "fasta") -
大きなファイルにはイテレータを使用 - すべてをメモリに読み込まない
for record in SeqIO.parse("large_file.fasta", "fasta"): # 1 つのレコードを一度に処理 -
エラーを適切に処理 - ネットワーク操作とファイル解析は失敗する可能性がある
try: handle = Entrez.efetch(db="nucleotide", id=accession) except HTTPError as e: print(f"Error: {e}")
一般的なパターン
パターン 1: GenBank から配列を取得
from Bio import Entrez, SeqIO
Entrez.email = "your.email@example.com"
# 配列を取得
handle = Entrez.efetch(db="nucleotide", id="EU490707", rettype="gb", retmode="text")
record = SeqIO.read(handle, "genbank")
handle.close()
print(f"Description: {record.description}")
print(f"Sequence length: {len(record.seq)}")
パターン 2: 配列解析パイプライン
from Bio import SeqIO
from Bio.SeqUtils import gc_fraction
for record in SeqIO.parse("sequences.fasta", "fasta"):
# 統計を計算
gc = gc_fraction(record.seq)
length = len(record.seq)
# ORF を検出、翻訳など
protein = record.seq.translate()
print(f"{record.id}: {length} bp, GC={gc:.2%}")
パターン 3: BLAST を実行してトップヒットを取得
from Bio.Blast import NCBIWWW, NCBIXML
from Bio import Entrez, SeqIO
Entrez.email = "your.email@example.com"
# BLAST を実行
result_handle = NCBIWWW.qblast("blastn", "nt", sequence)
blast_record = NCBIXML.read(result_handle)
# トップヒットのアクセッション番号を取得
accessions = [aln.accession for aln in blast_record.alignments[:5]]
# 配列を取得
for acc in accessions:
handle = Entrez.efetch(db="nucleotide", id=acc, rettype="fasta", retmode="text")
record = SeqIO.read(handle, "fasta")
handle.close()
print(f">{record.description}")
パターン 4: 配列から系統樹を構築
from Bio import AlignIO, Phylo
from Bio.Phylo.TreeConstruction import DistanceCalculator, DistanceTreeConstructor
# アラインメントを読み込み
alignment = AlignIO.read("alignment.fasta", "fasta")
# 距離を計算
calculator = DistanceCalculator("identity")
dm = calculator.get_distance(alignment)
# 樹を構築
constructor = DistanceTreeConstructor()
tree = constructor.nj(dm)
# 視覚化
Phylo.draw_ascii(tree)
ベストプラクティス
- コードを作成する前に関連する参考ドキュメントを必ず読む
- grep を使用して参考ファイルを検索 して特定の関数またはサンプルを検出
- ファイル形式を検証 してから解析
- 見落としたデータを適切に処理 - すべてのレコードがすべてのフィールドを持っているわけではありません
- ダウンロードしたデータをキャッシュ - 同じ配列を繰り返しダウンロードしない
- NCBI レート制限を尊重 - API キーを使用し、適切な遅延を適用
- 大きなファイルを処理する前に小さなデータセットでテスト
- Biopython を最新に保つ - 最新の機能とバグ修正を取得
- 翻訳に適切な遺伝暗号テーブルを使用
- 再現性のために分析パラメータを文書化
一般的な問題のトラブルシューティング
問題: "No handlers could be found for logger 'Bio.Entrez'"
解決策: これは単なる警告です。Entrez.email を設定して抑制します。
問題: NCBI から "HTTP Error 400"
解決策: ID/アクセッション番号が有効で適切にフォーマットされていることを確認します。
問題: ファイルを解析する際に "ValueError: EOF"
解決策: ファイル形式が指定された形式文字列と一致することを確認します。
問題: アラインメントが "sequences are not the same length" で失敗
解決策: AlignIO または MultipleSeqAlignment を使用する前に、配列がアラインされていることを確認します。
問題: BLAST 検索が遅い
解決策: 大規模検索にはローカル BLAST を使用するか、結果をキャッシュします。
問題: PDB パーサーの警告
解決策: PDBParser(QUIET=True) を使用して警告を抑制するか、構造の品質を調査します。
追加リソース
- 公式ドキュメント: https://biopython.org/docs/latest/
- チュートリアル: https://biopython.org/docs/latest/Tutorial/
- クックブック: https://biopython.org/docs/latest/Tutorial/ (高度な例)
- GitHub: https://github.com/biopython/biopython
- メーリングリスト: biopython@biopython.org
クイックリファレンス
参考ファイルの情報を見つけるには、これらの検索パターンを使用します:
# 特定の関数を検索
grep -n "function_name" references/*.md
# 特定のタスクの例を検索
grep -n "example" references/sequence_io.md
# モジュールのすべての出現を検索
grep -n "Bio.Seq" references/*.md
まとめ
Biopython は計算分子生物学のための包括的なツールを提供します。このスキルを使用する場合:
- タスク領域を特定 (配列、アラインメント、データベース、BLAST、構造、系統学、または高度な機能)
references/ディレクトリの適切な参考ファイルを参照- コード例を特定のユースケースに適応させる
- 複雑なワークフローに必要な場合は複数のモジュールを組み合わせる
- ファイル処理、エラーチェック、データ管理のベストプラクティスに従う
モジュラー参考ドキュメントにより、すべての主要な Biopython 機能について詳細で検索可能な情報が提供されます。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- davila7
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。