Conversión de cadenas SMILES en subcadenas válidas
Tengo una cadena de SONRISAS de la siguiente manera.
smi= 'CCOC(=O)C1=C(COCCN)NC(C)=C(C(=O)OC)C1c1ccccc1Cl'
¿Hay alguna forma de convertir esta cadena SMILES en subcadenas válidas que luego se pueden procesar en RDKIT?
Por ejemplo
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)'
Estas subcadenas deben ser un subconjunto de la cadena principal de SMILES y también deben ser válidas desde el punto de vista de la sintaxis de SMILES .
¿Entonces cuando uso la función MolFromSmiles
, se procesa sin ningún error o ninguno a cambio?
Mol_sub1 = Chem.MolFromSmiles(smi_sub1)
Mol_sub2 = Chem.MolFromSmiles(smi_sub2)
Mol_sub3 = Chem.MolFromSmiles(smi_sub3)
Respuestas
Si bien esto podría funcionar en algunos casos, no estoy seguro de qué tan bien funcionará en general. El problema aquí podría reflejarse en esta declaración:
Estas subcadenas deben ser un subconjunto de la cadena principal SMILES
No todas las subcadenas serán un subgrafo de la molécula madre. Como se menciona en los comentarios, esto parece esencialmente un problema de fragmentación. Toma este uno de tus ejemplos:
smi_sub1 = 'C1c1ccccc1Cl'
La razón por la que esto no analiza es que comienza con un 'C1' pero no tiene un 'C1' correspondiente para terminar el anillo. Entonces debería ser 'Cc1ccccc1Cl', que es 1-cloro-2-metilbenceno.
En teoría, podría tomar subcadenas y luego procesarlas posteriormente para eliminar los números de timbre 'desconectados'. Sin embargo, tendría más sentido usar la fragmentación adecuada en el gráfico molecular, y luego tendría los subgrafos correctos de todos modos, sin la necesidad de convertirlos de SMILES.