0

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

ここに画像の説明を入力

4

3 に答える 3

1

SetPreferCoordGenとを使用できますCompute2DCoords

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem import rdDepictor
rdDepictor.SetPreferCoordGen(True)

smiles = 'FC1OC2N3C4[Si]5=C6B7C(C=CC6=CC4=CC2=CC1)C=CC=C7C=C5C=C3'
mol = Chem.MolFromSmiles(smiles)
rdDepictor.Compute2DCoords(mol)
PILmol = Draw.MolToImage(mol, size=(300,150))

この PIL イメージを取得します

画像

2020.09 では動作しますが、2020.03 ではテストしていません。

于 2020-11-13T16:54:54.160 に答える