brenda-database について
brenda-database は、BRENDA の公式 SOAP API で酵素データを検索するスキルです。生化学研究者や酵素工学担当者向けに、速度論、反応、生物種、条件のデータと解析・可視化スクリプトを提供します。
主な機能
- 01Km、kcat、Vmax の取得
- 02反応と酵素基質の検索
- 03生物種間の酵素データ比較
- 04pH、温度、補因子の確認
- 05阻害と活性化の解析
- 06経路構築と速度論の可視化
活用シーン
- 01生物種間の酵素速度論の比較
- 02指定基質や生成物に作用する酵素の特定
- 03酵素工学向け変異体の選定
- 04経路モデルや速度論モデル用データの準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davila7/ claude-code-templates --skill brenda-databaseインストール後、Claude Code で/brenda-databaseを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/api_reference.mdscripts/brenda_queries.pybrenda_visualization.pyenzyme_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 では認証情報が必要です。
- .env ファイルを作成:
[email protected]
BRENDA_PASSWORD=your_brenda_password
- または環境変数を設定:
export BRENDA_EMAIL="[email protected]"
export BRENDA_PASSWORD="your_brenda_password"
- 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 リクエスト
ベストプラクティス:
- 結果のキャッシュ: よくアクセスする酵素データをローカルに保存する
- クエリのバッチ化: 可能な場合は関連するリクエストをまとめる
- 具体的な検索を使用: 可能であれば生物種や基質で絞り込む
- 欠損データへの対処: すべての酵素が完全なデータを持っているわけではない
- EC 番号の検証: EC 番号が正しい形式であることを確認する
- 遅延の実装: 連続するリクエストの間に遅延を入れる
- ワイルドカードは慎重に使用: 適切な場合は、より広範な検索に '*' を使用する
- クォータの監視: 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 のデータは形式が一貫していない場合があります
- 欠落しているフィールドは適切に処理してください
- 使用前に解析済みデータを検証してください
パフォーマンスの問題:
- 大きなクエリは時間がかかる場合があるため、検索範囲を限定してください
- 特定の生物種や基質のフィルターを使用してください
- バッチ処理には非同期処理の利用を検討してください
- 大量のデータを扱う場合はメモリ使用量を監視してください
追加リソース
- BRENDA ホーム: https://www.brenda-enzymes.org/
- BRENDA SOAP API ドキュメント: https://www.brenda-enzymes.org/soap.php
- 酵素委員会 (EC) 番号: https://www.qmul.ac.uk/sbcs/iubmb/enzyme/
- Zeep SOAP クライアント: https://python-zeep.readthedocs.io/
- 酵素命名法: https://www.iubmb.org/enzyme/