mcpField
B
bioservices

bioservices

github.com/kalarislabsその他7343 回インストール4 日前に更新
リポジトリ

bioservices について

BioServices は、研究ワークフローからバイオインフォマティクスのデータベースや Web サービスへアクセスする Python パッケージです。REST と SOAP/WSDL をまとめて扱い、生物データの取得、分析、データベース横断検索を行えます。

主な機能

  1. 01バイオインフォマティクス Web サービスへのアクセス
  2. 02タンパク質とパスウェイの検索
  3. 03化合物データベースの検索
  4. 04配列類似性検索とアラインメント
  5. 05データベース間の ID マッピング
  6. 06Gene Ontology と相互作用の検索

活用シーン

  1. 01タンパク質配列と注釈の取得
  2. 02遺伝子に関連するパスウェイの検索
  3. 03化合物 ID の相互参照
  4. 04複数サービスを組み合わせた分析

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill bioservices

インストール後、Claude Code で/bioservicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
identifier_mapping.md
services_reference.md
workflow_patterns.md
scripts/
batch_id_converter.py
compound_cross_reference.py
pathway_analysis.py
protein_analysis_workflow.py

詳細

BioServices

概要

BioServices は、約 40 のバイオインフォマティクス系 Web サービスおよびデータベースにプログラムからアクセスできる Python パッケージです。生物学的データの取得、データベース間のクエリ、識別子のマッピング、配列解析を行い、複数の生物学的リソースを Python ワークフローに統合できます。このパッケージは REST と SOAP/WSDL の両プロトコルを透過的に処理します。

バージョンに関する注意: 例は bioservices 1.16.0(PyPI、2026 年 3 月)を対象としています。Python 3.9–3.12 が必要です。2022 年半ばの UniProt REST の変更(bioservices ≥1.10)は、主に表形式の columns 名に影響します。解析に問題がある場合は、上流の _legacy_names を参照してください。ChEMBL のラッパーは 1.6.0(2018 API)で変更されています。1.6 より前のメソッド名ではなく、get_similarity、get_substructure、get_molecule を使用してください。

このスキルを使用する場面

以下の場合にこのスキルを使用してください:

  • 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、tab)でタンパク質エントリーを取得します
  • 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

バージョンに関する注意: ソースごとの get_compound_id_from_* ヘルパーは bioservices 1.16.0 では廃止されています。まず hasattr(u, "get_compound_id_from_kegg") を確認し、利用できない場合は現在の UniChem API(u.get_compounds(compound, source_type) を使用して res["compounds"][0]["sources"] を読み取る)を使用してください。ChEMBL の検索にも同じルールが適用されます。1.6 より前の get_compound_by_chemblId ではなく、get_molecule を使用してください。

一般的なワークフロー:

  1. KEGG で化合物名を検索する
  2. KEGG 化合物 ID を抽出する
  3. UniChem を使って KEGG → ChEMBL のマッピングを行う
  4. ChEBI ID は KEGG エントリーに記載されていることがよくあります

参照:データベース間のマッピングガイドの詳細については references/identifier_mapping.md をご覧ください。

4. 配列解析

BLAST 検索と配列アラインメントを実行します。NCBI には連絡先メールアドレスが必要です。NCBI_EMAIL 環境変数を優先してください(BioPython Entrez やリポジトリ内の他のスキルと同じ規約です):

import os
from bioservices import NCBIblast

s = NCBIblast(verbose=False)
email = os.environ["NCBI_EMAIL"]  # set before running: export [email protected]

# Run BLASTP against UniProtKB
jobid = s.run(
    program="blastp",
    sequence=protein_sequence,
    stype="protein",
    database="uniprotkb",
    email=email,
)

# 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 を介して相互作用データベースを検索します。PSICQUIC はすべてのリリースに含まれているわけではなく、1.16.0 にはありません。そのため、安全にインポートし、利用できない場合は IntactComplex、OmniPath、または STRING にフォールバックします。

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 は、包括的な解析のために複数のサービスを組み合わせるのに優れています。一般的な統合パターンは次のとおりです。

タンパク質の完全な解析パイプライン

タンパク質の特性を完全に解析するワークフローを実行します。

export [email protected]
python scripts/protein_analysis_workflow.py ZAP70_HUMAN
# Or pass email as optional second argument if NCBI_EMAIL is unset
python scripts/protein_analysis_workflow.py ZAP70_HUMAN [email protected]

このスクリプトでは、次の処理を行います。

  1. UniProt でタンパク質エントリを検索
  2. FASTA 配列を取得
  3. BLAST 相同性検索を実行
  4. KEGG 経路を特定
  5. 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:識別子を一括で対応付けるユーティリティ

スクリプトはそのまま実行することも、特定の用途に合わせて調整することもできます。

references/

必要に応じて読み込む詳細なドキュメントです。

  • services_reference.md:40 以上のすべてのサービスとメソッドの包括的な一覧
  • workflow_patterns.md:複数ステップの解析ワークフローの詳細
  • identifier_mapping.md:データベース横断 ID 変換の完全ガイド

特定のサービスや複雑な統合タスクを扱う際は、参考資料を読み込んでください。

インストール

uv pip install "bioservices==1.16.0"

依存関係は自動的にインストールされます。上流の CI では Python 3.9~3.12 がテストされています(PyPI、ドキュメント)。

認証情報

ほとんどのサービスでは API キーは不要です。例外は次のとおりです。

サービス要件
NCBI BLASTNCBI_EMAIL または NCBIblast.run() の email= で連絡先メールアドレスを指定
一部の EBI サービス任意。レート制限がある場合はサービスのドキュメントを確認

シェルセッションごとに一度設定します。

export [email protected]

実際に使用できる所属機関または研究室のメールアドレスを指定してください。BLAST を大量に利用した場合、NCBI から連絡を受けることがあります。

詳細情報

API の詳細なドキュメントや高度な機能については、次を参照してください。

関連スキル

  • gget:gget CLI と Python パッケージを通じて、20 以上のバイオインフォマティクスデータベースおよび解析サービスを照会します。Ensembl の遺伝子検索、情報取得などに対応しています…
  • biopython:Biopython(Bio.Seq、Bio.SeqIO、Bio.Align、Bio.Entrez、Bio.Blast、Bio.PDB、Bio.Phylo、Bio.motifs、Bio.SeqUtils、Bio.Restriction)を提供します…
  • pathway-enrichment:遺伝子リストまたは順位付けされた遺伝子データに対して、パスウェイおよび遺伝子セットのエンリッチメント解析を実行し、結果を解釈します。

コメント