💻
Quimioinformática
GitHub
  • 📖Quimioinformática aplicada al diseño de fármacos
  • 🔎1. Búsqueda de información química
    • 📑1.1 SciFinder-n
    • 📑1.2 Web of Science
    • 📑1.3 Scopus
    • 📑1.4 CAS Source Index (CASSI)
    • 📑1.5 Herramientas de visualización bibliométrica
  • 🐍2. Introducción a Python, Google Colab y Linux
    • 💻2.1 Fundamentos de programación
    • 🧹2.2 Manejo y limpieza de datos
    • 🐧2.3 Linux
      • 🪟2.3.1 Subsistema de Windows para Linux (WSL)
        • 👩‍💻2.3.1.1 Creación de usuarios
        • 🧑‍💻2.3.1.2 Selección de usuario de inicio por defecto
        • 🐍2.3.1.3 Instalación de Python, pip3 y VSCode desde WSL
        • 🔰2.3.1.4 Instalación de Anaconda desde WSL
        • ⚗️2.3.1.5 RDKit e instalación de ambientes
      • 👩‍✈️2.3.2 Comandos Linux
        • 📂2.3.2.1 Comandos de navegación
        • 💽2.3.2.2 Exploración y manipulación de archivos
    • 📚Recursos y ejercicios
  • 🧑‍🔬3. Representación molecular
    • 💻3.1 SMILES
    • 💻3.2 SMARTS
    • 💻3.3 InChI Keys
    • 📚Recursos y ejercicios
  • 🔎4. Bases de datos moleculares
    • 💊4.1 PubChem
      • 4.1.1 API
    • 💊4.2 ChEMBL
      • 4.2.1 API
    • 💊4.3 DrugBank
    • 💊4.4 ZINC
    • 💊4.5 ChemSpider
    • 📚Recursos y ejercicios
  • 🗃️5. Construcción y curado de bases de datos moleculares
    • 🧱5.1 Construcción de bases de datos
    • 🧹5.2 Curado de bases de datos
    • 📚Recursos y ejercicios
  • 📊6. Análisis y visualización de información química
    • ✍️6.1 Descriptores moleculares
      • 📈6.1.2 Principios para el Análisis de Bases de Datos Moleculares
      • 🔎6.1.3 Caso de estudio
    • ⚛️6.2 Espacio químico
      • 🎨6.2.1 Multiverso químico y "Chemical art gallery"
    • 📊Recursos y ejercicios
  • 🪞7. Similitud química
    • 🔢7.1 Representación molecular
    • 💱7.2 Función de similitud
    • 📉7.3 Estudios cuantitativos de relación estructura-actividad (QSAR)
    • 🏞️7.4 Panorama y acantilados de actividad
    • 📚Recursos y ejercicios
  • ⚗️8. Enumeración de bibliotecas químicas
    • 👩‍🔬8.1 Reacciones químicas
    • 👨‍🔬8.2 Reglas de transformación
    • 📚Recursos y ejercicios
  • 🔐9. Acoplamiento molecular
    • 9.1 LeDock
    • 9.2 AutoDock Vina
      • 📖9.2.1 Tutorial de acoplamiento
Powered by GitBook
On this page
  • Ejercicios:
  • 1. Búsqueda de subestructuras en una lista de moléculas
  • 2. Comparar compuestos
  • Para saber más:
  1. 3. Representación molecular

3.2 SMARTS

Previous3.1 SMILESNext3.3 InChI Keys

Last updated 1 year ago

Los SMARTS son extensiones de los SMILES que incluyen operadores lógicos sobre átomos y enlaces, así como símbolos especiales. Se desarrollaron para especificar patrones estructurales en moléculas y reacciones. Sus principales aplicaciones han sido para la consulta de moléculas con una subestructura particular y para el filtrado de moléculas con subestructuras asociadas con promiscuidad y problemas toxicológicos.

El lenguaje SMARTS proporciona varios símbolos que describen propiedades atómicas y de enlaces más allá de los utilizados en SMILES (símbolo atómico, carga y especificaciones isotópicas) y pueden consultarse en la siguiente página ().

Para ejemplificar este problema, veremos como se puede definir el grupo carbonilo en SMARTS para aumentar la especificidad de los compuestos que recupera.

[CX3]=[OX1] Esta búsqueda nos recuperará compuestos con ácido carboxílico, éster, cetona, aldehído, ácido/éster carbónico, anhídrido, ácido/éster carbámico, haluro de acilo, amida.

[CX3](=[OX1])O Recupera compuestos con éster, ácido carboxílico, ácido carbónico o éster, ácido carbámico o éster anhídrido. No recupera aldehído o cetona.

CX3[OX2H1] únicamente recupera ácidos carboxílicos.

Ejercicios:

1. Búsqueda de subestructuras en una lista de moléculas

El siguiente ejercicio está orientado a buscar la subestructura de spiro-acetal [6,6] en una lista de compuestos. Para ello, el primer paso es definir el SMARTS del spiro-acetal [6,6] y dibujar las moléculas de consulta.

Asegúrese de importar los siguientes módulos y funciones.

from rdkit import Chem
from rdkit.Chem import Draw
from rdkit.Chem.Draw import IPythonConsole

El siguiente código está escrito para resaltar la subestructura del spiro-acetal [6,6] si está presente en las moléculas que se encuentran dentro de la variable smiles_list. El SMARTS para el spiro-acetal [6,6] se encuentra definido en la variable pattern.

smiles_list = ['CC1CCC2(CC3CC(O2)CC=C(C(C(C=CC=C4COC5C4(C(C=C(C5O)C)C(=O)O3)O)C)OC6CC(C(C(O6)C)OC7CC(C(C(O7)C)O)OC)OC)C)OC1C(C)C', 'CC1CCC(=C2C3CC4(CC(C(O4)CCC(C)O)O)OC3CC2=O)O1','CC=CC(=O)CC1CCC(C(O1)CC(=O)NCC(C(C)C(=O)NCCCC2C(CCC3(O2)CCCC(O3)CCC(C)C=C(C)C(C)O)C)O)C', 'CC1=CC23C=C(C(O2)(CC(CCC4(C(O3)C(C1)OC4=O)O)C(=C)C)O)C'] 

mol_list = []
for smiles in smiles_list:
  mol = Chem.MolFromSmiles(smiles)
  mol_list.append(mol)
  
pattern = Chem.MolFromSmarts ('[*]~1~[*]~[*]C2([*]~[*]~[*]~[#6]-[#8]2)[#8]-[#6]~1') #spiroacetal [6,6]

img = Draw.MolsToGridImage( mol_list, subImgSize=(300,300), molsPerRow=2, highlightAtomLists=[ mol.GetSubstructMatch(pattern) for mol in mol_list], useSVG=True )
img

2. Comparar compuestos

  1. Asegurese de importar los siguientes módulos.

from rdkit.Chem import rdFMCS
from rdkit.Chem.Draw import rdDepictor
  1. Para favorecer la visualización de las moléculas a comparar se utiliza el módulo rdDepictor y posteriormente se define el tamaño de la imagen.

rdDepictor.SetPreferCoordGen(True)
IPythonConsole.drawOptions.minFontSize=25
  1. Definir las moléculas a comparar.

mol1 = Chem.MolFromSmiles('CN1CCC23C4C1CC5=C2C(=C(C=C5)O)OC3C(C=C4)O')
mol2 = Chem.MolFromSmiles('CC(=O)OC1C=CC2C3CC4=C5C2(C1OC5=C(C=C4)OC(=O)C)CCN3C')

Draw.MolsToGridImage([mol1, mol2])
  1. Definir la función que resalte las diferencias entre ambas moléculas.

def view_difference(mol1, mol2):
    mcs = rdFMCS.FindMCS([mol1,mol2])
    mcs_mol = Chem.MolFromSmarts(mcs.smartsString)
    match1 = mol1.GetSubstructMatch(mcs_mol)
    target_atm1 = []
    for atom in mol1.GetAtoms():
        if atom.GetIdx() not in match1:
            target_atm1.append(atom.GetIdx())
    match2 = mol2.GetSubstructMatch(mcs_mol)
    target_atm2 = []
    for atom in mol2.GetAtoms():
        if atom.GetIdx() not in match2:
            target_atm2.append(atom.GetIdx())
    return Draw.MolsToGridImage([mol1, mol2],highlightAtomLists=[target_atm1, target_atm2])
view_difference(mol1,mol2)

Para saber más:

Debido a que las representaciones de patrones químicos son relativamente nuevas, la cantidad de interfaces donde el usuario puede crear patrones gráficamente es limitada. Ejemplos de editores para manejar la notación SMARTS son , , SMARTeditor y el editor web .

Otro problema que se presenta al escribir SMARTS, es que muchos de los patrones que se escriben coinciden con moléculas adicionales (falsos positivos) y pueden pasar por alto otras (falsos negativos). Los falsos positivos son un problema particular cuando se aplican transformaciones (p. ej. ) a moléculas coincidentes, ya que pueden dar como resultado estados exóticos de valencia y carga que no fueron intencionados.

Para los siguientes ejercicios utilizaremos MarvinSketch y para construir SMARTS. Puedes solicitar tu licencia académica de MarvinSketch en el siguiente link: .

También pueden visualizarse o editar los SMARTS dentro de .

Nota: Para leer más sobre el papel biológico de los acetales bicíclicos, consulte la siguiente referencia .

Comparar compuestos resulta útil para el análisis de análogos estructurales y en el proceso de optimización de fármacos. Para saber más sobre el tema puede consultar la siguiente referencia: .

Lenci E, Menchi G, Saldívar-Gonzalez FI, Medina-Franco JL, Trabocchi A. Org. Biomol. Chem., 2019,17, 1037-1052

SMARTS . Fecha de acceso: Noviembre 2023.

🧑‍🔬
💻
MarvinSketch
JSME
PubChem's Sketcher
SMIRKS
SMARTSPlus
https://chemaxon.com/marvin
SMARTS Plus
Org. Biomol. Chem., 2019, 17, 1037–1052
ACS Omega 2019, 4, 1, 1027–1032
Bicyclic acetals: biological relevance, scaffold analysis, and applications in diversity-oriented synthesis.
https://www.daylight.com/dayhtml/doc/theory/theory.smarts.html
https://www.daylight.com/dayhtml/doc/theory/theory.smarts.html
SMARTS del spiro-acetal [6,6]