string-database について
string-databaseは、STRINGを使ったタンパク質相互作用や経路の分析を支援する研究者向けスキルです。PythonヘルパーとAPIリファレンスを備え、ネットワーク照会、濃縮解析、相同性解析を行えます。
主な機能
- 01タンパク質IDのマッピング
- 02相互作用ネットワークの取得
- 03相互作用パートナーの検索
- 04機能・PPI濃縮解析
- 05ネットワーク画像の生成
- 06相同性とバージョンの確認
活用シーン
- 01実験で得たタンパク質リストの分析
- 02起点タンパク質の相互作用先の探索
- 03タンパク質群が機能モジュールを形成するか検証
- 04種をまたいだ相互作用ネットワークの比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ovachiever/ droid-tings --skill string-databaseインストール後、Claude Code で/string-databaseを入力して読み込まれたか確認します。
同梱ファイルreferences/string_reference.mdscripts/string_api.py
詳細
STRING データベース
概要
STRING は、既知および予測されるタンパク質間相互作用の包括的なデータベースであり、5000 以上の生物種にわたる 5,900 万のタンパク質と 200 億以上の相互作用を収録しています。REST API を通じて相互作用ネットワークの照会、機能エンリッチメント解析、相互作用パートナーの探索を行えるため、システム生物学やパスウェイ解析に活用できます。
このスキルを使用する場合
このスキルは次の場合に使用します:
- 単一または複数のタンパク質について、タンパク質間相互作用ネットワークを取得する場合
- タンパク質リストに対して機能エンリッチメント解析 (GO、KEGG、Pfam) を実行する場合
- 相互作用パートナーを探索し、タンパク質ネットワークを拡張する場合
- タンパク質群が有意に濃縮された機能モジュールを形成するかを検定する場合
- エビデンスに基づく配色でネットワーク可視化を生成する場合
- ホモロジーおよびタンパク質ファミリーの関係を解析する場合
- 異なる生物種間でタンパク質相互作用を比較する場合
- ハブタンパク質およびネットワークの連結性パターンを特定する場合
クイックスタート
このスキルでは次のものを提供します:
- STRING REST API のすべての操作に対応する Python ヘルパー関数 (
scripts/string_api.py) - 詳細な API 仕様を記載した包括的なリファレンスドキュメント (
references/string_reference.md)
ユーザーから STRING データの要求があった場合は、必要な操作を判断し、scripts/string_api.py から適切な関数を使用してください。
主要な操作
1. 識別子マッピング (string_map_ids)
遺伝子名、タンパク質名、外部 ID を STRING 識別子に変換します。
使用する場合: STRING 解析の開始時、タンパク質名の検証、正規の識別子の取得。
使用方法:
from scripts.string_api import string_map_ids
# Map single protein
result = string_map_ids('TP53', species=9606)
# Map multiple proteins
result = string_map_ids(['TP53', 'BRCA1', 'EGFR', 'MDM2'], species=9606)
# Map with multiple matches per query
result = string_map_ids('p53', species=9606, limit=5)
パラメータ:
species: NCBI 分類 ID (9606 = ヒト、10090 = マウス、7227 = ショウジョウバエ)limit: 識別子ごとの一致件数 (デフォルト: 1)echo_query: 出力にクエリ用語を含める (デフォルト: 1)
ベストプラクティス: 後続の照会を高速化するため、必ず最初に識別子をマッピングしてください。
2. ネットワーク取得 (string_network)
タンパク質間相互作用ネットワークのデータを表形式で取得します。
使用する場合: 相互作用ネットワークの構築、連結性の解析、相互作用のエビデンスの取得。
使用方法:
from scripts.string_api import string_network
# Get network for single protein
network = string_network('9606.ENSP00000269305', species=9606)
# Get network with multiple proteins
proteins = ['9606.ENSP00000269305', '9606.ENSP00000275493']
network = string_network(proteins, required_score=700)
# Expand network with additional interactors
network = string_network('TP53', species=9606, add_nodes=10, required_score=400)
# Physical interactions only
network = string_network('TP53', species=9606, network_type='physical')
パラメータ:
required_score: 信頼度の閾値 (0-1000)- 150: 低信頼度 (探索的解析向け)
- 400: 中信頼度 (デフォルト、標準的な解析向け)
- 700: 高信頼度 (保守的な解析向け)
- 900: 最高信頼度 (非常に厳格な解析向け)
network_type:'functional'(すべてのエビデンス、デフォルト) または'physical'(直接結合のみ)add_nodes: 最も連結数の多いタンパク質を N 個追加 (0-10)
出力列: 相互作用のペア、信頼度スコア、および個々のエビデンススコア (neighborhood、fusion、coexpression、experimental、database、text-mining)。
3. ネットワーク可視化 (string_network_image)
ネットワークの可視化を PNG 画像として生成します。
使用する場合: 図の作成、視覚的な探索、プレゼンテーション。
使用方法:
from scripts.string_api import string_network_image
# Get network image
proteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1']
img_data = string_network_image(proteins, species=9606, required_score=700)
# Save image
with open('network.png', 'wb') as f:
f.write(img_data)
# Evidence-colored network
img = string_network_image(proteins, species=9606, network_flavor='evidence')
# Confidence-based visualization
img = string_network_image(proteins, species=9606, network_flavor='confidence')
# Actions network (activation/inhibition)
img = string_network_image(proteins, species=9606, network_flavor='actions')
ネットワークの表示形式:
'evidence': 線の色でエビデンスの種類を表示 (デフォルト)'confidence': 線の太さで信頼度を表示'actions': 活性化・抑制の関係を表示
4. 相互作用パートナー (string_interaction_partners)
指定したタンパク質と相互作用するすべてのタンパク質を検索します。
使用する場合: 新規相互作用の発見、ハブタンパク質の特定、ネットワークの拡張。
使用方法:
from scripts.string_api import string_interaction_partners
# Get top 10 interactors of TP53
partners = string_interaction_partners('TP53', species=9606, limit=10)
# Get high-confidence interactors
partners = string_interaction_partners('TP53', species=9606,
limit=20, required_score=700)
# Find interactors for multiple proteins
partners = string_interaction_partners(['TP53', 'MDM2'],
species=9606, limit=15)
パラメータ:
limit: 返すパートナーの最大数 (デフォルト: 10)required_score: 信頼度の閾値 (0-1000)
ユースケース:
- ハブタンパク質の特定
- 起点となるタンパク質からのネットワーク拡張
- 間接的な結合の発見
5. 機能エンリッチメント(string_enrichment)
Gene Ontology、KEGG パスウェイ、Pfam ドメインなどを対象にエンリッチメント解析を実行します。
使用するタイミング: タンパク質リストの解釈、パスウェイ解析、機能の特徴づけ、生物学的プロセスの理解。
使用方法:
from scripts.string_enrichment import string_enrichment
# Enrichment for a protein list
proteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1', 'ATR', 'TP73']
enrichment = string_enrichment(proteins, species=9606)
# Parse results to find significant terms
import pandas as pd
df = pd.read_csv(io.StringIO(enrichment), sep='\t')
significant = df[df['fdr'] < 0.05]
エンリッチメントのカテゴリ:
- Gene Ontology: 生物学的プロセス、分子機能、細胞内局在
- KEGG パスウェイ: 代謝経路およびシグナル伝達経路
- Pfam: タンパク質ドメイン
- InterPro: タンパク質ファミリーおよびドメイン
- SMART: ドメインアーキテクチャ
- UniProt Keywords: キュレーションされた機能キーワード
出力列:
category: アノテーションデータベース(例: "KEGG Pathways", "GO Biological Process")term: 用語の識別子description: 人が読める形式の用語の説明number_of_genes: このアノテーションを持つ入力タンパク質の数p_value: 補正されていないエンリッチメントの p 値fdr: 偽発見率(補正後の p 値)
統計手法: Benjamini-Hochberg 法による FDR 補正を伴う Fisher の正確確率検定。
解釈: FDR < 0.05 は統計的に有意なエンリッチメントを示します。
6. PPI エンリッチメント(string_ppi_enrichment)
タンパク質ネットワークが偶然から予想されるよりも有意に多くの相互作用を持つかを検定します。
使用するタイミング: タンパク質が機能モジュールを形成しているかの検証、ネットワークの連結性の検定。
使用方法:
from scripts.string_api import string_ppi_enrichment
import json
# Test network connectivity
proteins = ['TP53', 'MDM2', 'ATM', 'CHEK2', 'BRCA1']
result = string_ppi_enrichment(proteins, species=9606, required_score=400)
# Parse JSON result
data = json.loads(result)
print(f"Observed edges: {data['number_of_edges']}")
print(f"Expected edges: {data['expected_number_of_edges']}")
print(f"P-value: {data['p_value']}")
出力フィールド:
number_of_nodes: ネットワーク内のタンパク質数number_of_edges: 観測された相互作用数expected_number_of_edges: ランダムなネットワークで期待される数p_value: 統計的有意性
解釈:
- p 値 < 0.05: ネットワークは有意にエンリッチされている(タンパク質が機能モジュールを形成している可能性が高い)
- p 値 ≥ 0.05: 有意なエンリッチメントなし(タンパク質は無関係の可能性がある)
7. ホモロジースコア(string_homology)
タンパク質の類似性およびホモロジー情報を取得します。
使用するタイミング: タンパク質ファミリーの特定、パラログ解析、種間比較。
使用方法:
from scripts.string_api import string_homology
# Get homology between proteins
proteins = ['TP53', 'TP63', 'TP73'] # p53 family
homology = string_homology(proteins, species=9606)
ユースケース:
- タンパク質ファミリーの特定
- パラログの発見
- 進化解析
8. バージョン情報(string_version)
現在の STRING データベースのバージョンを取得します。
使用するタイミング: 再現性の確保、手法の文書化。
使用方法:
from scripts.string_api import string_version
version = string_version()
print(f"STRING version: {version}")
一般的な解析ワークフロー
ワークフロー 1: タンパク質リスト解析(標準ワークフロー)
ユースケース: 実験(例: 発現変動解析、プロテオミクス)から得られたタンパク質リストを解析します。
from scripts.string_api import (string_map_ids, string_network,
string_enrichment, string_ppi_enrichment,
string_network_image)
# Step 1: Map gene names to STRING IDs
gene_list = ['TP53', 'BRCA1', 'ATM', 'CHEK2', 'MDM2', 'ATR', 'BRCA2']
mapping = string_map_ids(gene_list, species=9606)
# Step 2: Get interaction network
network = string_network(gene_list, species=9606, required_score=400)
# Step 3: Test if network is enriched
ppi_result = string_ppi_enrichment(gene_list, species=9606)
# Step 4: Perform functional enrichment
enrichment = string_enrichment(gene_list, species=9606)
# Step 5: Generate network visualization
img = string_network_image(gene_list, species=9606,
network_flavor='evidence', required_score=400)
with open('protein_network.png', 'wb') as f:
f.write(img)
# Step 6: Parse and interpret results
ワークフロー 2: 単一タンパク質の調査
ユースケース: 1 つのタンパク質の相互作用とパートナーを詳細に調べます。
from scripts.string_api import (string_map_ids, string_interaction_partners,
string_network_image)
# Step 1: Map protein name
protein = 'TP53'
mapping = string_map_ids(protein, species=9606)
# Step 2: Get all interaction partners
partners = string_interaction_partners(protein, species=9606,
limit=20, required_score=700)
# Step 3: Visualize expanded network
img = string_network_image(protein, species=9606, add_nodes=15,
network_flavor='confidence', required_score=700)
with open('tp53_network.png', 'wb') as f:
f.write(img)
ワークフロー 3: パスウェイ中心の解析
ユースケース: 特定の生物学的パスウェイに含まれるタンパク質を特定し、可視化します。
from scripts.string_api import string_enrichment, string_network
# Step 1: Start with known pathway proteins
dna_repair_proteins = ['TP53', 'ATM', 'ATR', 'CHEK1', 'CHEK2',
'BRCA1', 'BRCA2', 'RAD51', 'XRCC1']
# Step 2: Get network
network = string_network(dna_repair_proteins, species=9606,
required_score=700, add_nodes=5)
# Step 3: Enrichment to confirm pathway annotation
enrichment = string_enrichment(dna_repair_proteins, species=9606)
# Step 4: Parse enrichment for DNA repair pathways
import pandas as pd
import io
df = pd.read_csv(io.StringIO(enrichment), sep='\t')
dna_repair = df[df['description'].str.contains('DNA repair', case=False)]
ワークフロー 4: 種間解析
ユースケース: 異なる生物種間でタンパク質相互作用を比較します。
from scripts.string_api import string_network
# Human network
human_network = string_network('TP53', species=9606, required_score=700)
# Mouse network
mouse_network = string_network('Trp53', species=10090, required_score=700)
# Yeast network (if ortholog exists)
yeast_network = string_network('gene_name', species=4932, required_score=700)
ワークフロー 5: ネットワークの拡張と発見
ユースケース: シードとなるタンパク質から出発し、連結された機能モジュールを発見します。
from scripts.string_api import (string_interaction_partners, string_network,
string_enrichment)
# Step 1: Start with seed protein(s)
seed_proteins = ['TP53']
# Step 2: Get first-degree interactors
partners = string_interaction_partners(seed_proteins, species=9606,
limit=30, required_score=700)
# Step 3: Parse partners to get protein list
import pandas as pd
import io
df = pd.read_csv(io.StringIO(partners), sep='\t')
all_proteins = list(set(df['preferredName_A'].tolist() +
df['preferredName_B'].tolist()))
# Step 4: Perform enrichment on expanded network
enrichment = string_enrichment(all_proteins[:50], species=9606)
# Step 5: Filter for interesting functional modules
enrichment_df = pd.read_csv(io.StringIO(enrichment), sep='\t')
modules = enrichment_df[enrichment_df['fdr'] < 0.001]
一般的な生物種
生物種を指定する場合は、NCBI のタクソン ID を使用します。
| 生物種 | 一般名 | タクソン ID |
|---|---|---|
| Homo sapiens | ヒト | 9606 |
| Mus musculus | マウス | 10090 |
| Rattus norvegicus | ラット | 10116 |
| Drosophila melanogaster | ショウジョウバエ | 7227 |
| Caenorhabditis elegans | C. elegans | 6239 |
| Saccharomyces cerevisiae | 酵母 | 4932 |
| Arabidopsis thaliana | シロイヌナズナ | 3702 |
| Escherichia coli | E. coli | 511145 |
| Danio rerio | ゼブラフィッシュ | 7955 |
利用可能な全リストは次のURLで確認できます: https://string-db.org/cgi/input?input_page_active_form=organisms
信頼度スコアの理解
STRING は、複数のエビデンスの種類を統合した combined confidence score(0〜1000)を提供します。
エビデンスチャネル
- 近傍(nscore): 種間で保存されたゲノム近傍
- 融合(fscore): 遺伝子融合イベント
- 系統的プロファイル(pscore): 種間での共起パターン
- 共発現(ascore): 相関したRNA発現
- 実験(escore): 生化学的および遺伝学的実験
- データベース(dscore): キュレーションされた経路および複合体データベース
- テキストマイニング(tscore): 文献における共起およびNLPによる抽出
推奨閾値
解析の目的に応じて閾値を選択してください。
- 150(低信頼度): 探索的解析、仮説生成
- 400(中信頼度): 標準的な解析、感度と特異度のバランスを重視
- 700(高信頼度): 保守的な解析、高信頼度の相互作用
- 900(最高信頼度): 非常に厳密、実験的エビデンスを優先
トレードオフ:
- 閾値を低くすると: 相互作用が増える(再現率は高いが、偽陽性も増える)
- 閾値を高くすると: 相互作用が減る(適合率は高いが、偽陰性も増える)
ネットワークの種類
機能的ネットワーク(デフォルト)
すべてのエビデンスの種類(実験的、計算的、テキストマイニング)を含みます。直接的な物理的結合がなくても、機能的に関連するタンパク質を表します。
使用する場合:
- 経路解析
- 機能エンリッチメント解析
- システム生物学
- 最も一般的な解析
物理的ネットワーク
直接的な物理的結合に関するエビデンス(物理的相互作用に関する実験データおよびデータベースのアノテーション)のみを含みます。
使用する場合:
- 構造生物学の研究
- タンパク質複合体の解析
- 直接的な結合の検証
- 物理的な接触が必要な場合
API のベストプラクティス
- 必ず最初にidentifierをマッピングする: より高速なクエリのために、他の操作の前に
string_map_ids()を使用してください - 可能な場合はSTRING IDを使用する: 遺伝子名の代わりに
9606.ENSP00000269305の形式を使用してください - 10個を超えるタンパク質のネットワークでは種を指定する: 正確な結果を得るために必須です
- レート制限を守る: API呼び出しの間は1秒待機してください
- 再現性のためにバージョン付きURLを使用する: リファレンスドキュメントで利用できます
- エラーを適切に処理する: 返された文字列で "Error:" プレフィックスを確認してください
- 適切な信頼度閾値を選択する: 閾値を解析の目的に合わせてください
詳細リファレンス
包括的なAPIドキュメント、完全なパラメーター一覧、出力形式、高度な使い方については、references/string_reference.md を参照してください。これには以下が含まれます。
- APIエンドポイントの完全な仕様
- サポートされているすべての出力形式(TSV、JSON、XML、PSI-MI)
- 高度な機能(一括アップロード、values/ranksエンリッチメント)
- エラー処理とトラブルシューティング
- 他のツールとの統合(Cytoscape、R、Pythonライブラリ)
- データライセンスと引用情報
トラブルシューティング
タンパク質が見つからない:
- species パラメーターが identifier と一致しているか確認してください
- まず
string_map_ids()でidentifierのマッピングを試してください - タンパク質名のタイプミスを確認してください
ネットワークの結果が空:
- 信頼度閾値(
required_score)を下げてください - タンパク質が実際に相互作用するかを確認してください
- species が正しいか確認してください
タイムアウトまたはクエリが遅い:
- 入力タンパク質の数を減らしてください
- 遺伝子名の代わりに STRING ID を使用してください
- 大きなクエリはバッチに分割してください
"Species required" エラー:
- 10個を超えるタンパク質のネットワークでは
speciesパラメーターを追加してください - 一貫性のため、常に species を含めてください
結果が想定と異なる:
string_version()で STRING のバージョンを確認してください- network_type が適切か(機能的か物理的か)確認してください
- 信頼度閾値の選択を見直してください
追加リソース
プロテオームスケールの解析や、種のネットワーク全体のアップロードを行う場合:
- https://string-db.org にアクセスしてください
- 「Upload proteome」機能を使用してください
- STRING が完全な相互作用ネットワークを生成し、機能を予測します
完全なデータセットを一括ダウンロードする場合:
- ダウンロードページ: https://string-db.org/cgi/download
- 完全な相互作用ファイル、タンパク質アノテーション、経路マッピングが含まれます
データライセンス
STRING のデータは Creative Commons BY 4.0 ライセンスの下で自由に利用できます:
- 学術利用と商用利用の両方が可能です
- 公表する際には帰属表示が必要です
- 最新の STRING 論文を引用してください
引用
出版物で STRING を使用する場合は、https://string-db.org/cgi/about に掲載されている最新の論文を引用してください。