es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Convertir un conjunto de datos SMILES a un grafo.

Mi idea sería crear un VAE o un GAN capaz de generar nuevas drogas, utilizando grafos como representaciones de mis moléculas. Ahora estoy haciendo la pregunta real:

Comencé el proyecto con un simple Pandas dataframe compuesto por cadenas de SMILES y varias características, como esta:

  • CC(=O)Nc1ccc(O)cc1, peso = 151.16, …
  • CC(=O)Oc1ccccc1C(=O)O, peso = 180, …

¿Es posible convertir las cadenas en un formato de datos de grafo? En caso afirmativo, ¿podrían darme algunas sugerencias sobre cómo hacerlo?

¡Gracias a todos!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible convertir las cadenas de SMILES en un formato de datos de grafo. Hay varios paquetes disponibles en Python que se pueden utilizar para este propósito, como RDKit, OpenBabel y PyGraphviz.

    Un enfoque es utilizar el paquete RDKit en Python. RDKit es una colección de herramientas de química computacional y aprendizaje automático escritas en C++ y Python. Tiene funciones para analizar cadenas de SMILES y generar grafos a partir de ellas.

    Para convertir las cadenas de SMILES en un formato de datos de grafo utilizando RDKit, puedes seguir los siguientes pasos:

    1. Importar los paquetes necesarios:
    from rdkit import Chem
    from rdkit.Chem import Draw
    from rdkit.Chem import AllChem
    
    1. Crear una función para convertir las cadenas de SMILES en un grafo:
    def smiles_to_graph(cadena_smiles):
        molecula = Chem.MolFromSmiles(cadena_smiles)
        Adj = Chem.GetAdjacencyMatrix(molecula)
        grafo = nx.DiGraph(Adj)
        return grafo
    

    Esta función toma una cadena de SMILES como entrada y devuelve un grafo dirigido. Puedes utilizar esta función para convertir todas las cadenas de SMILES en tu dataframe al formato de datos de grafo.

    1. Aplicar la función a las cadenas de SMILES en el dataframe:
    import networkx as nx
    
    df['grafo'] = df['SMILES'].apply(smiles_to_graph)
    

    Este código agrega una nueva columna al dataframe llamada ‘grafo’, que contiene la representación del grafo de cada cadena de SMILES. Luego puedes utilizar estos grafos como entradas para tus modelos VAE o GAN para la generación de fármacos.

    Ten en cuenta que hay muchas formas de convertir las cadenas de SMILES en un formato de datos de grafo, y el método anterior utilizando RDKit es solo un enfoque. Puedes explorar otros paquetes y métodos para encontrar el que funcione mejor para tu caso de uso específico.

Comments are closed.