RDKit не рисует хлорин

#python #jupyter-notebook #spyder #rdkit

Вопрос:

Я работаю с этой молекулой, найденной в базе данных pdb. https://pubchem.ncbi.nlm.nih.gov/compound/65106

Когда я использую модуль MoltoSMILES, я ничего не получаю взамен, или это кажется непоследовательным. Вот мой код, который я использую в записной книжке Jupyter. Еще одна проблема, с которой я сталкиваюсь, незначительна, но я хотел бы использовать Spyder. Я заметил, что фигура никогда не рисует в Spyder, поэтому я переключился на Jupyter. В любом случае, вот код, и я покажу различные форматы УЛЫБОК, которые я либо нашел, либо сгенерировал:

 #%% Modules
import pandas as pd
from rdkit import Chem
from rdkit.Chem.Draw import IPythonConsole
from rdkit.Chem import Draw
from rdkit.Chem import rdDepictor
from rdkit.Chem import PandasTools
IPythonConsole.ipython_useSVG=True
from rdkit.Chem import rdRGroupDecomposition
from rdkit import RDLogger
RDLogger.DisableLog('rdApp.warning')
import rdkit
print(rdkit.__version__)
#%% Create Chlorin Scaffold

scaffold=Chem.MolFromSmiles('C1CC2=NC1=CC3=CC=C(N3)C=C4C=CC(=N4)C=C5C=CC(=C2)N5')  
scaffold
 

Вывод от Jupyter

Я также попробовал пару других строк СМАЙЛОВ, которые я нашел в базе данных pdb, википедии, и которые я создал с помощью OpenBable. Вот они:

C1CC2=NC1=CC3=CC=C(N3)C=C4C=CC(=N4)C=C5C=CC(=C2)N5

C(N1)(/C=C2N=C(C=C2)/C=C3N/C(C=C3)=C4)=CC=C1/C=C5CCC4=N/5

[nH]1/c/2=CC3=N/C(=Cc4ccc([nH]4)/C=C4/C=CC(=N4)/C=c1/cc2)/C=C3

Ни один из них не возвращает правильный рисунок. Я не знаю, как это исправить. Есть ли предпочтение формату СМАЙЛОВ, которого ожидает RDKit? Я бы упомянул, что связь и атомы правильные, но окончательная форма — это единственное, что неправильно.

Вот изображение того, что я ожидал бы увидеть: Правильное распределение хлорина

Спасибо,

Комментарии:

1. Пожалуйста, добавьте изображение правильной структуры, чтобы мы могли видеть то, что вы ожидаете увидеть.

2. Я добавил правку, чтобы включить это, и теперь это должно быть видно. Спасибо.

Ответ №1:

Позвольте RDKit вычислить 2D-координаты и использовать библиотеку CoordGen.

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

smiles = 'C1CC2=NC1=CC3=CC=C(N3)C=C4C=CC(=N4)C=C5C=CC(=C2)N5'

scaffold = Chem.MolFromSmiles(smiles)

rdDepictor.Compute2DCoords(scaffold)
 

Хлорин

Чтобы использовать Spyder, введите scaffold в консоли после выполнения кода.