Почему заменяет subsubstructs () всегда заменяет последний атом C?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему заменяет subsubstructs () всегда заменяет последний атом C?

Сообщение Anonymous »

Я пытаюсь использовать функцию replaseSubstructs () для объединения двух улыбок, заменив атом углерода (C) в первой молукуле второй молекулой. Однако, независимо от того, какой C_OPTIONS я выбираю, RDKIT всегда заменяет первый или последний атом C, и индексы атомов также, кажется, также перетасовывают.from rdkit import Chem

def combine_smile(smile1, smile2, c_options=1):
mol1 = Chem.MolFromSmiles(smile1) mol2 = Chem.MolFromSmiles(smile2)
if mol1 is None or mol2 is None:
raise ValueError("One or both SMILES strings are invalid.")

index_mol1 = mol_with_atom_index(mol1)

combined_mol = Chem.ReplaceSubstructs(index_mol1, Chem.MolFromSmarts("[CH3]"), mol2)[c_options]
combined_smiles = Chem.MolToSmiles(combined_mol)

print(combined_smiles)

def mol_with_atom_index( mol ):
atoms = mol.GetNumAtoms() for idx in range( atoms ): mol.GetAtomWithIdx( idx ).SetProp( 'molAtomMapNumber', str( mol.GetAtomWithIdx( idx ).GetIdx() ) )
return mol

if name == "main":
mol1_smiles = "CC(C)(C)Cl"
mol2_smiles = "CN(C)C"

combine_smile(mol1_smiles, mol2_smiles)
< /code>
output: < /p>
CN(C)C[C:1]([CH3:2])([CH3:3])[Cl:4] # for c_options=0
CN(C)C[C:1]([CH3:0])([CH3:3])[Cl:4] # for c_options=1
CN(C)C[C:1]([CH3:0])([CH3:2])[Cl:4] # for c_options=2
< /code>
желаемый вывод: < /p>
CN(C)C[C:1]([CH3:2])([CH3:3])[Cl:4] # for c_options=0
[CH3:0][C:1](CN(C)C)([CH3:3])[Cl:4] # for c_options=1
[CH3:0][C:1]([CH3:2])(CN(C)C)[Cl:4] # for c_options=2


Подробнее здесь: https://stackoverflow.com/questions/797 ... ast-c-atom
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Почему заменяет subsubstructs () всегда заменяет последний атом C?
    Anonymous » » в форуме Python
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Стандартизированные способы упаковки нескольких значений в один атом
    Anonymous » » в форуме C++
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как мы можем преобразовать этот атом в jotai?
    Anonymous » » в форуме Javascript
    0 Ответы
    9 Просмотры
    Последнее сообщение Anonymous
  • Java `.replace` не заменяет разрывы строк, а `.replaceAll` заменяет. Почему? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    59 Просмотры
    Последнее сообщение Anonymous
  • Python — TimeoutException Traceback (последний вызов — последний)
    Anonymous » » в форуме Python
    0 Ответы
    128 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»