5.2 Curado de bases de datos
Introducción
En modelado molecular y Quimioinformática se analizan con frecuencia bases de datos moleculares generadas por otros científicos, las cuales pueden contener información equivocada o innecesaria. Por lo tanto, el curado de base de datos de compuestos químicos es importante porque permite verificar la exactitud, consistencia, y reproducibilidad de los datos experimentales reportados, lo cual es crucial para evitar datos erróneos (Fourches D et al., 2016).
El curado de bases de datos consiste en:
Eliminar moléculas repetidas.
Descartar moléculas inorgánicas y organometálicas si éstas no son el objeto de estudio central. Cabe mencionar que la mayoría de los programas de Quiomionformática actuales están desarrollados para procesar moléculas orgánicas pequeñas.
"Lavado" de base de datos: antes de realizar una operación en una base de datos de moléculas, se recomienda aplicar a cada molécula un conjunto de reglas de limpieza tales como la eliminación de sales extrañas o el ajuste de los estados de protonación. Esto con el fin de asegurar que cada estructura estará en forma adecuada para el modelado subsiguiente (por ejemplo, visualización, enumeración de conformación y acoplamiento proteína-ligando).
Optimización de la geometría mediante la minimización de energía: consiste en encontrar un conjunto de coordenadas atómicas que corresponden a un mínimo local de la función de energía molecular. Esto se hace con la aplicación de técnicas de optimización no lineales a gran escala para calcular una conformación (cercana a la geometría de partida), para la cual las fuerzas sobre los átomos son cero. La minimización de la energía es útil para la construcción de la molécula, la determinación de conformaciones de baja energía, la búsqueda conformacional y la preparación para las simulaciones de dinámica molecular y análisis de vibración.
Ejercicio
Para ejemplificar la importancia del curado (es decir, su respectivo pretratamiento) de bases de datos se revisará el siguiente código.
1. Cargar base de datos a Google Colab
Primero, debe asegurarse de que el archivo original se encuentre en su carpeta de trabajo en Google Colaboratory y en formato CSV (delimitado por comas).
2. Instalación de librerías
Para realizar el proceso de curado, el usuario debe asegurarse de contar con las siguientes librerías y métodos.
La librería 'molvs' funciona como una herramienta de estandarización; es decir, otorga la funcionalidad de unificar las representaciones y/o formatos dentro de una base de datos.
Posteriormente, se carga la base de datos al espacio de trabajo.
A continuación, se revisarán los métodos para el curado de esta base de datos en específico.
2.2 Manipulación de información y lavado
En este ejemplo, almacenamos la base de datos en la variable ('data frame') 'BIOFACQUIM'. Mediante esta variable podemos acceder a la información contenida en la base de datos.
Si el usuario desea consultar todas las columnas que integran a la base de datos puede usar la siguiente instrucción:
El usuario debe definir qué partes de la base de datos son funcionales y cuáles no serán empleadas y, por tanto, deben ser eliminadas. En este caso, como primer paso, solo se hará uso de las siguientes columnas y se descartarás el resto: Molecule ChEMBL ID, Smiles, Standard Type, Standard Relation, Standard Value, Standard Units y, finalmente, pChEMBL Value.
Note que la variable donde se almacena la base de datos ('data frame') ahora sólo almacena la información seleccionada. Posteriormente, procedemos a estandarizar todas las notaciones dentro de la base de datos.
El bloque de código anterior permite identificar las funciones necesarias para el proceso de estandarización de las notaciones dentro de la base de datos.
En el siguiente bloque de código se realizarán las instrucciones necesarias para estandarizar cada una de las notaciones SMILES dentro de la base de datos original.
Primero se define una función llamada "pretreatment" la cual trabaja sobre un parámetro "notations"; es decir, esta función tomará cada elemento de notación SMILES dentro de la base de datos orginal y comenzará un proceso de estandarización para obtener una notación SMILES modificada.
Cada función de estandarización trabaja sobre un objeto tipo 'mol' por lo que la primera instrucción es que tome cada parámetro de la función, y a partir de una notación SMILES, pueda convertirlo a un objeto 'mol' para su interpretación. Por el contrario, si el parámetro no cuenta con esta representación, entonces la función regresa un "error". Si no fuese el caso, entonces la función procede a aplicar las instrucción de estandarización "STD" y "LFC" (véase el bloque de código llamado métodos de estandarización para información sobre las funciones específicas de cada método).
Una vez que la función ejecuta los métodos "STD" y "LFC", se define un diccionario con los elementos que están permitidos para que, posteriormente, se pueda obtener el conjunto de átomos actual dentro de la base de datos original y, hasta entonces, realizar una comparación entre el conjunto "permitido" y el "actual/real".
Para llevar a cabo esta comparación, iteramos sobre el conjunto real de átomos dentro de la base de datos con la instrucción "mol.GetAtoms". Finalmente, comparamos si el conjunto actual es igual al real donde, en caso de ser cierto, entonces se ejecután los métodos de estandarización "UC" y "RI".
Como paso final, ejecutamos la instrucción "RemoveStereochemistry" para poder aplicar el método de estandarización "TC".
Con estas líneas de código, tenemos un bloque de función que nos permite analizar cada notación SMILES dentro de la base de datos original.
Finalmente, creamos una nueva columna sobre la base de datos, la cual seŕa el resultado de ejecutar la función que establecimos en el paso anterior para cada notación en la columna "Smiles".
Sin embargo, aún no hemos finalizado el pretratamiento de la base de datos. Recordemos que al implementar la función "pretreatment" nos puede llevar a dos posibles errores "Error 1" y "Error 2"; los cuales se encuentran almecados en la nueva columna que el usuario acaba de agregar a la base de datos. Dichos errores deben ser removidos de la base de datos.
Esto puede realizarse mediante las siguientes líneas de código:
Para eliminar compuestos duplicados se utiliza la siguiente linea de código:
Si nuestra base de datos tiene celdas o valores vacíos, tendrán la leyenda (NaN). Utilizando la función dropna, se pueden eliminar los valores vacíos de la base de datos.
Finalmente, el usuario ahora cuenta con la base de datos pre-tratada y lista para poder hacer cálculos y/o cualquier tipo de análisis.
Para saber más:
Bento A, Hersey A, Félix E, Landrum G, Gaulton A, Atkinson F, Bellis L, Veij M, Leach A (2020) An open source chemical structure curation pipeline using RDKit. J Cheminform 12:51.
Fourches D, Muratov E, Tropsha A (2016) Trust, but verify II: A practical guide to chemogenomics data curation. J Chem Inf Model. 56:1243-52.
Saldívar González FI, Chávez Ponce de León DE, López López E, Francisco Hernández L, Lira Rocha A, Medina Franco JL (2028) Manual de Quimioinformática. 2a edición. Universidad Nacional Autónoma de México. pp 18-26.
Sánchez-Cruz N, Pilón-Jiménez BA, Medina-Franco JL (2020) Functional group and diversity analysis of BIOFACQUIM: A Mexican natural product database. F1000Research 8:2071.
Last updated