使用 zeep 访问 BRENDA 时出现神秘错误

Mysterious error when accessing BRENDA with zeep

我正在尝试使用 SOAP 从 BRENDA 获取所有人类 Kcat 和 KM(我猜技术上是 Python3)。我使用了这段代码,它遵循给出的示例代码 here:

from zeep import Client
import hashlib

wsdl = "https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl"
password = hashlib.sha256("password".encode("utf-8")).hexdigest()
client = Client(wsdl)
parameters = (
    "email@email.com",
    password,
    "organism*Homo sapiens"
)
resultString = client.service.getKcatKmValue(*parameters)

它给了我错误 "Missing element organism (getKcatKmValue.organism)"

我不清楚我做错了什么。任何见解将不胜感激。

如果你运行这个命令检查methods/operations的定义: python -mzeep https://www.brenda-enzymes.org/soap/brenda_zeep.wsdl

可以看到getKcatKmValue的定义如下:

getKcatKmValue(email: xsd:string, password: xsd:string, ecNumber: xsd:string, organism: xsd:string, kcatKmValue: xsd:string, kcatKmValueMaximum: xsd:string, substrate: xsd:string, commentary: xsd:string, ligandStructureId: xsd:string, literature: xsd:string) -> return: ns0:ArrayOfKcatKmValues

因此必须提供所有这些参数,而您没有传入这些参数 parameters 因此出现错误。

a dict 也可以传递给操作,以便更好地了解传递的参数,如下所示:

parameters = {
    'email': "email@email.com",
    'password': password,
    'ecNumber': ecNumber,
    'organism': "organism*Homo sapiens",
    'kcatKmValue': kcatKmValue,
    'kcatKmValueMaximum': kcatKmValueMaximum,
    'substrate': substrate,
    'commentary': commentary,
    'ligandStructureId': ligandStructureId,
    'literature' : literature
}

# then pass dict as follows:
resultString = client.service.getKcatKmValue(**parameters)

希望这对您有所帮助。