mcpField
B
brenda-database

brenda-database

github.com/davila7データ・データベース33.0k222 回インストール1 日前に更新
リポジトリ

brenda-database について

brenda-database は、BRENDA の公式 SOAP API で酵素データを検索するスキルです。生化学研究者や酵素工学担当者向けに、速度論、反応、生物種、条件のデータと解析・可視化スクリプトを提供します。

主な機能

  1. 01Km、kcat、Vmax の取得
  2. 02反応と酵素基質の検索
  3. 03生物種間の酵素データ比較
  4. 04pH、温度、補因子の確認
  5. 05阻害と活性化の解析
  6. 06経路構築と速度論の可視化

活用シーン

  1. 01生物種間の酵素速度論の比較
  2. 02指定基質や生成物に作用する酵素の特定
  3. 03酵素工学向け変異体の選定
  4. 04経路モデルや速度論モデル用データの準備

インストール

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

$npx skills add https://github.com/davila7/claude-code-templates --skill brenda-database

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

同梱ファイル

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

references/
api_reference.md
scripts/
brenda_queries.py
brenda_visualization.py
enzyme_pathway_builder.py

詳細

BRENDA データベース

概要

BRENDA(BRaunschweig ENzyme DAtabase)は、科学文献から得られた詳細な酵素データを収録する、世界で最も包括的な酵素情報システムです。公式 SOAP API を使用して、酵素の速度論パラメータ(Km、kcat)、反応式、基質特異性、生物種情報、至適条件を照会できます。4万5千を超える酵素と数百万件の速度論データポイントにアクセスでき、生化学研究、代謝工学、酵素探索に活用できます。

このスキルを使用するタイミング

このスキルは、次のような場合に使用します。

  • 酵素の速度論パラメータ(Km、kcat、Vmax)を検索する
  • 反応式と化学量論を取得する
  • 特定の基質や反応に対応する酵素を探す
  • 異なる生物種間で酵素の性質を比較する
  • 至適 pH、温度、および条件を調べる
  • 酵素の阻害および活性化データにアクセスする
  • 代謝経路の再構築およびレトロサンセシスを支援する
  • 酵素工学および最適化研究を行う
  • 基質特異性および補因子要件を分析する

主な機能

1. 速度論パラメータの取得

酵素の包括的な速度論データにアクセスします。

EC 番号による Km 値の取得:

from brenda_client import get_km_values

# Get Km values for all organisms
km_data = get_km_values("1.1.1.1")  # Alcohol dehydrogenase

# Get Km values for specific organism
km_data = get_km_values("1.1.1.1", organism="Saccharomyces cerevisiae")

# Get Km values for specific substrate
km_data = get_km_values("1.1.1.1", substrate="ethanol")

Km 結果の解析:

for entry in km_data:
    print(f"Km: {entry}")
    # Example output: "organism*Homo sapiens#substrate*ethanol#kmValue*1.2#commentary*"

特定の情報の抽出:

from scripts.brenda_queries import parse_km_entry, extract_organism_data

for entry in km_data:
    parsed = parse_km_entry(entry)
    organism = extract_organism_data(entry)
    print(f"Organism: {parsed['organism']}")
    print(f"Substrate: {parsed['substrate']}")
    print(f"Km value: {parsed['km_value']}")
    print(f"pH: {parsed.get('ph', 'N/A')}")
    print(f"Temperature: {parsed.get('temperature', 'N/A')}")
2. 反応情報

反応式と詳細を取得します。

EC 番号による反応の取得:

from brenda_client import get_reactions

# Get all reactions for EC number
reactions = get_reactions("1.1.1.1")

# Filter by organism
reactions = get_reactions("1.1.1.1", organism="Escherichia coli")

# Search specific reaction
reactions = get_reactions("1.1.1.1", reaction="ethanol + NAD+")

反応データの処理:

from scripts.brenda_queries import parse_reaction_entry, extract_substrate_products

for reaction in reactions:
    parsed = parse_reaction_entry(reaction)
    substrates, products = extract_substrate_products(reaction)

    print(f"Reaction: {parsed['reaction']}")
    print(f"Organism: {parsed['organism']}")
    print(f"Substrates: {substrates}")
    print(f"Products: {products}")
3. 酵素の探索

特定の生化学的変換に対応する酵素を探します。

基質による酵素の検索:

from scripts.brenda_queries import search_enzymes_by_substrate

# Find enzymes that act on glucose
enzymes = search_enzymes_by_substrate("glucose", limit=20)

for enzyme in enzymes:
    print(f"EC: {enzyme['ec_number']}")
    print(f"Name: {enzyme['enzyme_name']}")
    print(f"Reaction: {enzyme['reaction']}")

生成物による酵素の検索:

from scripts.brenda_queries import search_enzymes_by_product

# Find enzymes that produce lactate
enzymes = search_enzymes_by_product("lactate", limit=10)

反応パターンによる検索:

from scripts.brenda_queries import search_by_pattern

# Find oxidation reactions
enzymes = search_by_pattern("oxidation", limit=15)
4. 生物種別の酵素データ

生物種間で酵素の性質を比較します。

複数の生物種の酵素データの取得:

from scripts.brenda_queries import compare_across_organisms

organisms = ["Escherichia coli", "Saccharomyces cerevisiae", "Homo sapiens"]
comparison = compare_across_organisms("1.1.1.1", organisms)

for org_data in comparison:
    print(f"Organism: {org_data['organism']}")
    print(f"Avg Km: {org_data['average_km']}")
    print(f"Optimal pH: {org_data['optimal_ph']}")
    print(f"Temperature range: {org_data['temperature_range']}")

特定の酵素を持つ生物種の検索:

from scripts.brenda_queries import get_organisms_for_enzyme

organisms = get_organisms_for_enzyme("6.3.5.5")  # Glutamine synthetase
print(f"Found {len(organisms)} organisms with this enzyme")
5. 環境パラメータ

至適条件と環境パラメータにアクセスします。

pH および温度データの取得:

from scripts.brenda_queries import get_environmental_parameters

params = get_environmental_parameters("1.1.1.1")

print(f"Optimal pH range: {params['ph_range']}")
print(f"Optimal temperature: {params['optimal_temperature']}")
print(f"Stability pH: {params['stability_ph']}")
print(f"Temperature stability: {params['temperature_stability']}")

補因子要件:

from scripts.brenda_queries import get_cofactor_requirements

cofactors = get_cofactor_requirements("1.1.1.1")
for cofactor in cofactors:
    print(f"Cofactor: {cofactor['name']}")
    print(f"Type: {cofactor['type']}")
    print(f"Concentration: {cofactor['concentration']}")
6. 基質特異性

酵素の基質に対する選好性を分析します。

基質特異性データの取得:

from scripts.brenda_queries import get_substrate_specificity

specificity = get_substrate_specificity("1.1.1.1")

for substrate in specificity:
    print(f"Substrate: {substrate['name']}")
    print(f"Km: {substrate['km']}")
    print(f"Vmax: {substrate['vmax']}")
    print(f"kcat: {substrate['kcat']}")
    print(f"Specificity constant: {substrate['kcat_km_ratio']}")

基質選好性の比較:

from scripts.brenda_queries import compare_substrate_affinity

comparison = compare_substrate_affinity("1.1.1.1")
sorted_by_km = sorted(comparison, key=lambda x: x['km'])

for substrate in sorted_by_km[:5]:  # Top 5 lowest Km
    print(f"{substrate['name']}: Km = {substrate['km']}")
7. 阻害と活性化

酵素の制御に関するデータにアクセスします。

阻害剤情報の取得:

from scripts.brenda_queries import get_inhibitors

inhibitors = get_inhibitors("1.1.1.1")

for inhibitor in inhibitors:
    print(f"Inhibitor: {inhibitor['name']}")
    print(f"Type: {inhibitor['type']}")
    print(f"Ki: {inhibitor['ki']}")
    print(f"IC50: {inhibitor['ic50']}")

活性化剤情報の取得:

from scripts.brenda_queries import get_activators

activators = get_activators("1.1.1.1")

for activator in activators:
    print(f"Activator: {activator['name']}")
    print(f"Effect: {activator['effect']}")
    print(f"Mechanism: {activator['mechanism']}")
8. 酵素工学の支援

工学的な標的や代替候補を探します。

好熱性ホモログの検索:

from scripts.brenda_queries import find_thermophilic_homologs

thermophilic = find_thermophilic_homologs("1.1.1.1", min_temp=50)

for enzyme in thermophilic:
    print(f"Organism: {enzyme['organism']}")
    print(f"Optimal temp: {enzyme['optimal_temperature']}")
    print(f"Km: {enzyme['km']}")

耐アルカリ性/耐酸性バリアントの検索:

from scripts.brenda_queries import find_ph_stable_variants

alkaline = find_ph_stable_variants("1.1.1.1", min_ph=8.0)
acidic = find_ph_stable_variants("1.1.1.1", max_ph=6.0)
9. 速度論モデリング

速度論モデリングのためにデータを準備します。

モデリング用の速度論パラメータの取得:

from scripts.brenda_queries import get_modeling_parameters

model_data = get_modeling_parameters("1.1.1.1", substrate="ethanol")

print(f"Km: {model_data['km']}")
print(f"Vmax: {model_data['vmax']}")
print(f"kcat: {model_data['kcat']}")
print(f"Enzyme concentration: {model_data['enzyme_conc']}")
print(f"Temperature: {model_data['temperature']}")
print(f"pH: {model_data['ph']}")

ミカエリス・メンテンプロットの作成:

from scripts.brenda_visualization import plot_michaelis_menten

# Generate kinetic plots
plot_michaelis_menten("1.1.1.1", substrate="ethanol")

インストール要件

uv pip install zeep requests pandas matplotlib seaborn

認証の設定

BRENDA では認証情報が必要です。

  1. .env ファイルを作成:
[email protected]
BRENDA_PASSWORD=your_brenda_password
  1. または環境変数を設定:
export BRENDA_EMAIL="[email protected]"
export BRENDA_PASSWORD="your_brenda_password"
  1. BRENDA のアクセス登録:
    • https://www.brenda-enzymes.org/ にアクセスします
    • アカウントを作成します
    • 認証情報がメールで届くので確認します
    • 注意: 従来互換のため BRENDA_EMIAL(スペルミスに注意)も用意されています

ヘルパースクリプト

このスキルには、BRENDA データベースへの照会用の包括的な Python スクリプトが含まれています。

scripts/brenda_queries.py

高レベルの酵素データ解析関数を提供します:

主な関数:

  • parse_km_entry(entry): BRENDA の Km データエントリを解析
  • parse_reaction_entry(entry): 反応データエントリを解析
  • extract_organism_data(entry): 生物種固有の情報を抽出
  • search_enzymes_by_substrate(substrate, limit): 基質に対応する酵素を検索
  • search_enzymes_by_product(product, limit): 生成物を生じる酵素を検索
  • compare_across_organisms(ec_number, organisms): 酵素特性を生物種間で比較
  • get_environmental_parameters(ec_number): pH と温度のデータを取得
  • get_cofactor_requirements(ec_number): 補因子の情報を取得
  • get_substrate_specificity(ec_number): 基質選好性を分析
  • get_inhibitors(ec_number): 酵素阻害データを取得
  • get_activators(ec_number): 酵素活性化データを取得
  • find_thermophilic_homologs(ec_number, min_temp): 熱安定性のある変異体を検索
  • get_modeling_parameters(ec_number, substrate): 速度論モデリング用のパラメーターを取得
  • export_kinetic_data(ec_number, format, filename): データをファイルにエクスポート

使用方法:

from scripts.brenda_queries import search_enzymes_by_substrate, compare_across_organisms

# Search for enzymes
enzymes = search_enzymes_by_substrate("glucose", limit=20)

# Compare across organisms
comparison = compare_across_organisms("1.1.1.1", ["E. coli", "S. cerevisiae"])
scripts/brenda_visualization.py

酵素データの可視化関数を提供します:

主な関数:

  • plot_kinetic_parameters(ec_number): Km と kcat の分布をプロット
  • plot_organism_comparison(ec_number, organisms): 生物種を比較
  • plot_pH_profiles(ec_number): pH 活性プロファイルをプロット
  • plot_temperature_profiles(ec_number): 温度活性プロファイルをプロット
  • plot_substrate_specificity(ec_number): 基質選好性を可視化
  • plot_michaelis_menten(ec_number, substrate): 速度論曲線を生成
  • create_heatmap_data(enzymes, parameters): ヒートマップ用のデータを作成
  • generate_summary_plots(ec_number): 酵素の包括的な概要を作成

使用方法:

from scripts.brenda_visualization import plot_kinetic_parameters, plot_michaelis_menten

# Plot kinetic parameters
plot_kinetic_parameters("1.1.1.1")

# Generate Michaelis-Menten curve
plot_michaelis_menten("1.1.1.1", substrate="ethanol")
scripts/enzyme_pathway_builder.py

酵素的経路とレトロ合成経路を構築します:

主な関数:

  • find_pathway_for_product(product, max_steps): 酵素的経路を検索
  • build_retrosynthetic_tree(target, depth): レトロ合成ツリーを構築
  • suggest_enzyme_substitutions(ec_number, criteria): 代替酵素を提案
  • calculate_pathway_feasibility(pathway): 経路の実現可能性を評価
  • optimize_pathway_conditions(pathway): 最適な条件を提案
  • generate_pathway_report(pathway, filename): 詳細な経路レポートを作成

使用方法:

from scripts.enzyme_pathway_builder import find_pathway_for_product, build_retrosynthetic_tree

# Find pathway to product
pathway = find_pathway_for_product("lactate", max_steps=3)

# Build retrosynthetic tree
tree = build_retrosynthetic_tree("lactate", depth=2)

API レート制限とベストプラクティス

レート制限:

  • BRENDA API には中程度のレート制限があります
  • 継続的な利用では、1 秒あたり 1 リクエストを推奨します
  • 上限: 10 秒あたり 5 リクエスト

ベストプラクティス:

  1. 結果のキャッシュ: よくアクセスする酵素データをローカルに保存する
  2. クエリのバッチ化: 可能な場合は関連するリクエストをまとめる
  3. 具体的な検索を使用: 可能であれば生物種や基質で絞り込む
  4. 欠損データへの対処: すべての酵素が完全なデータを持っているわけではない
  5. EC 番号の検証: EC 番号が正しい形式であることを確認する
  6. 遅延の実装: 連続するリクエストの間に遅延を入れる
  7. ワイルドカードは慎重に使用: 適切な場合は、より広範な検索に '*' を使用する
  8. クォータの監視: API の使用量を追跡する

エラー処理:

from brenda_client import get_km_values, get_reactions
from zeep.exceptions import Fault, TransportError

try:
    km_data = get_km_values("1.1.1.1")
except RuntimeError as e:
    print(f"Authentication error: {e}")
except Fault as e:
    print(f"BRENDA API error: {e}")
except TransportError as e:
    print(f"Network error: {e}")
except Exception as e:
    print(f"Unexpected error: {e}")

一般的なワークフロー

ワークフロー 1: 新しい基質に対する酵素の探索

特定の基質に適した酵素を見つけます:

from brenda_client import get_km_values
from scripts.brenda_queries import search_enzymes_by_substrate, compare_substrate_affinity

# Search for enzymes that act on substrate
substrate = "2-phenylethanol"
enzymes = search_enzymes_by_substrate(substrate, limit=15)

print(f"Found {len(enzymes)} enzymes for {substrate}")
for enzyme in enzymes:
    print(f"EC {enzyme['ec_number']}: {enzyme['enzyme_name']}")

# Get kinetic data for best candidates
if enzymes:
    best_ec = enzymes[0]['ec_number']
    km_data = get_km_values(best_ec, substrate=substrate)

    if km_data:
        print(f"Kinetic data for {best_ec}:")
        for entry in km_data[:3]:  # First 3 entries
            print(f"  {entry}")
ワークフロー 2: 生物種間の酵素比較

異なる生物種間で酵素特性を比較します:

from scripts.brenda_queries import compare_across_organisms, get_environmental_parameters

# Define organisms for comparison
organisms = [
    "Escherichia coli",
    "Saccharomyces cerevisiae",
    "Bacillus subtilis",
    "Thermus thermophilus"
]

# Compare alcohol dehydrogenase
comparison = compare_across_organisms("1.1.1.1", organisms)

print("Cross-organism comparison:")
for org_data in comparison:
    print(f"\n{org_data['organism']}:")
    print(f"  Average Km: {org_data['average_km']}")
    print(f"  Optimal pH: {org_data['optimal_ph']}")
    print(f"  Temperature: {org_data['optimal_temperature']}°C")

# Get detailed environmental parameters
env_params = get_environmental_parameters("1.1.1.1")
print(f"\nOverall optimal pH range: {env_params['ph_range']}")
ワークフロー 3: 酵素改変のターゲット特定

酵素を改善するための改変の機会を見つけます:

from scripts.brenda_queries import (
    find_thermophilic_homologs,
    find_ph_stable_variants,
    compare_substrate_affinity
)

# Find thermophilic variants for heat stability
thermophilic = find_thermophilic_homologs("1.1.1.1", min_temp=50)
print(f"Found {len(thermophilic)} thermophilic variants")

# Find alkaline-stable variants
alkaline = find_ph_stable_variants("1.1.1.1", min_ph=8.0)
print(f"Found {len(alkaline)} alkaline-stable variants")

# Compare substrate specificities for engineering targets
specificity = compare_substrate_affinity("1.1.1.1")
print("Substrate affinity ranking:")
for i, sub in enumerate(specificity[:5]):
    print(f"  {i+1}. {sub['name']}: Km = {sub['km']}")
ワークフロー 4: 酵素的経路の構築

酵素的合成経路を構築します:

from scripts.enzyme_pathway_builder import (
    find_pathway_for_product,
    build_retrosynthetic_tree,
    calculate_pathway_feasibility
)

# Find pathway to target product
target = "lactate"
pathway = find_pathway_for_product(target, max_steps=3)

if pathway:
    print(f"Found pathway to {target}:")
    for i, step in enumerate(pathway['steps']):
        print(f"  Step {i+1}: {step['reaction']}")
        print(f"    Enzyme: EC {step['ec_number']}")
        print(f"    Organism: {step['organism']}")

# Evaluate pathway feasibility
feasibility = calculate_pathway_feasibility(pathway)
print(f"\nPathway feasibility score: {feasibility['score']}/10")
print(f"Potential issues: {feasibility['warnings']}")
ワークフロー 5: 速度論パラメーターの解析

酵素選択のための包括的な速度論解析を行います:

from brenda_client import get_km_values
from scripts.brenda_queries import parse_km_entry, get_modeling_parameters
from scripts.brenda_visualization import plot_kinetic_parameters

# Get comprehensive kinetic data
ec_number = "1.1.1.1"
km_data = get_km_values(ec_number)

# Analyze kinetic parameters
all_entries = []
for entry in km_data:
    parsed = parse_km_entry(entry)
    if parsed['km_value']:
        all_entries.append(parsed)

print(f"Analyzed {len(all_entries)} kinetic entries")

# Find best kinetic performer
best_km = min(all_entries, key=lambda x: x['km_value'])
print(f"\nBest kinetic performer:")
print(f"  Organism: {best_km['organism']}")
print(f"  Substrate: {best_km['substrate']}")
print(f"  Km: {best_km['km_value']}")

# Get modeling parameters
model_data = get_modeling_parameters(ec_number, substrate=best_km['substrate'])
print(f"\nModeling parameters:")
print(f"  Km: {model_data['km']}")
print(f"  kcat: {model_data['kcat']}")
print(f"  Vmax: {model_data['vmax']}")

# Generate visualization
plot_kinetic_parameters(ec_number)
ワークフロー 6: 工業用酵素の選択

工業用途向けの酵素を選択します:

from scripts.brenda_queries import (
    find_thermophilic_homologs,
    get_environmental_parameters,
    get_inhibitors
)

# Industrial criteria: high temperature tolerance, organic solvent resistance
target_enzyme = "1.1.1.1"

# Find thermophilic variants
thermophilic = find_thermophilic_homologs(target_enzyme, min_temp=60)
print(f"Thermophilic candidates: {len(thermophilic)}")

# Check solvent tolerance (inhibitor data)
inhibitors = get_inhibitors(target_enzyme)
solvent_tolerant = [
    inv for inv in inhibitors
    if 'ethanol' not in inv['name'].lower() and
       'methanol' not in inv['name'].lower()
]

print(f"Solvent tolerant candidates: {len(solvent_tolerant)}")

# Evaluate top candidates
for candidate in thermophilic[:3]:
    print(f"\nCandidate: {candidate['organism']}")
    print(f"  Optimal temp: {candidate['optimal_temperature']}°C")
    print(f"  Km: {candidate['km']}")
    print(f"  pH range: {candidate.get('ph_range', 'N/A')}")

データ形式と解析

BRENDA レスポンス形式

BRENDA はデータを特定の形式で返すため、解析が必要です。

Km 値の形式:

organism*Escherichia coli#substrate*ethanol#kmValue*1.2#kmValueMaximum*#commentary*pH 7.4, 25°C#ligandStructureId*#literature*

反応の形式:

ecNumber*1.1.1.1#organism*Saccharomyces cerevisiae#reaction*ethanol + NAD+ <=> acetaldehyde + NADH + H+#commentary*#literature*
データ抽出パターン
import re

def parse_brenda_field(data, field_name):
    """Extract specific field from BRENDA data entry"""
    pattern = f"{field_name}\\*([^#]*)"
    match = re.search(pattern, data)
    return match.group(1) if match else None

def extract_multiple_values(data, field_name):
    """Extract multiple values for a field"""
    pattern = f"{field_name}\\*([^#]*)"
    matches = re.findall(pattern, data)
    return [match for match in matches if match.strip()]

リファレンスドキュメント

BRENDA の詳細なドキュメントは references/api_reference.md を参照してください。この中には次の内容が含まれます:

  • SOAP API メソッドの完全なドキュメント
  • パラメーターの一覧と形式の詳細
  • EC 番号の構造と検証
  • レスポンス形式の仕様
  • エラーコードとエラー処理
  • データフィールドの定義
  • 文献引用の形式

トラブルシューティング

認証エラー:

  • .env ファイル内の BRENDA_EMAIL と BRENDA_PASSWORD を確認してください
  • スペルが正しいか確認してください(旧形式の BRENDA_EMIAL にも対応しています)
  • BRENDA アカウントが有効で、API へのアクセス権があることを確認してください

結果が返されない:

  • ワイルドカード (*) を使って検索範囲を広げてみてください
  • EC 番号の形式を確認してください(例: "1.1.1.1" であり "1.1.1" ではありません)
  • 基質のスペルと命名を確認してください
  • 酵素によっては BRENDA 内のデータが限られている場合があります

レート制限:

  • リクエストの間に遅延を入れてください(0.5〜1 秒)
  • 結果をローカルにキャッシュしてください
  • より具体的なクエリを使ってデータ量を減らしてください
  • 複数のクエリはバッチ処理を検討してください

ネットワークエラー:

  • インターネット接続を確認してください
  • BRENDA サーバーが一時的に利用できない可能性があります
  • 数分後に再試行してください
  • 地域制限がある場合は VPN の利用を検討してください

データ形式の問題:

  • スクリプトに含まれる解析関数を使用してください
  • BRENDA のデータは形式が一貫していない場合があります
  • 欠落しているフィールドは適切に処理してください
  • 使用前に解析済みデータを検証してください

パフォーマンスの問題:

  • 大きなクエリは時間がかかる場合があるため、検索範囲を限定してください
  • 特定の生物種や基質のフィルターを使用してください
  • バッチ処理には非同期処理の利用を検討してください
  • 大量のデータを扱う場合はメモリ使用量を監視してください

追加リソース

コメント