我有一个 SMILES 格式的分子列表,我正在将其转换为 InChIKey 格式。然而,其中一些正在发出警告。我希望能够生成一个文件,显示在转换每个分子的过程中生成的警告,以便团队成员可以查看它们。是否可以以编程方式捕获这些消息,而不仅仅是记录它们?
说明我希望能够做什么的片段:
import pybel
smiles = pybel.readfile('smi', 'smiles.txt')
converted = []
for mol in smiles:
smiles_str = mol.write('smiles')
inchikey_str = mol.write('inchikey')
warnings = None # Is there something I can do here to capture the warnings?
converted.append((smiles_str, inchikey_str, warnings))
在研究了许多来源(例如chemistry、github和stackoverflow)之后,我还没有找到一种方法将代码添加到现有脚本中,以便将
pybel
警告重定向到日志文件。
不过,我可以通过使用 script
为您提供一个可能的解决方案。通过修改您的代码:
import pybel
smiles = pybel.readfile('smi', 'smiles.txt')
converted = []
for mol in smiles:
print(mol)
smiles_str = mol.write('smiles')
inchikey_str = mol.write('inchikey')
使用命令运行:
script -c "python smiles2sdf.py" log.txt
它将在执行过程中将终端上显示的所有内容输出到log.txt。此功能使我们谨慎选择屏幕上显示的内容。
有关此套件的更多信息位于此处。