Unité 2 / 11

Représentation moléculaire et structure chimique : validation avec SMILES, InChI et RDKit

Gains :

  • Capacité à identifier des molécules non pas par leur nom mais par leur représentation structurelle (SMILES avec des humains, InChI/InChIKey avec base de données)
  • Capacité à détecter les structures invalides ou incorrectes en analysant, validant et canonisant chaque SMILES donné par l'intelligence artificielle avec RDKit
  • Être capable de comprendre que les quantités déterministes telles que le poids moléculaire et la formule doivent être obtenues à partir de l'outil basé sur des règles, et non à partir du modèle de langage.

La première condition pour utiliser l’IA en toute sécurité en chimie est d’écrire la molécule dans un langage compréhensible à la fois par la machine et par l’humain. Vous dites « phénol », l’IA a raison ; mais quand on dit "acide" il y a des milliers de possibilités. Les noms sont ambigus ; les représentations de la structure sont précises. Dans cette unité, nous apprendrons les deux notations de base qui traduisent la molécule en texte (SMILES et InChI) et l'outil qui les vérifie de manière déterministe (RDKit). Notre objectif : remettre la molécule à l’IA d’une manière qu’elle ne se méprendra jamais, et confirmer la structure produite par l’IA avec un outil.

Qu'est-ce que SMILES ?

SMILES (Simplified Molecular-Input Line-Entry System) est un format d'écriture d'une molécule sur une seule ligne de texte. Les atomes sont représentés par des lettres, les liens par des symboles et les anneaux par des chiffres. Exemples :

  • Éthanol : CCO (carbone-carbone-oxygène ; hydrogènes implicites).
  • Benzène : c1ccccc1 (le « c » minuscule indique le carbone aromatique ; les 1 ferment le cycle).
  • Aspirine : CC(=O)Oc1ccccc1C(=O)O.
  • Caféine : Cn1cnc2c1c(=O)n(C)c(=O)n2C.

La puissance de SMILES est qu’il transporte toute la structure des liens sur une seule ligne ; Sa faiblesse est qu’une même molécule peut avoir plusieurs SMILES valides (c’est ce qu’on appelle la non-canonicité). Nous allons résoudre ce problème avec RDKit dans un instant.

Astuce : Les « SOURIRES canoniques » pour une molécule sont l'orthographe unique et standard de cette molécule. Pour voir si deux SOURIRES sont la même molécule, canonisez-les et comparez-les ; Ils ne devraient pas être égaux textuellement, mais ils devraient être des molécules égales.

Qu’est-ce qu’InChI ?

InChI (International Chemical Identifier) ​​​​​​est un identifiant standard développé par l'IUPAC. La différence avec SMILES est que la même molécule donne toujours le même InChI ; c'est-à-dire qu'il est de nature canonique. Il est long et difficile à lire, mais il est idéal pour la mise en correspondance de bases de données. L'abréviation « InChIKey » (résumé de 27 caractères) est utilisée pour la recherche.

  • Aspirine InChIKey : BSYNRYMUTXBXSQ-UHFFFAOYSA-N.

Règle : les gens parlent des SMILES (lu), les machines et les bases de données correspondent à InChI/InChIKey (exactement). Donnez des SOURIRES à l'IA ; Confirmez dans la base de données avec InChIKey.

RDKit : moteur de vérification déterministe

RDKit est une bibliothèque chemininformatique open source. Contrairement au modèle de langage, il est basé sur des règles : analyse SMILES, calcule le poids moléculaire, génère des SMILES canoniques, renvoie InChI/InChIKey, dessine la molécule. Ainsi, RDKit "calcule" ce que l'IA "prédit". C'est le cœur du workflow : l'IA génère, RDKit vérifie.

Un flux de vérification de base :

from rdkit import Chemfrom rdkit.Chem import Descriptors, Drawsmiles = "CC(=O)Oc1ccccc1C(=O)O" Chem.MolToSmiles(mol)) print("Formule moléculaire :", Chem.rdMolDescriptors.CalcMolFormula(mol)) print("Poids moléculaire :", round(Descriptors.MolWt(mol), 2), "g/mol") print("InChIKey:", Chem.MolToInchiKey(mol))

Si MolFromSmiles renvoie Aucun, l'IA vous a donné une molécule invalide ; Cela constitue à lui seul un avertissement très précieux. S'il est valide, vous n'avez plus besoin de demander au modèle de langage le poids moléculaire ; C’est entre vos mains de manière déterministe.

Pas à pas : interopération AI + RDKit

  1. Identifiez la molécule : donnez le nom à l'IA, demandez des SOURIRES. Par exemple, « vérifiez les SMILES canoniques pour le paracétamol ».
  2. Vérifier : analysez les SMILES entrants avec MolFromSmiles. Si aucun, rejetez.
  3. Canonicaliser : récupérez l'orthographe canonique avec MolToSmiles ; Utilisez-le toujours à partir de maintenant.
  4. Calculer des nombres : obtenez le poids moléculaire, la formule, le nombre d'anneaux, le nombre de donneurs/accepteurs de liaisons hydrogène, etc. à partir de RDKit, pas à partir de l'IA.
  5. Fix ID : générez InChIKey, recherchez dans la base de données (PubChem), confirmez que la molécule est bien le composé souhaité.

Quatre modèles copiables

1) Demander des SMILES (du nom à la structure) :

Tâche : Donnez les SOURIRES canoniques pour le composé suivant. Composé : paracétamol (acétaminophène). Règle : donnez uniquement la chaîne SMILES et InChIKey, n'ajoutez aucune autre explication. Si vous n'êtes pas sûr, écrivez « INSURE », ne vous inventez pas.

2) Demande de validation SMILES (de la structure au contrôle) :

Examinez les SMILES ci-dessous : CC(=O)Nc1ccc(O)cc1Questions :1) Est-ce un SMILES valide ?2) À quel composé correspond-il (nom commun) ?3) Quelle est la formule moléculaire ?Remarque : je calculerai le poids moléculaire exact avec RDKit ; Vous donnez simplement votre interprétation de la structure.

3) Comparer deux représentations :

J'ai deux SMILES :A) OCCB) CCOTâche : S'agit-il de la même molécule ou d'une molécule différente ? Écrivez votre raisonnement. Remarque : je vérifierai votre réponse en la canonisant dans RDKit.

4) Explication de la structure (à des fins d'apprentissage) :

SOURIRES : Cn1cnc2c1c(=O)n(C)c(=O)n2CTâche : Lisez ce SMILES morceau par morceau et expliquez la signification de chaque symbole (atome, liaison, anneau, spice) en turc simple. Dites également de quel composé il s’agit.

Invite faible/Invite forte

Faible :

Donnez les propriétés de l’acétaminophène.

« Fonctionnalité » est vague ; L’IA génère des nombres aléatoires allant du poids moléculaire au point de fusion, dont certains seront erronés.

Fort :

Composé : acétaminophène.1) SMILES canoniques et InChIKey ver.2) Donner la formule moléculaire. Règle : NE PAS DONNER de valeurs NUMÉRIQUES telles que le poids moléculaire, le point de fusion, etc. ; Je les obtiendrai avec RDKit/PubChem. Donnez simplement l'ID de build.

Différence : Nous avons orienté l’IA vers ce pour quoi elle est forte (identité de structure) et loin de ce pour quoi elle est faible (nombres expérimentaux).

Comparaison des impressions

fonctionnalité

SOURIRES

InChI / InChIKey

Lisibilité

Élevé (amical pour les gens)

Faible (compatible avec la machine)

canonicité

Sous réserve de changement (nécessite une canonisation)

naturellement célibataire

Utilisation

communication humaine, dessin, saisie

Correspondance de base de données, identité

stéréochimie

Supports (@ symboles)

Supports (en couches)

donner à l'IA

idéal

Idéal pour confirmation

mini-cas

Cas 1 — Deux noms, une molécule. Un étudiant pensait que le « N-acétyl-para-aminophénol » et le « paracétamol » étaient des composés différents et a planifié deux expériences distinctes. Lors de la canonisation de leurs SMILES dans RDKit, ils se sont tous deux révélés être CC(=O)Nc1ccc(O)cc1 ; C'était la même molécule. Perdu : une demi-journée de planification ; gain : aurait pu être évité avec une vérification de canonisation de 2 minutes.

Cas 2 — Capture de SMILES invalide. L'IA a renvoyé CC(=O)Nc1ccc(O)cc1C( pour une variante (crochets non fermés). L'étudiant a exécuté MolFromSmiles, il a renvoyé Aucun, a immédiatement vu l'erreur et a demandé des SMILES corrigés. Sans vérification, la structure défectueuse se serait propagée à tous les comptes.

Cas 3 — Poids moléculaire incorrect. YZ a indiqué « poids moléculaire 214,3 g/mol » pour l'ibuprofène (C13H18O2). Le calcul RDKit a donné 206,28 g/mol. Différence pour 0,1 mol : 21,43 g avec YZ, en réalité 20,63 g. Cette différence de 3,9% perturberait la stœchiométrie et le calcul du rendement. Cela a apporté le calcul déterministe.

Erreurs courantes

  • Donner la molécule par son nom. Les synonymes/noms commerciaux sont confus. Incluez toujours SMILES ou InChI.
  • Comparer les SMILES sans le canoniser. OCC et CCO sont différents dans le texte mais identiques dans les molécules.
  • Demander le poids moléculaire au modèle de langue. Il s'agit d'un calcul déterministe ; Cela se fait depuis RDKit ou manuellement depuis la formule.
  • Ne pas remarquer des SOURIRES invalides. Ne pas vérifier le retour de MolFromSmiles None et continuer avec la mauvaise structure.
  • Négliger la stéréochimie. Les deux énantiomères (isomères d’image miroir) peuvent présenter des effets biologiques différents ; Sauter les signes @/@@ dans SMILES.
Attention : Une même formule moléculaire ne signifie pas des molécules différentes. C2H6O est à la fois de l'éthanol (CCO) et de l'éther diméthylique (COC). L'égalité de formule n'est pas l'égalité d'identité ; Utilisez InChIKey pour l’identification.

En résumé

  • Identifiez les molécules par notation de structure, et non par nom : SMILES avec humain, InChI/InChIKey avec base de données.
  • RDKit est déterministe ; L'IA prédit, RDKit calcule et vérifie.
  • Analysez chaque AI SMILES avec MolFromSmiles et vérifiez Aucun, puis canonisez.
  • Obtenez des chiffres tels que le poids moléculaire et la formule à partir de RDKit, et non à partir du modèle de langage.
  • L'égalité des formules ne signifie pas l'identité moléculaire ; Utilisez InChIKey pour l’identification.

Tâche de candidature

Choisissez trois composés (par exemple caféine, ibuprofène, glycine). Demandez à l'IA des SOURIRES canoniques pour chacun. Ensuite, écrivez un script RDKit (utilisez le modèle ci-dessus) et générez : SMILES canoniques, formule moléculaire, poids moléculaire, InChIKey. Combien de SMILES donnés par l’IA étaient valides ? Si YZ a également donné le poids moléculaire, calculez la différence en pourcentage avec la valeur RDKit. Tracez vos découvertes dans un petit tableau.

liste de contrôle

  • [ ] Je sais ce que sont SMILES et InChI/InChIKey et quand les utiliser.
  • [ ] Je vérifie chaque SMILES donné par l'IA avec MolFromSmiles.
  • [ ] Je canonise les SMILES avant de les comparer.
  • [ ] Je reçois le poids moléculaire et la formule de RDKit, pas du modèle de langage.
  • [ ] Je confirme l'identité de la molécule dans la base de données avec InChIKey.
  • [ ] Je connais des situations où la stéréochimie est importante.