👨‍🔬8.2 Reglas de transformación

Introducción:

Un enfoque que puede ayudar a explorar la química en torno a los primeros hits identificados en un proceso de diseño de fármacos es mediante el uso de reglas de transformación obtenidas de forma empírica, o bien, mediante la identificación sistemática usando métodos quimioinformáticos. Este enfoque puede ayudar a superar problemas asociados con las propiedades de los compuestos; e identificar oportunidades para romper patentes mediante la expansión de la química en torno a estos primeros compuestos.

Una ventaja de un enfoque basado en reglas de transformación es que las estructuras generadas tienden a ser más relevantes, debido a que las transformaciones se basan en precedentes históricos. Sin embargo, la diversidad química que se puede explorar puede estar más limitada que un enfoque de novo que utiliza métodos generativos. Esto se debe a que la generación de compuestos mediante reglas de transformación está restringida por la biblioteca de transformaciones a aplicar. Además, no hay garantía de que los compuestos generados puedan sintetizarse fácilmente a partir de reactivos disponibles.

Un aplicación reciente del uso de reglas de transformación se presentó con DrugSpaceX, una base de datos con más de 100 millones de compuestos transformados a partir de moléculas de fármacos aprobadas (Yang et al., 2021).

Si bien, las reglas de transformación son útiles para generar bibliotecas in silico, la lista de reglas actualmente disponibles en el dominio público es limitada, en muchos casos debido a la dificultad para recopilar, curar y anotar dicha información (Rarey et al., 2022).

Algunas reglas de transformación descritas en un contexto de química farmacéutica pueden estar asociadas con mejorar los siguientes parámetros:

  • Propiedades moleculares (forma y conformación, peso molecular, fracción de carbonos con hibridación sp3 (Fsp3), etc.).

  • Parámetros fisicoquímicos (lipofília, solubilidad acuosa, etc.).

  • Parámetros farmacológicos (potencia in vitro, selectividad frente a isoformas, eficacia in vivo, etc.).

  • Parámetros ADME (estabilidad metabólica, inhibición de CYP450, unión a proteínas plasmáticas (PPB, del inglés Plasma Protein Binding), etc.).

  • Parámetros de seguridad y toxicidad (formación de metabolitos reactivos, hepatotoxicidad, mutagenicidad, etc.).

  • Otros parámetros (diversidad estructural, bioisósteros).

La Tabla 1 muestra ejemplos de reglas de transformación recuperadas de la literatura en un contexto de diseño de fármacos. Un compendio más completo de reglas de transformación disponible en la notación lineal SMIRKS puede consultarse en el siguiente enlace:

Para visualizar la aplicación de estas reglas de transformación en el diseño de una biblioteca de compuestos antidiabéticos con potencial actividad multi-target consulte la siguiente referencia: Front. Pharmacol. 14, 1276444.

Tabla 1. Ejemplos de reglas de transformación recuperadas de la literatura.

Grupo
Transformación
Tipo de transformación
SMIRKS
Nota
Referencia

Anilina

Sustitución de anillo

[:3]-#7:2-[c:4]1[c;D2][c;D2][c;D2][c;D2][c;D2]1>>[:3]-#7:2[C:4]12[#6]-#6-[#6]2

-Estabilidad metabólica

-Reemplazo isostérico

Aril amina

Modificación de anillo

[#7H2:1]-[c;D3:2]1[c;D2:6][c;D2:5][c;D3:4][c;D2:3][c;D2]1>>[#7H2:1]-[c;D3:2]1[c;D2:6][c;D2:5][c;D3:4]nn1

-Estabilidad metabólica

Carboxilato

Creación de anillo

[#8;D1]#6;A;!R:2=O>>[*:1]-[#6:2]-1-[#16]-#6-[#7-]-[#6]-1=O |s:0:1|

-pka ácido similar

-Aumento estérico

Fenilo terminal

Cambio de grupo funcional

[:3]-[c;x2D3:1]1[c;x2D2][c;x2D2][c;x2D2][c;x2D2][c;x2D2]1>>[#6]-[#6]-[#6]-[#8][#7]=[#6:1][:3] |rb:1:2,2:2,3:2,4:2,5:2,6:2,s:1:3|

-Reemplazo bioisostérico

-Modulación de la selectividad

Diaril cetonas, diaril metano y diaril ciclobutano

Modificación de linker

[#6;a:1][C;$([#6:2]=O),$([#6;A;@:2]1[#6]-[#6]-[#6]1),$([#6;H2])][#6;a:3] >>[#6;a:3][#6;A@:2]1([#6;a:1])[#6]-[#8:4]-[#6]1

-Reemplazo isostérico

-Estabilidad metabólica

-Reduce la fototoxicidad en las benzofenonas.

Ejercicio

Construir SMIRKS que describan cambios isostéricos del grupo fenil y aplicarlos a un conjunto de compuestos para generar nuevas estructuras químicas. Para saber más de los cambios isostéricos del grupo fenil consulte la referencia: J. Med. Chem. 2021, 64, 19, 14046–14128.

  1. Instalar paqueterías y funciones a utilizar.

!pip install rdkit
import pandas as pd
import rdkit as rk
from rdkit import Chem
from rdkit.Chem import AllChem
from rdkit.Chem import Draw
from rdkit.Chem import PandasTools
from rdkit.Chem import rdMolDescriptors
import ipywidgets as widgets
from google.colab import output
from itertools import chain
  1. Construir los SMARTS que identifiquen correctamente los compuestos a transformar.

El SMARTS definido en la variable pattern identifica anillos fenilos terminales y sustituidos en orto, meta y para. Para practicar la construcción de SMARTS intente construir los SMARTS que identifiquen de forma individual cada opción. Al sustituir este SMARTS en la variable pattern, únicamente se debe resaltar la opción deseada.

#Lista de compuestos para la búsqueda de SMARTS. 
smiles_list = ['C(CC1=CC=CC=C1)C1CCCCC1', 'CC1=CC=CC=C1C1(CC1)NC(=O)C1CC2OCCC2C(F)C1', 'C\C=C\C1(CC1)NC(=O)C1=CC=CC(=C1)C1=C(F)C2=C(OC=C2)C=C1','CC1=CC=C(CNC(=O)NN2CCCCCC2)C=C1', 'CC1CCC2=C(C1)C=CC=C2','CC1=CC=C2C=CC=CC2=C1' ]

#Crear una lista de compuestos en donde se resalte si el SMARTS de consulta está presente.
mol_list = []
for smiles in smiles_list:
  mol = Chem.MolFromSmiles(smiles)
  mol_list.append(mol)
pattern = Chem.MolFromSmarts ('[c;x2]1[c;x2:1][c;x2][c;x2:2][c;x2][c;x2]1') #SMARTS de consulta

img = Draw.MolsToGridImage( mol_list, subImgSize=(300,300), molsPerRow=4, highlightAtomLists=[mol.GetSubstructMatch(pattern) for mol in mol_list], useSVG=True )
img
  1. Construir los Reaction SMARTS o SMIRKS que describan la transformación de un anillo fenilo (terminal y sustituido en orto, meta y para) en un anillo de triazina.

Recuerde que para que se lleve a cabo una transformación química es importante mapear los átomos involucrados en la transformación.

  1. Definir la función para generar los nuevos compuestos.

def to_smiles(mol_tuple):
    return tuple(Chem.MolToSmiles(mol) for mol in mol_tuple)

def from_smiles(smiles_tuple):
    return tuple(Chem.MolFromSmiles(smiles) for smiles in smiles_tuple)

phenyl_to_triazine_smarts = '[c;D2:4]1[c;x2:5][c;x2:6][c;D2:1][c;x2:2][c;D2:3]1>>[c;x2:6]1[c;x2:5][n:4][n:3][c;x2:2][n;x2:1]1'
phenyl_to_triazine = AllChem.ReactionFromSmarts(phenyl_to_triazine_smarts)

all_products_tuples = [phenyl_to_triazine.RunReactants((mol, )) for mol in mol_list]
all_products = chain.from_iterable(all_products_tuples)
all_products_smiles = [to_smiles(mol_tuple) for mol_tuple in all_products]
all_products_unique = [from_smiles(smiles_tuple) for smiles_tuple in set(all_products_smiles)]
nProductSets = len(all_products_unique)
print("Number of unique product sets:",nProductSets)
  1. Dibujar los compuestos generados.

prod_tpl = tuple(chain(*all_products_unique))
img2= Draw.MolsToGridImage(prod_tpl,molsPerRow=phenyl_to_triazine.GetNumProductTemplates())
img2

Para saber más:

Last updated