Преобразование строки SMILES в допустимые подстроки
У меня есть строка SMILES, как показано ниже.
smi= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl'
Могу ли я преобразовать эту строку SMILES в действительные подстроки, которые впоследствии можно будет обработать в RDKIT.
Например
smi_sub1= 'C1c1ccccc1Cl'
smi_sub2= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)'
smi_sub3= 'C1=C(COCCN)NC(C)=C(C(=O)OC)'
Эти подстроки должны быть подмножеством основной строки SMILES и также должны быть действительны с точки зрения синтаксиса SMILES .
Чтобы, когда я использую функцию MolFromSmiles
, она обрабатывалась без каких-либо ошибок или вообще без ошибок?
Mol_sub1 = Chem.MolFromSmiles(smi_sub1)
Mol_sub2 = Chem.MolFromSmiles(smi_sub2)
Mol_sub3 = Chem.MolFromSmiles(smi_sub3)
Ответы
Хотя в некоторых случаях это может сработать, я не уверен, насколько хорошо это будет работать в целом. Проблема здесь может быть отражена в этом заявлении:
Эти подстроки должны быть подмножеством основной строки SMILES.
Не каждая подстрока будет подграфом родительской молекулы. Как упоминалось в комментариях, это, по сути, проблема фрагментации. Вот один из ваших примеров:
smi_sub1 = 'C1c1ccccc1Cl'
Причина, по которой он не будет анализироваться, заключается в том, что он начинается с «C1», но не имеет соответствующего «C1» для завершения кольца. Значит, это должен быть Cc1ccccc1Cl, который представляет собой 1-хлор-2-метилбензол.
Теоретически вы можете взять подстроки, а затем обработать их для удаления «отключенных» номеров звонков. Однако было бы разумнее использовать правильную фрагментацию на молекулярном графе, и тогда у вас в любом случае будут правильные подграфы, без необходимости конвертировать их из SMILES.