【发布时间】:2020-11-13 08:57:12
【问题描述】:
使用 RDKit 绘制结构时,原子标签字体大小和环大小没有很好的比例。标签太小或太大或未对齐。
不幸的是,有关此的文档很少。我找到了这个: https://rdkit.org/docs/source/rdkit.Chem.Draw.MolDrawing.html 但我不知道这是否相关以及我将如何将它们放在一起。我缺少简单实用的代码示例。
我也试过Draw.MolToQPixmap,但在那里我遇到了原子标签错位的情况,到目前为止我了解到原因是难以使这个跨平台一致,而且Draw.MolToPixmap 使用旧的绘图代码。我应该使用例如Draw.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,对齐ok,但原子标签太小)
结果:(使用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
【问题讨论】:
标签: font-size rdkit cheminformatics