#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
Я также попробовал пару других строк СМАЙЛОВ, которые я нашел в базе данных 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
в консоли после выполнения кода.