Unità 2 / 11

Rappresentazione molecolare e struttura chimica: validazione con SMILES, InChI e RDKit

Guadagni:

  • Capacità di identificare le molecole non per nome ma per rappresentazione della struttura (SMILES con umani, InChI/InChIKey con database)
  • Capacità di rilevare strutture non valide o errate analizzando, convalidando e canonicalizzando ogni SORRISI fornito dall'intelligenza artificiale con RDKit
  • Essere in grado di comprendere che le quantità deterministiche come il peso molecolare e la formula dovrebbero essere ottenute dallo strumento basato su regole, non dal modello linguistico.

La prima condizione per utilizzare in sicurezza l’intelligenza artificiale in chimica è scrivere la molecola in un linguaggio che sia la macchina che l’uomo possano comprendere. Dici "fenolo", l'intelligenza artificiale ha ragione; ma quando dici "acido" ci sono migliaia di possibilità. I nomi sono ambigui; le rappresentazioni della struttura sono precise. In questa unità impareremo le due notazioni base che traducono la molecola in testo (SMILES e InChI) e lo strumento che le verifica deterministicamente (RDKit). Il nostro obiettivo: fornire la molecola all'intelligenza artificiale in un modo che non possa mai essere fraintesa e confermare la struttura prodotta dall'intelligenza artificiale con uno strumento.

Cos'è SORRISI?

SMILES (Simplified Molecular-Input Line-Entry System) è un formato per scrivere una molecola in una singola riga di testo. Gli atomi sono rappresentati da lettere, i legami da simboli e gli anelli da numeri. Esempi:

  • Etanolo: CCO (carbonio-carbonio-ossigeno; idrogeni impliciti).
  • Benzene: c1ccccc1 (la "c" minuscola indica il carbonio aromatico; 1 chiude l'anello).
  • Aspirina: CC(=O)Oc1ccccc1C(=O)O.
  • Caffeina: Cn1cnc2c1c(=O)n(C)c(=O)n2C.

Il potere di SMILES è che trasporta l'intera struttura dei collegamenti in un'unica riga; Il suo punto debole è che la stessa molecola può avere più SORRISI validi (questo si chiama non canonicità). Risolveremo questo problema con RDKit tra un attimo.

Suggerimento: il "SORRISO canonico" per una molecola è l'ortografia standard singola per quella molecola. Per vedere se due SORRISI sono la stessa molecola, canonicalizzarli e confrontarli; Non dovrebbero essere uguali testualmente, ma dovrebbero essere molecole uguali.

Cos'è l'InChI?

InChI (International Chemical Identifier) ​​è un identificatore standard sviluppato da IUPAC. La differenza rispetto a SMILES è che la stessa molecola dà sempre lo stesso InChI; cioè, è di natura canonica. È lungo e difficile da leggere, ma è ideale per la corrispondenza del database. Per la ricerca viene utilizzato l'abbreviato "InChIKey" (digest di 27 caratteri).

  • Aspirina InChIKey: BSYNRYMUTXBXSQ-UHFFFAOYSA-N.

Regola: le persone parlano SORRISI (leggi), le macchine e i database corrispondono a InChI/InChIKey (esatto). Regala SORRISI all'IA; Confermare nel database con InChIKey.

RDKit: motore di verifica deterministica

RDKit è una libreria chimicoinformatica open source. A differenza del modello linguistico, è basato su regole: analizza SMILES, calcola il peso molecolare, genera SMILES canonici, restituisce InChI/InChIKey, disegna la molecola. Quindi RDKit "calcola" ciò che "prevede" l'intelligenza artificiale. Questo è il cuore del flusso di lavoro: l'intelligenza artificiale genera, RDKit verifica.

Un flusso di verifica di base:

from rdkit import Chemfrom rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("Formula molecolare:", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("Peso molecolare:", round(Descrittori.MolWt(mol), 2), "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))

Se MolFromSmiles restituisce None, l'IA ti ha fornito una molecola non valida; Questo da solo è un avvertimento molto prezioso. Se valido, non è più necessario chiedere al modello linguistico il peso molecolare; È nelle tue mani in modo deterministico.

Passo dopo passo: interoperabilità AI + RDKit

  1. Identifica la molecola: dai il nome all'IA, chiedi SORRISI. Ad esempio, "verifica SMILES canonici per paracetamolo".
  2. Verifica: analizza gli SMILES in arrivo con MolFromSmiles. Se Nessuno, rifiuta.
  3. Canonicalize: recupera l'ortografia canonica con MolToSmiles; Usalo sempre da ora in poi.
  4. Calcola i numeri: ottieni peso molecolare, formula, numero di anelli, numero di donatori/accettori di legami idrogeno, ecc. da RDKit, non da AI.
  5. ID corretto: genera InChIKey, cerca nel database (PubChem), conferma che la molecola è effettivamente il composto desiderato.

Quattro modelli copiabili

1) Richiesta di SORRISI (dal sostantivo alla struttura):

Compito: Dai i SORRISO canonici per il seguente composto. Composto: paracetamolo (paracetamolo). Regola: fornire solo la stringa SMILES e InChIKey, non aggiungere ulteriori spiegazioni. Se non sei sicuro scrivi "UNSURE", non inventare.

2) Richiesta di validazione SMILES (dalla struttura al controllo):

Esamina gli SMILES di seguito: CC(=O)Nc1ccc(O)cc1Domande:1) È uno SMILES valido?2) A quale composto corrisponde (nome comune)?3) Qual è la formula molecolare?Nota: calcolerò il peso molecolare esatto con RDKit; Dai semplicemente la tua interpretazione della struttura.

3) Confronto tra due rappresentazioni:

Ho due SORRISI:A) OCCB) CCOCompito: sono la stessa molecola o sono diverse? Scrivi il tuo ragionamento. Nota: effettuerò un controllo incrociato della tua risposta canonizzandola in RDKit.

4) Spiegazione della struttura (a fini didattici):

SORRISI: Cn1cnc2c1c(=O)n(C)c(=O)n2CTattività: Leggi questo SORRISI pezzo per pezzo e spiega cosa significa ogni simbolo (atomo, legame, anello, aromaticità) in turco semplice. Indica anche di quale composto si tratta.

Prompt debole / Prompt forte

Debole:

Fornisci le proprietà del paracetamolo.

"Caratteristica" è vaga; L’intelligenza artificiale genera numeri casuali dal peso molecolare al punto di fusione, alcuni dei quali saranno errati.

Forte:

Composto: paracetamolo.1) Canonical SMILES e InChIKey ver.2) Fornire la formula molecolare.Regola: NON DARE valori NUMERICI come peso molecolare, punto di fusione, ecc.; Li otterrò con RDKit/PubChem. Basta fornire l'ID build.

Differenza: abbiamo indirizzato l'IA verso ciò in cui è forte (identità strutturale) e lontano da ciò in cui è debole (numeri sperimentali).

Confronto di impressioni

caratteristica

SORRISI

InChI / InChIKey

Leggibilità

Alto (adatto alle persone)

Basso (adatto alla macchina)

canonicità

Soggetto a modifiche (necessita di canonizzazione)

naturalmente single

Utilizzo

comunicazione umana, disegno, input

Corrispondenza del database, identità

stereochimica

Supporti (@ simboli)

Supporti (stratificati)

dare all’IA

ideale

Ideale per la cresima

mini custodie

Caso 1 – Due nomi, una molecola. Uno studente pensò che "N-acetil-para-amminofenolo" e "paracetamolo" fossero composti diversi e pianificò due esperimenti separati. Quando sono stati canonizzati i loro SORRISI in RDKit, entrambi si sono rivelati CC(=O)Nc1ccc(O)cc1; Era la stessa molecola. Perso: mezza giornata di pianificazione; guadagno: si sarebbe potuto evitare con un controllo di canonicalizzazione di 2 minuti.

Caso 2 — Cattura SMILES non valida. L'IA ha restituito CC(=O)Nc1ccc(O)cc1C( per una variante (parentesi non chiuse). Lo studente ha eseguito MolFromSmiles, ha restituito None, ha immediatamente visto l'errore e ha richiesto SMILES corretti. Senza verifica, la struttura difettosa si sarebbe diffusa a tutti gli account.

Caso 3 — Peso molecolare errato. YZ ha dichiarato "peso molecolare 214,3 g/mol" per l'ibuprofene (C13H18O2). Il calcolo RDKit ha dato 206,28 g/mol. Differenza per 0,1 mol: 21,43 g con YZ, in realtà 20,63 g. Questa differenza del 3,9% interromperebbe la stechiometria e il calcolo della resa. Ha portato il calcolo deterministico.

Errori comuni

  • Dare la molecola per nome. I sinonimi/nomi commerciali sono confusi. Includere sempre SORRISI o InChI.
  • Confrontare i SORRISI senza canonicalizzarlo. OCC e CCO sono diversi nel testo ma uguali nelle molecole.
  • Chiedere il peso molecolare al modello della lingua. Questo è un calcolo deterministico; Viene eseguito da RDKit o manualmente dalla formula.
  • Non notare SORRISI non validi. Non controllare il ritorno di MolFromSmiles None e continuare con la struttura sbagliata.
  • Trascurando la stereochimica. I due enantiomeri (isomeri dell'immagine speculare) possono presentare effetti biologici diversi; Saltare i segni @/@@ in SORRISI.
Attenzione: la stessa formula molecolare non significa molecole diverse. C2H6O è sia etanolo (CCO) che dimetil etere (COC). L'uguaglianza di formula non è l'uguaglianza di identità; Utilizzare InChIKey per l'identificazione.

In sintesi

  • Identifica le molecole in base alla notazione della struttura, non al nome: SMILES con umano, InChI/InChIKey con database.
  • RDKit è deterministico; L'intelligenza artificiale prevede, RDKit calcola e verifica.
  • Analizza ogni AI SMILES con MolFromSmiles e controlla None, quindi canonicalizza.
  • Ottieni numeri come peso molecolare e formula da RDKit, non dal modello linguistico.
  • L'uguaglianza delle formule non significa identità molecolare; Utilizzare InChIKey per l'identificazione.

Compito dell'applicazione

Scegli tre composti (ad esempio caffeina, ibuprofene, glicina). Chiedi all'IA i SORRISI canonici per ciascuno. Quindi scrivi uno script RDKit (usa il modello sopra) e genera: SMILES canonici, formula molecolare, peso molecolare, InChIKey. Quanti dei SORRISI dati dall'AI erano validi? Se YZ ha fornito anche il peso molecolare, calcolare la differenza in percentuale con il valore RDKit. Traccia i risultati in una piccola tabella.

lista di controllo

  • [ ] So cosa sono SMILES e InChI/InChIKey e quando usarli.
  • [ ] Verifico tutti i SORRISI regalati dall'AI con MolFromSmiles.
  • [ ] Canonicalizzo i SORRISI prima di confrontarli.
  • [ ] Ottengo il peso molecolare e la formula da RDKit, non dal modello linguistico.
  • [ ] Confermo l'identità della molecola nel database con InChIKey.
  • [ ] Conosco situazioni in cui la stereochimica è importante.