【问题标题】:How to disable logged warnings in Pybel?如何在 Pybel 中禁用记录的警告?
【发布时间】:2018-10-29 08:53:20
【问题描述】:
我正在使用 Pybel - 一个围绕 OpenBabel API 的 Python 包装器,我正在尝试禁用以下警告:
==============================
*** Open Babel Warning in ParseComplex
Illegal aromatic element b-
当从 ChEMBL
获取指纹分子
SMILES 时,我的警告一直被提出
【问题讨论】:
标签:
python-3.x
logging
openbabel
pybel
【解决方案1】:
您可以从openbabel 模块获取openbabel 记录器(OBMessageHandler 类)的句柄。诀窍是首先从 pybel 模块访问 openbabel 模块,获取 OBMessageHandler 类,然后实例化记录器 (docs):
import pybel
ob_log_handler = pybel.ob.OBMessageHandler()
使用句柄,您可以将log_level 设置为 0 以禁用除关键消息之外的所有消息 (docs):
ob_log_handler.SetOutputLevel(0)
您可以使用以下枚举 (docs here) 来选择您的日志记录级别。默认为 1,记录所有警告:
-
0:严重
-
1:警告(默认)
-
2:信息
-
3:审计(当分子被破坏/感知时)
-
4:调试
【解决方案2】:
Aelfinn 的回答对我不起作用,但以这种方式访问 SetOutputLevel 确实有效:
pybel.ob.obErrorLog.SetOutputLevel(0)
【解决方案3】:
如果你想摆脱所有的错误信息:
pybel.ob.obErrorLog.StopLogging()