Преобразовать список строк смайлов ['x', 'y', 'z'] в файлы mol или блоки mol MDL с помощью RDKit
Я сгенерировал список строк смайлов и определил их как "результат"
Я хотел бы преобразовать каждую строку SMILES в списке в отдельные файлы mol, используя RDKit. Мой текущий код такой:
m = Chem.MolFromSmiles('result')
print(Chem.MolToMolBlock(m))
Этот скрипт не работает и возвращает:
ArgumentError: Типы аргументов Python в rdkit.Chem.rdmolfiles.MolToMolBlock(NoneType) не соответствуют сигнатуре C++: MolToMolBlock(RDKit::ROMol mol, bool includeStereo=True, int confId=-1, bool kekulize=True, bool forceV3000)
Как мне исправить это?
Спасибо!
1 ответ
Вы преобразовали строку 'result' в объект MD RDKit. И это не могло быть преобразовано в Молблок. Имена переменных не являются строками, поэтому не используйте их с кавычками.
Сначала вы должны преобразовать УЛЫБКИ один за другим в мол объекты.
from rdkit import Chem
result = ['C', 'CC', 'CCC']
mo = [Chem.MolFromSmiles(r) for r in result]
Затем вы можете распечатать Molblocks один за другим.
for m in mo:
print(Chem.MolToMolBlock(m))
Это даст вам это:
RDKit 2D
1 0 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
M END
RDKit 2D
2 1 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.2990 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
M END
RDKit 2D
3 2 0 0 0 0 0 0 0 0999 V2000
0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1.2990 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
2.5981 -0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0
1 2 1 0
2 3 1 0
M END