Преобразовать список строк смайлов ['x', 'y', 'z'] в файлы mol или блоки mol MDL с помощью RDKit - PullRequest
0 голосов
/ 12 ноября 2018

Я сгенерировал список строк смайлов и определил их как «результат»

Я бы хотел преобразовать каждую строку 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 = False)

Как мне исправить это?

Спасибо!

1 Ответ

0 голосов
/ 12 ноября 2018

Вы преобразовали строку 'result' в объект RDKit mol. И это не могло быть преобразовано в Молблок. Имена переменных не являются строками, поэтому не используйте их с кавычками.

Сначала вы должны преобразовать УЛЫБКИ один за другим в мол. Объекты.

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
...