bioservices について
BioServices は、研究ワークフローからバイオインフォマティクスのデータベースや Web サービスへアクセスする Python パッケージです。REST と SOAP/WSDL をまとめて扱い、生物データの取得、分析、データベース横断検索を行えます。
主な機能
- 01バイオインフォマティクス Web サービスへのアクセス
- 02タンパク質とパスウェイの検索
- 03化合物データベースの検索
- 04配列類似性検索とアラインメント
- 05データベース間の ID マッピング
- 06Gene Ontology と相互作用の検索
活用シーン
- 01タンパク質配列と注釈の取得
- 02遺伝子に関連するパスウェイの検索
- 03化合物 ID の相互参照
- 04複数サービスを組み合わせた分析
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ kalarislabs/ research-agent-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 の両プロトコルを透過的に処理します。
バージョンに関する注意: 例は 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 を使用してください。
一般的なワークフロー:
- KEGG で化合物名を検索する
- KEGG 化合物 ID を抽出する
- UniChem を使って KEGG → ChEMBL のマッピングを行う
- 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]
このスクリプトでは、次の処理を行います。
- 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 melanogastersce: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 BLAST | NCBI_EMAIL または NCBIblast.run() の email= で連絡先メールアドレスを指定 |
| 一部の EBI サービス | 任意。レート制限がある場合はサービスのドキュメントを確認 |
シェルセッションごとに一度設定します。
export [email protected]
実際に使用できる所属機関または研究室のメールアドレスを指定してください。BLAST を大量に利用した場合、NCBI から連絡を受けることがあります。
詳細情報
API の詳細なドキュメントや高度な機能については、次を参照してください。
- 公式ドキュメント:https://bioservices.readthedocs.io/
- ソースコード:https://github.com/cokelaer/bioservices
- サービス別の参考資料:
references/services_reference.md
関連スキル
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:遺伝子リストまたは順位付けされた遺伝子データに対して、パスウェイおよび遺伝子セットのエンリッチメント解析を実行し、結果を解釈します。