class: center, middle, inverse, title-slide # Cadenas SMARTS ### JPAG ### Modelación Predictiva ### 2021/05/09 --- # MoleculeNet y SMARTS MoleculeNet es un gran repositoprio para conjuntos de datos útiles en el aprendizaje automático molecular. En <http://moleculenet.ai> se pueden ver datos sobre qué tan bien se desempeña una colección de modelos estándar en cada uno de los conjuntos de datos, lo que brinda información sobre cómo se comparan los propios método con las técnicas establecidas. En muchas aplicaciones quiminformáticas es necesario buscar una cadena de texto en particular, como determinar si los átomos de una molécula coinciden con un patrón particular. Hay varios casos de uso: - Identificar moléculas que contienen una subestructura particular - Alinear un conjunto de moléculas en una subestructura común para mejorar la visualización - Resaltar una subestructura en una gráfica - Restringir una subestructura durante un cálculo SMARTS es una extensión del lenguaje SMILES que se puede utilizar para crear consultas, los patrones SMARTS son similares a las expresiones regulares utilizadas para buscar texto. Se definen moléculas a partir de cadenas SMILES, se muestran esas moléculas y se resaltan los átomos que coinciden con un patrón SMARTS. --- # Las librerías necesarias son: ```ptyhon from rdkit import Chem from rdkit.Chem.Draw import MolsToGridImage ``` Ahora se crea una lista de moléculas a partir de una lista de cadenas de SMILES. ```ptyhon smiles_list = ["CCCCC","CCOCC","CCNCC","CCSCC"] mol_list = [Chem.MolFromSmiles(x) for x in smiles_list] ``` Y se observan qué cadenas de SMILES coinciden con el patrón SMARTS "CCC" ```ptyhon query = Chem.MolFromSmarts("CCC") match_list = [mol.GetSubstructMatch(query) for mol in mol_list] MolsToGridImage(mols=mol_list, molsPerRow=4, highlightAtomLists=match_list) ``` La expresión sólo coincide con la primera estructura ya que las demás no contienen tres carbonos adyacentes. El patrón podría coincidir con la primera molécula con tres átomos de carbono adyacentes comenzando en el primer, segundo o tercer átomo. `RDKit` tiene funciones para devolver todas las coincidencias posibles. --- # Se pueden utilizar caracteres adicionales para hacer coincidir conjuntos específicos de átomos. Al igual que con las búsquedas de texto estándar, el caracter `\(*\)` se puede utilizar para hacer coincidir cualquier átomo, por ejemplo el patrón `"C * C"` coincidirá con un carbono alifático unido a cualquier otro carbono alifático. ```ptyhon query = Chem.MolFromSmarts("C*C") match_list = [mol.GetSubstructMatch(query) for mol in mol_list] MolsToGridImage(mols=mol_list, molsPerRow=4, highlightAtomLists=match_list) ``` La sintaxis de SMARTS se puede ampliar para permitir solo conjuntos específicos de átomos. Por ejemplo, la cadena `"C [C, O, N] C"` coincidirá con el carbono unido a carbono, oxígeno o nitrógeno, que a su vez está unido a otro carbono ```ptyhon query = Chem.MolFromSmarts("C[C,N,O]C") match_list = [mol.GetSubstructMatch(query) for mol in mol_list] MolsToGridImage(mols=mol_list, molsPerRow=4, highlightAtomLists=match_list) ``` En *Daylight Theory Manual*, <http://www.daylight.com/dayhtml/doc/theory/>, se encuentran otras aplicaciones. Por ejemplo, para generar consultas que identifiquen moléculas problemáticas en pruebas biológicas. --- class: inverse, center, middle # Infraestructura de notebooks en Netflix --- Los datos que impulsan Netflix ayudan a descubrir contenido y brindar experiencias personalizadas para 130 millones de miembros en todo el mundo. En ingeniería de datos se podría crear un nuevo agregado de un conjunto de datos que contenga billones de eventos de transmisión con lo que la ingeniería de analítica podría usar ese agregado en un nuevo informe sobre la calidad de transmisión global. Ese informe podría llevar a ciencia de datos/investigación a construir un nuevo modelo de compresión de transmisión. Cada uno de estos flujos de trabajo tiene múltiples tareas superpuestas: - Exploración de datos —ocurre al principio de un proyecto; puede incluir la visualización de datos de muestra, la ejecución de consultas para la elaboración de perfiles estadísticos y el análisis exploratorio, y la visualización de datos. - Preparación de datos —tarea iterativa; puede incluir limpiar, estandarizar, transformar, desnormalizar y agregar datos; típicamente la tarea más intensiva en tiempo de un proyecto. - Validación de datos —tarea recurrente; puede incluir la visualización de datos de muestra, la ejecución de consultas para la elaboración de perfiles estadísticos y el análisis agregado, y la visualización de datos; generalmente ocurre como parte de las fases de exploración, preparación, desarrollo, pre-implementación y post-implementación de datos. --- - Producción —ocurre al final de un proyecto; puede incluir la implementación de código en producción, el reabastecimiento de conjuntos de datos, los modelos de entrenamiento, la validación de datos y la programación de flujos de trabajo La funcionalidad principal que proporciona la manipulación de notebooks: - Un protocolo de mensajería para introspección y ejecución de código que es independiente del idioma. - Un formato de archivo editable para describir y capturar código, salida de código y notas de rebajas. - Una interfaz de usuario basada en web para escribir y ejecutar código de forma interactiva, así como para visualizar resultados. La plataforma de soporte para notebooks ha encontrado una sorprendente cantidad de usos para estas plantillas. Algunas de las más comunes son: - Ciencia de datos: Realizar un experimento con diferentes coeficientes y resumir los resultados. - Ingeniería de datos: Ejecutar una colección de auditorías de calidad de datos como parte del proceso de implementación. --- - Analítica: Compartir consultas y visualizaciones preparadas para permitir que las partes interesadas exploren más profundamente de lo que permite Tableau. - Ingeniería de software: Envíar por correo electrónico los resultados de una secuencia de comandos de solución de problemas cada vez que haya una falla. Las *notebooks* están teniendo un impacto dramático en Netflix, con importantes inversiones en este aspecto. (https://jobs.netflix.com/search?q=notebooks)