Como se mencionó anteriormente en la sección introductoria del apartado 7. Similitud química, la similitud en sí misma es subjetiva, puede ser medida y sus resultados pueden ser interpretados de diferentes formas. Uno de los problemas más importantes se encuentra cuando se trata de medir la similitud entre dos compuestos. La complejidad de la tarea depende de la representación molecular que se usa como base para cuantificar la similitud. Con el fin de hacer la comparación entre representaciones moleculares computacionalmente fáciles, se requiere algún nivel de simplificación o abstracción (Cereto-Massagué et al, 2015).
En el área de quimioinformática, las representaciones moleculares comunes son:
Propiedades fisicoquímicas.
Subestructuras y núcleos estructurales base (andamios moleculares o molecular scaffolds).
“Constitucionales” (conteos de átomos, grupos funcionales).
Las huellas digitales moleculares son un tipo de descriptor molecular que codifica la estructura de una molécula en una secuencia de bits de manera que se pueda comparar y analizar computacionalmente (Figura 1).
La mayoría de los métodos usan solamente grafos moleculares en 2D y son llamados huellas digitales 2D. Sin embargo, algunos métodos son capaces de almacenar información en 3D, más notablemente las huellas moleculares farmacofóricas.
Existen varios tipos de huellas digitales, incluyendo huellas digitales basadas en subestructuras, como las "claves MACCS" (MACCS keys), y huellas digitales topológicas, que codifican la topología general o la conectividad de la molécula sin codificar explícitamente subestructuras específicas.
En aspectos generales, las huellas digitales basadas en subestructuras/diccionarios se crean codificando la presencia o ausencia de subestructuras específicas en la molécula, mientras que las huellas digitales topológicas codifican la conectividad o forma general de la molécula.
Las huellas digitales topológicas se pueden subdividir en:
Huellas digitales basadas en rutas, que codifican la presencia o ausencia de rutas particulares en la representación gráfica de la molécula.
Huellas digitales circulares, que codifican la presencia o ausencia de subestructuras circulares o patrones particulares.
Las huellas digitales se utilizan típicamente para calcular la similitud entre dos moléculas. Lo anterior se puede utilizar para identificar moléculas que son estructuralmente similares y que pueden tener una actividad biológica similar, lo que las convierte en posibles candidatos a fármacos. Las puntuaciones de similitud se calculan típicamente comparando las huellas digitales de dos moléculas y calculando una puntuación de similitud.
El uso de huellas digitales moleculares en quimioinformática tiene muchas ventajas, incluyendo la capacidad de representar estructuras moleculares complejas de manera eficiente computacionalmente y la capacidad de comparar grandes bases de datos de moléculas de manera rápida y precisa. Sin embargo, también hay limitaciones en el uso de huellas digitales, como la incapacidad de capturar todos los aspectos de la similitud molecular y el potencial de falsos positivos o falsos negativos en los cálculos de similitud.
En general, las huellas digitales moleculares son una herramienta muy útil en quimioinformática que se utilizan ampliamente en el descubrimiento de fármacos, ciencias de materiales y otras áreas de investigación. La elección del tipo de huella digital dependerá de la aplicación específica y las propiedades de las moléculas que se estén analizando.
1.1 Basadas en diccionarios (substructure or dictionary based)
Las firmas basadas en subestructuras se generan mediante la codificación de la presencia o ausencia de una característica o subestructuras específicas en una molécula de una lista dada de claves estructurales (es independiente de la molécula). Esto implica definir un conjunto de subestructuras o fragmentos moleculares que se consideran importantes o relevantes para una aplicación específica y, luego, generar una firma binaria que codifique sí cada una de estas subestructuras está presente o ausente en la molécula. Huellas digítales moleculares basadas en subestructuras más comunes son:
MACCS keys (Molecular ACCes System) keys. Viene en dos variantes de diferente longitud de bits, una con 960 y otra con 166 claves estructurales basadas en patrones SMARTS. La más corta es la más comúnmente usada debido a su longitud relativamente corta pero cubre la mayor parte de las características químicas de interés para el descubrimiento de fármacos y cribado virtual. Además, diversos softwares son capaces de calcularlos, lo cual no es cierto para la versión larga. A continuación, un ejemplo de código en el cual se establece el uso de MACCS keys.
#Librerias a emplear:!pip install rdkitfrom rdkit import Chem, DataStructsfrom rdkit.Chem import MACCSkeys# Definir las moléculasms = [Chem.MolFromSmiles('CCOC'), Chem.MolFromSmiles('CCO'), Chem.MolFromSmiles('COC')]# Generar las MACCS Keys para cada moléculafps = [MACCSkeys.GenMACCSKeys(x)for x in ms]# Convertir las MACCS Keys en una representación legiblefor i, fp inenumerate(fps):print(f"Huella molecular de Molecula {i+1}:")print(fp.ToBitString())
Resultado:
Huella molecular de Molécula 1:
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000010000000000000001000011000000000010000000000000000000000100010101001000100
Huella molecular de Molécula 2:
00000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000001000010000000000000000000000001000000000000010101001000100
Huella molecular de Molécula 3:
00000000000000000000000000000000000000000000000000000000000000000000000000100000000000100000010000000000000000000000000000000010000000000000000000000100000001001000100
PubChem. Cuenta con 881 claves estructurales. Son empleados por PubChem para la búsqueda por similitud y por vecinos. Está implementado en ChemFP y en CDK.
A continuación, un ejemplo de código en el cual se establece el uso de las huellas moleculares de PubChem.
#Librerias a emplear:!pip install PubChemPyimport pubchempy as pcp# Nombre o identificador del compuesto que deseas buscarcompound_name ="aspirin"# Realiza la búsqueda en PubChemcompounds = pcp.get_compounds(compound_name, 'name')if compounds:# Obtiene el primer resultado (puede haber múltiples resultados) compound = compounds[0]# Obtiene la huella digital de PubChem fingerprint = compound.fingerprintprint(f"Nombre del compuesto: {compound.synonyms[0]}")print(f"Huella molecular de PubChem: {fingerprint}")else:print(f"No se encontraron resultados para '{compound_name}'.")
Resultado:
Nombre del compuesto: aspirin
Huella molecular de PubChem: 00000371C0703800000000000000000000000000000000000000300000000000000000010000001A00000800000C04809800320E80000600880220D208000208002420000888010608C80C273684351A827B60A5E01108B98788C8208E00000000000800000000000000100000000000000000
BCI (Bristol Chemoinformatics Library Fingerprint). Pueden ser generados usando diferentes números de bits y puede ser modificado por el usuario de diversas maneras pero el diccionario estándar de subestructuras incluye 1052 claves. Solo está disponible en el paquete de herramientas de BCI.
TGD y TGT (Typed-Graph Distance;Typed-Graph Triangles). Estas huellas moleculares son de dos y tres puntos farmacofóricos calculados de un grafo molecular en 2D y consisten en, respectivamente, 735 y 13,824 bits. TGD codifica descriptores por pares de átomos usando siete características atómicas y distancias arriba de 15 enlaces. TGT codifica tripletes de cuatro átomos usando tres distancias graficas divididas en seis rangos de distancias. Ambos están disponibles en el softwareMOE.
1.2 Topológicas o basadas en rutas (topological fingerprints, path-based)
Las firmas topológicas se generan mediante la codificación de la conectividad o forma general de una molécula, sin codificar explícitamente subestructuras específicas (dependiente de la molécula). Trabajan al analizar todos los fragmentos de la molécula siguiendo un camino (usualmente lineal) hasta un cierto número de enlaces, y después combinar cada una de estas rutas (secuencias de átomos o enlaces) para crear la huella molecular. Lo anterior significa que cualquier molécula puede producir una huella molecular significativa y su longitud puede ser ajustada. Son usados comúnmente para realizar una búsqueda veloz y un filtrado por subestructuras. Se debe tomar en cuenta que un solo bit no se puede rastrear hasta una característica determinada y un bit determinado puede estar configurado por más de una característica diferente (colisión de bits). La mayoría de los softwares implementan estas huellas digítales moleculares o basadas en ellas. Daylight es el ejemplo más común de este tipo de huellas moleculares.
A continuación, un ejemplo de código en el cual se establece el uso de las huellas moleculares topológicas.
# Crear una molécula a partir de un SMILESsmiles = aspirin_smilesmol = Chem.MolFromSmiles(smiles)if mol isnotNone:# Generar la huella molecular topológica (Morgan fingerprint) radius =2# Radio de búsqueda ajustable topological_fp = AllChem.GetHashedTopologicalTorsionFingerprintAsBitVect(mol)# Convertir la huella molecular en una lista de bits activos topological_fp_bits =list(topological_fp.GetOnBits())print(f"Lista de bits activos: {topological_fp_bits}")print(f"Huella topológica:{topological_fp.ToBitString()}")else:print("No se pudo crear una molécula a partir del SMILES proporcionado.")
Las firmas circulares también pertenecen al tipo topológico, sin embargo son un tanto diferentes ya que estas no se centran en la búsqueda de rutas, sino en el ambiente de cada átomo hasta un determinado radio. No son adecuados para búsquedas por subestructura pero si para búsquedas de similitud estructural completa.
Molprint2D. Codifica los ambientes de átomos para cada átomo de la tabla de conectividad molecular, están representados por cadenas de texto de tamaño variable. Esta huella molecular está disponible en diferentes softwares, tales como Open Bable y JCompoundMapper.
Conectividad extendida (ECFP; Extended-Connectivity Fingerprints). La huella molecular circular basada en el algoritmo de Morgan es la estándar, la cual fue diseñada específicamente para su uso en modelado de estructura-actividad. Representan el vecindario atómico circular y produce una huella molecular de longitud variable. Son usadas comúnmente considerando un diámetro de 4 Å (ECFP4) y 6 Å (ECFP6). Varios softwares calculan estas huellas moleculares: Pipeline Pilot, Chemaxon’s JChem, CDK y RDKit.
A continuación, un ejemplo de código en el cual se establece el uso de las huellas moleculares circulares.
#Librerias a emplear:from rdkit import Chemfrom rdkit.Chem import AllChem# Crear una molécula a partir de un SMILESsmiles ='CC(C)(C)NCC(C1=CC(=C(C=C1)O)CO)O'mol = Chem.MolFromSmiles(smiles)if mol isnotNone:# Generar la huella molecular ECFP4 (con radio 2) ecfp4_fingerprint = AllChem.GetMorganFingerprintAsBitVect(mol, radius=2, nBits=2048)# Generar la huella molecular ECFP6 (con radio 3) ecfp6_fingerprint = AllChem.GetMorganFingerprintAsBitVect(mol, radius=3, nBits=2048)# Convertir las huellas digitales en representaciones legibles ecfp4_fingerprint_bits =list(ecfp4_fingerprint.GetOnBits()) ecfp6_fingerprint_bits =list(ecfp6_fingerprint.GetOnBits())print(f"Huella molecular ECFP4:{ecfp4_fingerprint.ToBitString()}")print(f"Huella molecular ECFP6:{ecfp6_fingerprint.ToBitString()}")else: prNo se pudo crear una molécula a partir del SMILES proporcionado.")
De clase funcional (FCFP; Functional-Class Fingerprints). Son una variante de los ECFP, solo que más abstractos y que en lugar de indexar un átomo particular en el ambiente, indexan el rol del átomo. Así que diferentes átomos o grupos con la misma o similar función no son distinguibles por la huella molecular. Lo anterior les permite ser usado como huellas moleculares farmacofóricas. La mayoría de los softwares que soportan ECFP también soportan esta variante.
#Librerias a emplear:from rdkit import Chemfrom rdkit.Chem import AllChem# Crear una molécula a partir de un SMILESsmiles ='CC(C)(C)NCC(C1=CC(=C(C=C1)O)CO)O'mol = Chem.MolFromSmiles(smiles)if mol isnotNone:# Configurar parámetros para la huella digital FCFP radius =2# Radio ajustable use_features =True# Indexación del rol del átomo# Generar la huella digital FCFP fcfp_fingerprint = AllChem.GetMorganFingerprintAsBitVect(mol, radius=radius, useFeatures=use_features, nBits=2048)# Convertir la huella digital en una representación legible fcfp_fingerprint_bits =list(fcfp_fingerprint.GetOnBits())print(f"Huella molecular ECFP4: {fcfp_fingerprint.ToBitString()}")else:print("No se pudo crear una molécula a partir del SMILES proporcionado.")
Combinan los mismos bits de cadena establecidos utilizando diferentes enfoques.
UNITY 2D. Tienen una longitud de 988-bits y se basa en claves estructurales y fragmentos de rutas de conectividad
MP-MFP. Tiene una longitud de 171-bits con 110 bits derivados de claves estructurales y 61 bits establecidos a partir de descriptores de propiedad.
1.4 Farmacofóricas
Un farmacoforo representa las características relevantes e interacciones necesarias para que una molécula sea activa en contra de un blanco dado. En este sentido, esta huella codifica la información para las carácteristicas que una molécula presenta de una lista de opciones, de forma similar a las huellas moleculares basadas en subestructuras pero tomando en cuenta la distancia entre estás características, usualmente clasificándolas empleando una lista de rangos de distancias. Información 3D puede ser codificada en esta huella.
Lo descrito anteriormente está ejemplificado y desarrollado en Python en el repositorio disponible en la sección Recursos y ejercicios.