如何禁用 Pybel 中记录的警告?

问题描述 投票:0回答:4

我正在使用 Pybel - OpenBabel API 的 Python 包装器,并且我正在尝试禁用诸如此类的警告:

==============================
*** Open Babel Warning  in ParseComplex
  Illegal aromatic element b-

当从 ChEMBL 获取指纹分子 SMILES

时,我的警告不断发出
python-3.x logging openbabel pybel
4个回答
1
投票

您可以从

OBMessageHandler
模块获取 openbabel 记录器(
openbabel
类)的句柄。诀窍是首先从 pybel 模块访问 openbabel 模块,获取
OBMessageHandler
类,并实例化记录器 (docs):

import pybel

ob_log_handler = pybel.ob.OBMessageHandler()

使用手柄,您可以将

log_level
设置为 0 以禁用 除关键消息之外的所有消息 (docs):

ob_log_handler.SetOutputLevel(0)

您可以使用以下枚举(此处的文档)来选择日志记录级别。默认值为 1,记录所有 警告:

  • 0:严重
  • 1:警告(默认
  • 2:信息
  • 3:审核(当分子被破坏/感知时
  • 4:调试

1
投票

Aelfinn 的答案对我不起作用,但以这种方式访问 SetOutputLevel 却可以:

pybel.ob.obErrorLog.SetOutputLevel(0)


1
投票

如果您想摆脱所有错误消息:

pybel.ob.obErrorLog.StopLogging()

0
投票

我们可以在没有 pybel 的情况下配置 openbabel 的记录器,如下所示:

from openbabel import openbabel
openbabel.obErrorLog.StopLogging()
© www.soinside.com 2019 - 2024. All rights reserved.