Преобразовать список строк смайлов ['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
Другие вопросы по тегам