使用 RDKit 绘制结构时,原子标签字体大小和环大小没有很好的比例。标签太小或太大或未对齐。
不幸的是,有关这方面的文档很少。我发现了这个: https ://rdkit.org/docs/source/rdkit.Chem.Draw.MolDrawing.html 但我不知道这是否相关以及我将如何将它们放在一起。我缺少简单实用的代码示例。
我也尝试过Draw.MolToQPixmap
,但是我经历了原子标签未对齐的情况,到目前为止,我了解到原因是难以使这个跨平台保持一致并且Draw.MolToPixmap
使用旧的绘图代码。我应该使用 egDraw.MolToImage
代替。但是有类似Draw.MolToFile
的字体大小简直太小了。我不确定这是否也是一个跨平台问题(我在 Win10 上)。因此,解决方案是简单地设置字体大小,但是如何设置呢?
我知道有一个 RDKit 邮件列表,到目前为止我已经问过这个问题而没有答案。在 SO 上,可能有更广泛的受众,我可以附上图片进行说明。
代码:
from rdkit import Chem
from rdkit.Chem import Draw
smiles = ' FC1OC2N3C4[Si]5=C6B7C(C=CC6=CC4=CC2=CC1)C=CC=C7C=C5C=C3'
mol = Chem.MolFromSmiles(smiles)
img = Draw.MolToFile(mol,"Test.png",size=(300,150))
结果:(使用Draw.MolToFile
,对齐没问题,但原子标签太小)
结果:(对于小图片,使用Draw.MolToQPixmap
、未对齐和/或字体太大)
编辑:(在@Oliver Scott 的建议下)
我用相同的字体大小得到了 3 倍的相同输出。我一定是某个地方的愚蠢错误或误解。
代码:
from rdkit.Chem.Draw import rdMolDraw2D
from rdkit import Chem
smiles = 'FC1OC2N3C4[Si]5=C6B7C(C=CC6=CC4=CC2=CC1)C=CC=C7C=C5C=C3'
mol = Chem.MolFromSmiles(smiles)
def drawMyMol(fname, myFontSize):
d = rdMolDraw2D.MolDraw2DCairo(350, 300)
d.SetFontSize(myFontSize)
print(d.FontSize())
d.DrawMolecule(mol)
d.FinishDrawing()
d.WriteDrawingText(fname)
drawMyMol("Test1.png", 6)
drawMyMol("Test2.png", 12)
drawMyMol("Test3.png", 24)
结果:
6.0
12.0
24.0