BRENDA 酶学数据库 SOAP API 接入指南:基于 zeep 的动力学参数与酶特性查询实战
2026/9/10 19:38:29 网站建设 项目流程

BRENDA 酶学数据库 SOAP API 接入指南:基于 zeep 的动力学参数与酶特性查询实战

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

BRENDA(BRaunschweig ENzyme DAtabase)是全球最权威的酶功能与酶动力学数据资源库之一。本指南围绕 database-lookup 技能中的 BRENDA 接入文档,系统讲解其 SOAP 接口的鉴权方式、核心方法、field*value参数语法与返回格式,并给出可直接复用的 Python/zeep 调用方案,帮助科研 Agent 与开发者精准检索 Km、kcat、Ki、IC50、最适 pH/温度等酶学数据。

为什么 BRENDA 不能用 REST 思路调用

绝大多数公开生物数据库(如 KEGG、UniProt、PubChem)都提供 RESTful HTTP 接口,使用 WebFetch 或curl加 URL 参数即可访问。但 BRENDA 是一个特例:它只开放 SOAP Web Service,而不是 REST API

这一区别决定了整套调用方式:

  • SOAP 依赖 WSDL(Web Services Description Language)契约描述,客户端需根据 WSDL 动态生成调用代码;
  • 参数不再通过 URL query string 传递,而是以 XML/SOAP 信封形式封装在请求体里;
  • 返回结果不是 JSON,而是一种自定义分隔符拼接的纯文本字符串,需要二次解析。

因此 database-lookup 技能 在 SKILL.md 的受限访问数据库中专门标注:BRENDA 需要免费注册、走 SOAP 而非 REST,并在无账号时建议回退到 KEGG 获取酶/通路数据。数据库选择指南 同样将"酶动力学、催化活性"类查询的主数据库指向 BRENDA、备选指向 KEGG。

技术前提:SOAP 端点与 zeep 依赖

访问 BRENDA 前需准备好两部分环境:

1. WSDL 端点。BRENDA 官方发布的接口契约地址为:

https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl

从命名可以看出,_zeep后缀表明该 WSDL 专门面向 Python 的 zeep 库做了适配。

2. Python 与 zeep 库。由于调用必须发送 SOAP XML 请求并解析响应,而通用 HTTP 抓取工具(WebFetch 等)只能执行 GET、无法承载 SOAP 信封,因此必须编写并运行 Python 脚本。安装依赖:

pip install zeep

zeep 会读取 WSDL 自动生成对应的 service proxy 与数据类型绑定,省去手工构造 SOAP XML 的繁琐过程。仓库内其他 SOAP 类数据库(如 ChEBI)也采用同一模式:ChEBI 的 WSDL 为https://www.ebi.ac.uk/webservices/chebi/2.0/webservice?wsdl,同样需要以 SOAP/XML 方式调用getCompleteEntity等方法获取结构数据。

账号与鉴权机制

BRENDA 对免费用户开放接口,但要求先注册账号。注册地址:

https://www.brenda-enzymes.org/register.php

每次调用都必须携带两组凭证参数:

参数说明
email注册时使用的邮箱地址,明文传递
password密码的SHA-256 哈希值(十六进制字符串),不是明文密码

密码必须先在本地做 SHA-256 哈希。对应的 Python 实现:

import hashlib password_hash = hashlib.sha256("your_password".encode()).hexdigest()

从 database-lookup 的凭证规范 看,调用时还应遵守最小权限原则:只探测当前数据库所需的环境变量、不把密钥值写入日志或溯源信息。BRENDA 免费注册即可获得凭证,与同属受限访问类的 COSMIC(需学术注册 + JWT)不同,它不需要付费许可证。

核心 SOAP 方法一览

所有 BRENDA SOAP 方法的参数签名都遵循同一骨架:先传emailpassword(SHA-256),再传以ecNumber开头的过滤/返回字段串。下面是关联文档中整理的主要方法与数据含义:

方法返回的酶学数据
getKmValue米氏常数 Km
getTurnoverNumber转换数(kcat)
getKcatKmValue催化效率 kcat/Km
getKiValue抑制常数 Ki
getIc50Value半数抑制浓度 IC50
getSpecificActivity比活力
getPhOptimum最适 pH
getTemperatureOptimum最适温度
getSubstrate底物
getProduct产物
getInhibitors抑制剂
getCofactor辅因子
getOrganism来源生物体
getReaction反应方程式
getSequence蛋白质序列
getDisease相关疾病

这些方法覆盖了酶学研究的经典闭环:催化能力(Km、kcat、kcat/Km)、抑制特性(Ki、IC50)、反应条件(pH、温度最适值)、功能注释(底物/产物/辅因子/来源生物体)、序列与疾病关联。若只想快速判断某个 EC 编号对应的通路位置,KEGG 的 enzyme 库(如ec:1.1.1.1)可作为互补的轻量查询入口。

field*value 参数语法

BRENDA 的过滤参数采用fieldName*value的紧凑格式:星号*分隔字段名与取值,字段值为空即表示"返回全部"。该语法与 REST 的?key=value截然不同,拼接时需格外注意。

典型参数示例:

ecNumber*1.1.1.1 # 必填:EC 编号,定位目标酶 organism*Homo sapiens # 可选:按生物体过滤 substrate*ethanol # 可选:按底物过滤 kmValue* # 返回字段(空值=返回全部 kmValue 记录)

理解这套语法的关键在于区分两类参数:

  • 过滤参数ecNumberorganismsubstrate等带具体取值,服务端据此收窄数据集。其中ecNumber是必填项,其余是可选的二次过滤条件;
  • 返回字段参数:如kmValue*literature*,取值留空表示把该字段的全部记录取回(包括对应的文献出处)。

在 Python 中实际传参时,把这些字符串按顺序拼成列表传入 zeep service 方法即可(见下节示例)。

完整 Python 调用示例

关联文档给出了一个查询人源乙醇脱氢酶(EC 1.1.1.1)Km 值的端到端示例,下面将其扩展为带解析与容错的完整脚本:

import hashlib from zeep import Client WSDL = "https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl" # 1. 凭据:email 明文 + 密码 SHA-256 email = "your@email.com" password = hashlib.sha256("your_password".encode()).hexdigest() # 2. 初始化 zeep 客户端(自动解析 WSDL 并绑定方法) client = Client(WSDL) # 3. 调用 getKmValue,过滤/返回字段串按顺序传入 result = client.service.getKmValue( email, password, "ecNumber*1.1.1.1", # 目标酶:乙醇脱氢酶 "organism*Homo sapiens", # 限定人源 "kmValue*", # 返回 Km 字段(空值=全部) "substrate*", # 返回底物字段(空值=全部) "literature*", # 返回文献出处字段 ) # 4. 结果是需要手工解析的分隔符文本 print(result)

若需调用其它方法,只需替换方法名与返回字段:例如查催化效率用getKcatKmValue(..., "kcatKmValue*", "substrate*", "literature*"),查最适 pH 用getPhOptimum(..., "phOptimum*", ...)。建议为每次调用增加超时控制与异常捕获,避免 SOAP 服务无响应时脚本挂死。

从 SKILL.md 关于受限数据库的处理策略 出发,若尚未完成免费注册,应明确告知用户"BRENDA 需要注册凭证,当前以 KEGG 代替"这一回退路径,而不是静默更换数据源。

返回格式:手工解析的分隔符文本

BRENDA 的 SOAP 响应不是结构化的 JSON/XML 记录集,而是单个字符串,内部使用特殊分隔符编码多条记录:

  • !作为记录分隔符(一条数据记录的结束);
  • #*作为字段分隔符(区分记录内的不同字段)。

例如一次 Km 查询可能返回形如:

1.1.1.1#Homo sapiens#ethanol#0.5*2.5#...!

含义需结合 BRENDA 官方字段顺序解析。由于响应是纯文本且字段顺序与请求参数相关,建议在 Python 中按!切分记录、再按#/*切分字段,并对照官方文档确认各位置对应的物理量、单位与文献 ID:

for record in result.split("!"): if not record.strip(): continue fields = [f for f in record.split("#")] print(fields) # 结合 BRENDA 字段约定解析为结构化数据

解析出的每条记录都应保留对应的literature(PubMed 文献号)等溯源信息——这正是 database-lookup 技能的溯源要求:返回结果时必须附带访问日期、端点和参数,并标注计数核对情况。

限速与使用礼仪

BRENDA 官方没有公布硬性速率限制,但每个 SOAP 请求的响应时间通常需要 1~5 秒(协议封装与服务器处理开销较大)。关联文档对此的指导是:保持克制,尊重这个免费学术服务

实际操作中建议:

  • 不要并发轰炸,串行或小批量提交请求;
  • 把同类酶的多组查询合并思路放在应用层(多次调用)而非协议层;
  • 出现超时或空响应时先检查 EC 编号写法(如1.1.1.1大小写/点分隔是否正确)再重试;
  • 大批量酶学数据需求优先考虑官方导出/下载渠道。

作为对照,KEGG 参考文档 给出的建议是每秒几请求并在/get中最多用+拼接 10 个 ID——不同数据库的限速策略差异正体现了 database-lookup 的调用前规划原则:在发起调用前先确认所选 API 的限速与批量策略,并将并发请求数控制在合理上限内。

Agent 调用约定与常见错误排查

在 AI Agent 场景下,BRENDA 与常规数据库的最大不同在于获取方式

  • BRENDA 使用 SOAP 而非 REST,无法用 WebFetch 这类 GET-only 工具直接调用;
  • 正确姿势是编写并执行含 zeep 的 Python 脚本,用 Bash/Shell 运行脚本取结果(关联文档明确建议"Use Bash to run the script rather than WebFetch");
  • 这一处理与 SKILL.md 中 POST-only API 需改用curl的处理思路一脉相承:工具能力(GET 型 WebFetch)决定不了协议,遇到不兼容协议时应切换到脚本/命令行通道。

排错检查清单:

症状排查方向
鉴权失败密码是否正确做了 SHA-256;email是否已注册
参数报错field*value是否严格按星号拼接;ecNumber是否缺失
空结果EC 编号写法、organism 拼写(如Homo sapiens);可换 KEGG 交叉验证
响应难以解析!/#/*三级分隔符拆解,并对照字段顺序约定
超时SOAP 响应 1~5 秒属正常,加大客户端超时并串行重试

小结

BRENDA 是酶动力学与酶功能数据的首选权威来源,其 SOAP 接口虽然不如 REST 直观,但只要掌握三个要点即可稳定接入:注册获取 email + SHA-256 密码作为每次调用的鉴权凭证;用 zeep 解析 WSDL 契约并调用getKmValuegetTurnoverNumber等方法;理解field*value参数语法与!/#/*分隔符返回格式。结合 database-lookup 技能的溯源与可复现规范,即可将 BRENDA 的酶学事实可靠地纳入科研工作流。

【免费下载链接】scientific-agent-skillsTurn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000+ scientists worldwide. 165 ready-to-use validated skills plus 100+ scientific databases covering biology, chemistry, medicine, and drug discovery. Compatible with Cursor, Claude Code, Codex, Pi, Antigravity, and the open Agent Skills standard.项目地址: https://gitcode.com/GitHub_Trending/cl/scientific-agent-skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询