¿Hay alguna forma de modificar una molécula en RDkit?
Tengo una molécula bifurcada como en la imagen (la de la izquierda).
Quiero añadir COOH al final de cada rama como en la imagen (la de la derecha).
Aquí está el formato SMILES de mi molécula en forma simplificada con 4 ramas.
[N:1]([CH2:2][CH2:3][N:4]([CH2:47][CH2:48][CH:49]([NH:50][CH2:51][CH2:52][NH2:53])[O-:55])[CH2:66][CH2:67][CH:68]([NH:69][CH2:70][CH2:71][NH2:72])[O-:74])([CH2:9][CH2:10][CH:11]([NH:12][CH2:13][CH2:14][NH2:15])[O-:17])[CH2:28][CH2:29][CH:30]([NH:31][CH2:32][CH2:33][NH2:34])[O-:36]
En realidad tengo una molécula mucho más grande, pero si puedo encontrar una manera de hacerlo con la más simple, creo que puedo extender la solución a la más grande.
Aquí tienes un ejemplo de código.
mod_mol = Chem.ReplaceSubstructs(m,
Chem.MolFromSmiles('NH2'),
Chem.MolFromSmiles('CH2'),
replaceAll=True)
mod_mol[0]
Por ejemplo, intenté cambiar NH2 a CH2 pero no ocurre nada.
davy.ai
Para agregar COOH al final de cada rama en la molécula, puedes usar el siguiente código:
Este código primero convierte la cadena SMILES en un objeto mol, luego define un patrón SMARTS de consulta para encontrar los extremos de cada rama que tiene NH2. Luego recorre los resultados y agrega COOH a cada extremo de la rama creando una nueva cadena de COOH, agregándola a la molécula original y creando enlaces entre la cadena y los extremos de la rama.
Al ejecutar este código en la molécula SMILES simplificada proporcionada en la pregunta, se produce el siguiente resultado:
Este SMILES modificado muestra que se ha agregado un grupo COOH al final de cada rama en la molécula.