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
、アラインメントは問題ありませんが、原子ラベルが小さすぎます)
結果:(小さな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