BRENDA数据库技能Skill brenda-database

这个技能用于通过SOAP API访问BRENDA酶数据库,检索酶动力学参数(如Km、kcat)、反应方程式、生物体数据和底物特异性信息,支持生化研究、代谢工程、酶发现和数据分析。关键词:酶数据库,动力学参数,BRENDA,SOAP API,生化研究,数据分析。

数据分析 0 次安装 0 次浏览 更新于 3/20/2026

name: brenda-database description: “通过SOAP API访问BRENDA酶数据库。检索动力学参数(Km、kcat)、反应方程式、生物体数据以及底物特异性酶信息,用于生化研究和代谢途径分析。”

BRENDA 数据库

概述

BRENDA(BRaunschweig ENzyme DAtabase)是全球最全面的酶信息系统,包含科学文献中的详细酶数据。通过官方SOAP API查询动力学参数(Km、kcat)、反应方程式、底物特异性、生物体信息和酶的最适条件。访问超过45,000种酶和数百万个动力学数据点,用于生化研究、代谢工程和酶发现。

何时使用此技能

此技能应在以下情况下使用:

  • 搜索酶动力学参数(Km、kcat、Vmax)
  • 检索反应方程式和化学计量
  • 查找特定底物或反应的酶
  • 比较不同生物体间的酶性质
  • 调查最适pH、温度和条件
  • 访问酶抑制和激活数据
  • 支持代谢途径重建和逆合成
  • 进行酶工程和优化研究
  • 分析底物特异性和辅因子需求

核心功能

1. 动力学参数检索

访问全面的酶动力学数据:

按EC编号获取Km值

from brenda_client import get_km_values

# 获取所有生物体的Km值
km_data = get_km_values("1.1.1.1")  # 酒精脱氢酶

# 获取特定生物体的Km值
km_data = get_km_values("1.1.1.1", organism="Saccharomyces cerevisiae")

# 获取特定底物的Km值
km_data = get_km_values("1.1.1.1", substrate="ethanol")

解析Km结果

for entry in km_data:
    print(f"Km: {entry}")
    # 示例输出: "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

# 获取EC编号的所有反应
reactions = get_reactions("1.1.1.1")

# 按生物体过滤
reactions = get_reactions("1.1.1.1", organism="Escherichia coli")

# 搜索特定反应
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

# 查找作用于葡萄糖的酶
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

# 查找产生乳酸的酶
enzymes = search_enzymes_by_product("lactate", limit=10)

按反应模式搜索

from scripts.brenda_queries import search_by_pattern

# 查找氧化反应
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")  # 谷氨酰胺合成酶
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]:  # 前5个最低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

# 生成动力学图
plot_michaelis_menten("1.1.1.1", substrate="ethanol")

安装要求

uv pip install zeep requests pandas matplotlib seaborn

认证设置

BRENDA需要认证凭证:

  1. 创建 .env 文件
BRENDA_EMAIL=your.email@example.com
BRENDA_PASSWORD=your_brenda_password
  1. 或设置环境变量
export BRENDA_EMAIL="your.email@example.com"
export BRENDA_PASSWORD="your_brenda_password"
  1. 注册BRENDA访问

辅助脚本

此技能包含用于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

# 搜索酶
enzymes = search_enzymes_by_substrate("glucose", limit=20)

# 比较生物体
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("1.1.1.1")

# 生成米氏方程曲线
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

# 查找产物途径
pathway = find_pathway_for_product("lactate", max_steps=3)

# 构建逆合成树
tree = build_retrosynthetic_tree("lactate", depth=2)

API速率限制和最佳实践

速率限制

  • BRENDA API有中等速率限制
  • 推荐:持续使用时每秒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

# 搜索作用于底物的酶
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']}")

# 获取最佳候选者的动力学数据
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]:  # 前3个条目
            print(f"  {entry}")

工作流2:跨生物体酶比较

比较不同生物体间的酶性质:

from scripts.brenda_queries import compare_across_organisms, get_environmental_parameters

# 定义比较生物体
organisms = [
    "Escherichia coli",
    "Saccharomyces cerevisiae",
    "Bacillus subtilis",
    "Thermus thermophilus"
]

# 比较酒精脱氢酶
comparison = compare_across_organisms("1.1.1.1", organisms)

print("Cross-organism comparison:")
for org_data in comparison:
    print(f"
{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")

# 获取详细环境参数
env_params = get_environmental_parameters("1.1.1.1")
print(f"
Overall optimal pH range: {env_params['ph_range']}")

工作流3:酶工程目标识别

查找酶改进的工程机会:

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

# 查找热稳定变体
thermophilic = find_thermophilic_homologs("1.1.1.1", min_temp=50)
print(f"Found {len(thermophilic)} thermophilic variants")

# 查找碱稳定变体
alkaline = find_ph_stable_variants("1.1.1.1", min_ph=8.0)
print(f"Found {len(alkaline)} alkaline-stable variants")

# 比较底物特异性以识别工程目标
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
)

# 查找目标产物的途径
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']}")

# 评估途径可行性
feasibility = calculate_pathway_feasibility(pathway)
print(f"
Pathway 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

# 获取综合动力学数据
ec_number = "1.1.1.1"
km_data = get_km_values(ec_number)

# 分析动力学参数
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")

# 查找最佳动力学性能
best_km = min(all_entries, key=lambda x: x['km_value'])
print(f"
Best kinetic performer:")
print(f"  Organism: {best_km['organism']}")
print(f"  Substrate: {best_km['substrate']}")
print(f"  Km: {best_km['km_value']}")

# 获取建模参数
model_data = get_modeling_parameters(ec_number, substrate=best_km['substrate'])
print(f"
Modeling parameters:")
print(f"  Km: {model_data['km']}")
print(f"  kcat: {model_data['kcat']}")
print(f"  Vmax: {model_data['vmax']}")

# 生成可视化
plot_kinetic_parameters(ec_number)

工作流6:工业酶选择

为工业应用选择酶:

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

# 工业标准:高温度耐受性、有机溶剂抗性
target_enzyme = "1.1.1.1"

# 查找嗜热变体
thermophilic = find_thermophilic_homologs(target_enzyme, min_temp=60)
print(f"Thermophilic candidates: {len(thermophilic)}")

# 检查溶剂耐受性(抑制剂数据)
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)}")

# 评估顶级候选者
for candidate in thermophilic[:3]:
    print(f"
Candidate: {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):
    """从BRENDA数据条目提取特定字段"""
    pattern = f"{field_name}\\*([^#]*)"
    match = re.search(pattern, data)
    return match.group(1) if match else None

def extract_multiple_values(data, field_name):
    """提取字段的多个值"""
    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数据在格式上可能不一致
  • 优雅处理缺失字段
  • 使用前验证解析数据

性能问题

  • 大型查询可能缓慢;限制搜索范围
  • 使用特定生物体或底物过滤器
  • 考虑批量操作的异步处理
  • 监控大型数据集的内存使用

额外资源