bioservices について
bioservices は、生物情報学研究者向けに、生物データベースやウェブサービスへのプログラムアクセスを提供する Python パッケージです。REST と SOAP/WSDL に対応し、データ取得や ID 対応付け、解析を Python のワークフローにまとめられます。
主な機能
- 01約40種の生物サービスへのアクセス
- 02タンパク質と経路の検索
- 03化合物のデータベース横断検索
- 04配列類似性検索とアラインメント
- 05データベース ID の変換
- 06遺伝子オントロジーと相互作用の検索
活用シーン
- 01タンパク質配列と注釈の取得
- 02KEGG 経路に含まれる遺伝子の検索
- 03データベース間での化合物 ID の対応付け
- 04BLAST 検索と相互作用データの照会
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ crazymsn/ academic-skills --skill bioservicesインストール後、Claude Code で/bioservicesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/identifier_mapping.mdservices_reference.mdworkflow_patterns.mdscripts/batch_id_converter.pycompound_cross_reference.pypathway_analysis.pyprotein_analysis_workflow.py詳細
BioServices
概要
BioServices は、約 40 種類のバイオインフォマティクス Web サービスおよびデータベースへプログラムからアクセスするための Python パッケージです。生物学的データの取得、データベース横断クエリ、識別子のマッピング、配列解析、複数の生物学リソースの統合を Python ワークフロー内で行えます。このパッケージは REST と SOAP/WSDL の両方のプロトコルを透過的に扱います。
このスキルを使用するタイミング
このスキルは次のような場合に使用してください:
- UniProt、PDB、Pfam からタンパク質の配列、アノテーション、構造を取得する場合
- KEGG や Reactome を通じて代謝経路や遺伝子機能を解析する場合
- 化学情報のために化合物データベース(ChEBI、ChEMBL、PubChem)を検索する場合
- 異なる生物学データベース間で識別子を変換する場合(KEGG↔UniProt、化合物 ID)
- 配列類似性検索(BLAST、MUSCLE アライメント)を実行する場合
- 遺伝子オントロジー用語を照会する場合(QuickGO、GO アノテーション)
- タンパク質間相互作用データにアクセスする場合(PSICQUIC、IntactComplex)
- ゲノムデータをマイニングする場合(BioMart、ArrayExpress、ENA)
- 単一のワークフロー内で複数のバイオインフォマティクスリソースのデータを統合する場合
主要機能
1. タンパク質解析
タンパク質の情報、配列、機能アノテーションを取得します:
from bioservices import UniProt
u = UniProt(verbose=False)
# Search for protein by name
results = u.search("ZAP70_HUMAN", frmt="tab", columns="id,genes,organism")
# Retrieve FASTA sequence
sequence = u.retrieve("P43403", "fasta")
# Map identifiers between databases
kegg_ids = u.mapping(fr="UniProtKB_AC-ID", to="KEGG", query="P43403")
主なメソッド:
search(): 柔軟な検索語で UniProt を照会retrieve(): さまざまな形式(FASTA、XML、タブ区切り)でタンパク質エントリを取得mapping(): データベース間で識別子を変換
参照: UniProt API の詳細は references/services_reference.md を参照してください。
2. 経路の探索と解析
遺伝子および生物種に関する KEGG 経路情報にアクセスします:
from bioservices import KEGG
k = KEGG()
k.organism = "hsa" # Set to human
# Search for organisms
k.lookfor_organism("droso") # Find Drosophila species
# Find pathways by name
k.lookfor_pathway("B cell") # Returns matching pathway IDs
# Get pathways containing specific genes
pathways = k.get_pathway_by_gene("7535", "hsa") # ZAP70 gene
# Retrieve and parse pathway data
data = k.get("hsa04660")
parsed = k.parse(data)
# Extract pathway interactions
interactions = k.parse_kgml_pathway("hsa04660")
relations = interactions['relations'] # Protein-protein interactions
# Convert to Simple Interaction Format
sif_data = k.pathway2sif("hsa04660")
主なメソッド:
lookfor_organism()、lookfor_pathway(): 名前で検索get_pathway_by_gene(): 遺伝子を含む経路を検索parse_kgml_pathway(): 構造化された経路データを抽出pathway2sif(): タンパク質相互作用ネットワークを取得
参照: 経路解析ワークフローの全体は references/workflow_patterns.md を参照してください。
3. 化合物データベース検索
複数のデータベースにまたがって化合物を検索し、相互参照します:
from bioservices import KEGG, UniChem
k = KEGG()
# Search compounds by name
results = k.find("compound", "Geldanamycin") # Returns cpd:C11222
# Get compound information with database links
compound_info = k.get("cpd:C11222") # Includes ChEBI links
# Cross-reference KEGG → ChEMBL using UniChem
u = UniChem()
chembl_id = u.get_compound_id_from_kegg("C11222") # Returns CHEMBL278315
一般的なワークフロー:
- KEGG で名前により化合物を検索
- KEGG 化合物 ID を抽出
- KEGG → ChEMBL のマッピングに UniChem を使用
- ChEBI ID は KEGG のエントリに記載されていることが多い
参照: データベース横断マッピングの完全なガイドは references/identifier_mapping.md を参照してください。
4. 配列解析
BLAST 検索と配列アライメントを実行します:
from bioservices import NCBIblast
s = NCBIblast(verbose=False)
# Run BLASTP against UniProtKB
jobid = s.run(
program="blastp",
sequence=protein_sequence,
stype="protein",
database="uniprotkb",
email="[email protected]" # Required by NCBI
)
# Check job status and retrieve results
s.getStatus(jobid)
results = s.getResult(jobid, "out")
注意: BLAST ジョブは非同期です。結果を取得する前にステータスを確認してください。
5. 識別子マッピング
異なる生物学データベース間で識別子を変換します:
from bioservices import UniProt, KEGG
# UniProt mapping (many database pairs supported)
u = UniProt()
results = u.mapping(
fr="UniProtKB_AC-ID", # Source database
to="KEGG", # Target database
query="P43403" # Identifier(s) to convert
)
# KEGG gene ID → UniProt
kegg_to_uniprot = u.mapping(fr="KEGG", to="UniProtKB_AC-ID", query="hsa:7535")
# For compounds, use UniChem
from bioservices import UniChem
u = UniChem()
chembl_from_kegg = u.get_compound_id_from_kegg("C11222")
サポートされているマッピング(UniProt):
- UniProtKB ↔ KEGG
- UniProtKB ↔ Ensembl
- UniProtKB ↔ PDB
- UniProtKB ↔ RefSeq
- その他多数(
references/identifier_mapping.mdを参照)
6. 遺伝子オントロジーの照会
GO 用語とアノテーションにアクセスします:
from bioservices import QuickGO
g = QuickGO(verbose=False)
# Retrieve GO term information
term_info = g.Term("GO:0003824", frmt="obo")
# Search annotations
annotations = g.Annotation(protein="P43403", format="tsv")
7. タンパク質間相互作用
PSICQUIC を介して相互作用データベースを照会します:
from bioservices import PSICQUIC
s = PSICQUIC(verbose=False)
# Query specific database (e.g., MINT)
interactions = s.query("mint", "ZAP70 AND species:9606")
# List available interaction databases
databases = s.activeDBs
利用可能なデータベース: MINT、IntAct、BioGRID、DIP、その他 30 以上
複数サービスを統合したワークフロー
BioServices は、複数のサービスを組み合わせて包括的な解析を行うことに優れています。一般的な統合パターンは次のとおりです:
タンパク質解析パイプラインの全体
タンパク質の特性解析ワークフロー全体を実行します:
python scripts/protein_analysis_workflow.py ZAP70_HUMAN [email protected]
このスクリプトは次の内容を示しています:
- タンパク質エントリを検索する UniProt 検索
- FASTA 配列の取得
- BLAST による類似性検索
- KEGG による経路の探索
- PSICQUIC による相互作用のマッピング
経路ネットワーク解析
生物種のすべての経路を解析します:
python scripts/pathway_analysis.py hsa output_directory/
次のものを抽出・解析します:
- 生物種のすべての経路 ID
- 経路ごとのタンパク質間相互作用
- 相互作用タイプの分布
- CSV/SIF 形式でのエクスポート
データベース横断の化合物検索
データベース間で化合物の識別子をマッピングします:
python scripts/compound_cross_reference.py Geldanamycin
次のものを取得します:
- KEGG 化合物 ID
- ChEBI 識別子
- ChEMBL 識別子
- 基本的な化合物特性
一括識別子変換
複数の識別子を一度に変換します:
python scripts/batch_id_converter.py input_ids.txt --from UniProtKB_AC-ID --to KEGG
ベストプラクティス
出力形式の処理
サービスによって返されるデータの形式はさまざまです:
- XML: BeautifulSoup を使って解析します(ほとんどの SOAP サービス)
- タブ区切り (TSV): 表形式データには Pandas DataFrame を使用します
- 辞書/JSON: Python で直接操作します
- FASTA: 配列解析には BioPython と連携します
レート制限と詳細出力
API リクエストの動作を制御します:
from bioservices import KEGG
k = KEGG(verbose=False) # Suppress HTTP request details
k.TIMEOUT = 30 # Adjust timeout for slow connections
エラー処理
サービス呼び出しは try-except ブロックで囲みます:
try:
results = u.search("ambiguous_query")
if results:
# Process results
pass
except Exception as e:
print(f"Search failed: {e}")
生物種コード
標準的な生物種の略称を使用します:
hsa: Homo sapiens(ヒト)mmu: Mus musculus(マウス)dme: Drosophila melanogaster(ショウジョウバエ)sce: Saccharomyces cerevisiae(酵母)
すべての生物種を一覧表示するには k.list("organism") または k.organismIds を使用します
他のツールとの連携
BioServices は以下のツールと組み合わせて利用できます:
- BioPython: 取得した FASTA データの配列解析
- Pandas: 表形式データの操作
- PyMOL: 3D 構造の可視化(PDB ID の取得)
- NetworkX: パスウェイの相互作用のネットワーク解析
- Galaxy: ワークフローのプラットフォーム向けカスタムツールラッパー
リソース
scripts/
完全なワークフローを示す実行可能な Python スクリプトです:
protein_analysis_workflow.py: エンドツーエンドのタンパク質特性解析pathway_analysis.py: KEGG パスウェイの探索とネットワーク抽出compound_cross_reference.py: 複数データベースにまたがる化合物検索batch_id_converter.py: 一括 ID マッピングユーティリティ
スクリプトは直接実行することも、特定の用途に合わせて改変することもできます。
references/
必要に応じて読み込む詳細ドキュメントです:
services_reference.md: 40 を超えるすべてのサービスとそのメソッドの包括的な一覧workflow_patterns.md: 複数ステップの詳細な解析ワークフローidentifier_mapping.md: データベース間の ID 変換に関する完全なガイド
特定のサービスや複雑な連携作業を行う際にリファレンスを読み込んでください。
インストール
uv pip install bioservices
依存関係は自動的に管理されます。このパッケージは Python 3.9〜3.12 でテストされています。
追加情報
詳細な API ドキュメントや高度な機能については、以下を参照してください:
- 公式ドキュメント: https://bioservices.readthedocs.io/
- ソースコード: https://github.com/cokelaer/bioservices
- サービス別リファレンス:
references/services_reference.md