Une formule développée peut être exprimée sous une forme simple (en apparence) basée sur une chaine de caractères. Les lettres correspondant aux atomes sont ordonnancées d’une manière particulière pour conserver l’information topologique définissant la formule développée de la molécule. Il s’agit d’une manière d’écrire un graphe qui peut être ramifié et comporter des cycles. Dans cette catégorie de formats on trouve SMILES et InChI. Les autres formats spécifient des coordonnées atomiques (les nœuds du graphe) et une table de connexion explicite entre chaque nœuds (atomes).
Publication initiale sur buildblog.buidez.net (2013) – Article mis à jour en Mai 2026.
Navigation dans le guide
Guide [ Formats moléculaires (chimie) ]
1. Un cas concret
En SMILES, le cyclohexane va s’écrire ‘C1CCCCC1’ et le benzène ‘c1ccccc1’ dans les deux cas on reconnait un cycle a 6 carbones avec 2 carbones de connexion (C1 ou c1), l’aromaticité du benzène s’écrivant avec des minuscules par rapport au cycle saturé du cyclohexane. Si on a choisi de dessiner le benzène avec les doubles liaisons, la chaine SMILES sera encore différente: ‘C1=CC=CC=C1’.
![]() |
Prenons le cas du Triclosan, les mêmes options se présenteront en fonction de l’écriture de la molécule, donc du graphe qui va être transformé en SMILES, on obtiendra les chaines suivantes.
![]() |
Nous pouvons donc produire plusieurs formes valides de SMILES, pour cette raison le SMILES générique est complété par un SMILES canonique (canonical SMILES) qui vise à représenter la molécule sous une forme unique. L’exemple classique est celui de l’éthanol CH3-CH2-OH. On peut l’écrire CCO, mais aussi avec l’oxygène à gauche OCC , ou encore avec l’oxygène affecté à un atome de carbone : C(O)C … la forme canonique sera écrite CCO. Sous sa forme générique, SMILES ne prends pas en compte la chiralité, isotopes, isomères … il existe donc des extensions (ex: isomeric SMILES). Selon l’algorithme utilisé on peut aussi trouver des variantes (OpenEye, CACTUS) incluant ou non la stéréochimie …
2. SMILES et tables de molécules
SMILES étant une chaine de caractères, le format va très bien entrer dans une table de données, par exemple une table CSVM. L’exemple (F. Rodriguez, 2012) suivant montre une table de 80 molécules (P. Hoffmann & coll., 2007, 2009) :
![]() |
Nous constatons la présence de quelques descripteurs (ident, lab, vrac, rprod, rlab) qui sont destinés à identifier les molécules dans une version assez ancienne du format de la chimiothèque nationale. La colonne smi contient la molécule au format SMILES. La colonne molfile contient un pointeur (le nom du fichier correspondant) vers une structure de la même molécule mais au format MDL Mol. Nous pouvons ainsi combiner (ex: pour des raisons de redondance) plusieurs formats dans une même table. L’implémentation de la table au format CSVM donnera:
![]() |
Dans ce cas nous utilisons les tabulations (flèches rouges) comme caractères délimiteurs pour le bloc de données (haut) et métadonnées (bas). Si le fichier est transformé en table SDF, il sera possible d’obtenir l’affichage suivant sous Chemaxon Marvin View:
![]() |
Coté informatique
Les toolkits OpenBabel/Pybel et Rdkit permettent de manipuler les SMILES. Lorsque les molécules sont incluses dans des tables, nous avons généralement une ligne par molécule, une colonne pour la structure (formule développée). Les autres colonnes correspondent souvent à des propriétés et des descripteurs pour chaque molécule. Lorsqu’on utilise des formats pivots comme CSVM qui peuvent embarquer des molécules au format texte SMILES mais aussi MLD Mol, il est possible de prendre en compte toute la table et de l’exporter en CSV ou en SDF. Forcément, les paquetages buildez.chem.pybel_interface et buildez.chem.rdkit_interface comportent les fonctions pour réaliser ce type de conversion. Par exemple les fonctions (du module pybel_interface.pybel_csvm) pybel_extended_csvmfile2mols (opère sur un fichier CSVM) et pybel_extended_csvm2mols (opère sur un objet csvm_ptr) transforment la table de molécules en une liste (Python) d’objets molécules (dans le cas précis Pybel.Molecule) qui incluent des attributs (titre et contenu des autres colonnes). Cette liste pourra être transformée en fichier SDF par la fonction pybel_mols2sdf (du module pybel_interface.pybel_sdf. La fonction pybel_csvm2sdf du module pybel_sdf réalise également directement la conversion CSVM vers SDF sous réserve que le nom de la colonne incluant les structures moléculaires soit connu et compréhensible (mdl, smi, structure …) par la fonction. D’autres fonctions de pybel_interface (ou rdkit_interface) permettent également de sauver les molécules de la table dans des fichiers individuels (par exemple MDL Mol, SMI) ou des images PNG.
3. Fichiers SMILES multi-moléculaires
En principe SMILES est multi-moléculaire mais la manière dont les logiciels vont traiter un fichier peut être différente. Dans un premier temps nous allons prendre un fichier CSV qui reprends les 13 molécules précédentes et possède l’extension .smiles ou l’extension .smi :
![]() |
Les chaines SMILES sont séparées par un caractère de fin de ligne et embarquent des champs d’information, on reconnait le contenu des colonnes ident et vrac de la table précédente. Nous allons charger ces molécules avec différents logiciels, mais d’abord précisons comment nous les chargeons. Nous utilisons la méthode standard, soit: la cascade de menus File > Open. En effet selon la manière dont on fait l’opération (‘drag and drop’, ‘double click’ sur le fichier …) les résultats pourront être différents (par exemple on ne chargera que la première molécule de la bibliothèque SMILES).
Avec les extensions .smiles ou .smi, Marvin Sketch et Marvin View reconnaissent le fichier. Marvin View va charger l’ensemble de la collection moléculaire et Marvin Sketch va demander quelle molécule charger. Marvin Sketch considère par contre qu’il ne s’agit plus d’une table mais d’une planche. Nous le vérifions bien en introduisant l’intervalle ‘1-14’ correspondant à l’ensemble des molécules: toutes les molécules sont dans la planche. Chaque molécule de la planche est éditable individuellement, mais à la sauvegarde dans un format multi-moléculaire, toutes les molécules seront fusionnées sous la forme de n fragments (possiblement consécutifs) de la même molécule, donc on perds une partie de l’information immédiatement accessible dans la table.
Nous remarquerons aussi que MarvinSketch propose 1-14 molécules au lieu de 13 molécules. En fait c’est la dernière ligne (vide) du bloc de données qui est prise en compte car le caractère de fin de ligne est utilisé en tant que séparateur, on le voit également dans le cas de Marvin View, la molécule 14 n’a pas de formule développée.
![]() |
![]() |
![]() |
| MarvinView | MarvinSketch | MarvinSketch |
La première colonne du fichier doit impérativement correspondre aux chaines SMILES, sinon dès la première molécule, il n’y aura pas de reconnaissance des formules. Nous constatons aussi que les valeurs des colonnes sont conservées mais pas le titre des colonnes. Comme il n’est jamais très bon sur le long terme de perdre des métadonnées, on peut tout à fait utiliser la version CSVM (en ajoutant une extension .smiles ou .smi) à la place du fichier CSV:
![]() |
Le fichier sera interprété de la même manière que dans le cas précédent, d’ailleurs les images affichées précédemment correspondent au cas CSVM. Mais dans ce cas, sur du long terme, il n’y a aucune information perdue, un humain ou un programme peuvent en ajouter (manuellement, automatiquement) et le fichier peut être indexé (grâce aux métadonnées). Si nous nous intéressons à un autre logiciel (il y en a peu) capable d’importer ces collections moléculaires, nous pouvons essayer la même manipulation avec Discovery Studio (Accelrys, Biovia, Dassaut 3DS). Dans ce cas il y aura un différentiel en fonction de l’extension (.smi ou .smiles) du fichier CSV ou CSVM. Avec l’extension .smiles , le fichier sera lu comme du texte, avec l’extension .smi , le fichier sera interprété:
![]() |
![]() |
| .smiles | .smi |
De la même manière qu’avec Marvin Sketch ou Marvin View, la première colonne doit correspondre aux chaines SMILES. Les champs sont lus mais également plus ou moins bien interprétés, par exemple la colonne vrac se retrouve associée à la colonne ident dans les noms de molécules. Clairement SDF conserve l’avantage dans le cas de fichiers multimoléculaires incluant des données.
4. Fichiers SMILES incluant des groupes moléculaires
Le fait d’utiliser un . en tant que caractère séparateur produit un groupe. Par exemple si nous exprimons les chaines SMILES de l’exemple précédent sous cette forme, Marvin View et Marvin Sketch les chargeront sous la forme de fragments d’une même molécule, soit une planche (non éditable pour Marvin View) à la place d’une table:
![]() |
![]() |
| Fichier avec 1 groupe | MarvinView |
Nous pouvons exploiter ce résultat pour définir des groupes en combinant ‘.‘ et caractères de fin de ligne.
![]() |
Dans ce cas on va obtenir une planche classique sous Marvin Sketch (pas de groupes) et des groupes correspondant à la combinaison du fichier CSV ou CSVM sous Marvin View, par exemple avec le fichier précédent:
![]() |
Nous constatons la présence d’un caractère # dans une ligne du bloc de données du fichier CSVM. Ce masquage de ligne est tout à fait compatible avec la spécification CSVM, mais il est également compatible avec Marvin View, qui n’a pas pris cette ligne. En effet on constate sur l’affichage de la table qu’il n’y a plus que 5 groupes à la place de 6 groupes et qui explique le fait que le bloc de métadonnées (#TITLE, #HEADER …) de CSVM soit ‘digéré’ sans problèmes par Marvin View.
5. Chaines SMARTS
Quand on parle de SMILES on parle également de SMARTS (Smiles Arbitrary Target Specification). Il s’agit d’un système d’interrogation dérivé de SMILES et disposant d’une syntaxe étendue. Si on dispose d’un outil adéquat on pourra utiliser une chaine SMARTS pour réaliser des requêtes dans une série de chaines SMILES ou … un fichier SDF. Un exemple très simple pour fixer les idées: La commande suivante (OpenBabel en ligne de commande) porte sur 4 molécules (aspirine, acide salicylique, triclosan, éthanol) au format SMILES et recherche avec la chaine c1ccccc1 (option -s) la présence de noyaux aromatiques:
|
1 |
obabel -:"O=C(O)c1ccccc1OC(=O)C aspirin" -:"Oc1ccccc1C(=O)O salicylic acid" -:"OC1=C(OC2=CC=C(Cl)C=C2Cl)C=CC(Cl)=C1 triclosan" -:"CCO ethanol" -ocan -s "c1ccccc1" |
Ce qui nous donnera seulement 3 molécules comme résultat, après conversion en canonical SMILES (option -ocan) puisque la quatrième molécule correspond à de l’éthanol :
|
1 2 3 4 |
CC(=O)Oc1ccccc1C(=O)O aspirin OC(=O)c1ccccc1O salicylic acid Clc1ccc(c(c1)O)Oc1ccc(cc1Cl)Cl triclosan 3 molecules converted |
Poussé assez loin SMARTS permet beaucoup plus que des recherches par structures ou sous-structures. Il permet d’ajouter des descripteurs ou d’en enlever dans des fichiers SDF. L’article [ Pybel – Hack the SD file ] sur le blog de Noel O’Boyle donne une idée en calculant les descripteurs HBD et HBD (par exemple P.D. Leeson & S.A. St-Gallay, 2011) des RO5 (Rule of Five) de Lipinski.
Comme SMARTS est un format texte, plusieurs opérations de filtrage ou de requêtes peuvent être codées … dans un fichier CSVM, éventuellement avec des données supplémentaires (étiquettes, commentaires, annotations …) dans le bloc de données. Par exemple, accoler des étiquettes a des chaines SMARTS permettrait de les intégrer en tant que variables dans des opérations conditionnelles et de diminuer la complexité (donc augmenter la lisibilité) des chaines SMARTS et pour réaliser des requêtes très complexes.
Plus sur SMARTS
- Smiles arbitrary target specification (SMARTS) [ http://en.wikipedia.org/wiki/Smiles_arbitrary_target_specification ].
- SMARTS – A Language for Describing Molecular Patterns [ http://www.daylight.com/dayhtml/doc/theory/theory.smarts.html ].
- SMARTS Tutorial [ http://www.daylight.com/dayhtml_tutorials/languages/smarts/ ].
- Lipinski’s rule of five [ http://en.wikipedia.org/wiki/Lipinski%27s_Rule_of_Five ].
- The influence of the ‘organizational factor’ on compound quality in drug discovery. P.D. Leeson, S.A. St-Gallay. Nature Reviews Drug Discovery (2011) 10, 749-765.
6. Conclusion
Cet article montre quelques subtilités de SMILES, peu évoquées en général dans la littérature, simplement car beaucoup de collègues se focalisent sur les molécules uniques ou les bases de données, mais peu d’entre eux se focalisent sur les collections de données. SMILES malgré ses défauts, en particulier la diversité des graphes possibles, reste une valeur intéressante, car le format reste simple. Associé avec SMARTS, SMILES constitue un écosystème riche et peut expliquer pourquoi le format n’est pas encore délaissé (par exemple au profit de dérivés d’InChI). A noter qu’il existe aussi un langage de spécification de transformations moléculaires: SMIRKS.
Plus sur SMILES
- Simplified Molecular Input Line Entry Specification (SMILES) [ http://fr.wikipedia.org/wiki/Simplified_Molecular_Input_Line_Entry_Specification ].
- Simplified Molecular Input Line Entry Specification (SMILES) [ http://en.wikipedia.org/wiki/Simplified_molecular-input_line-entry_system ].
- SMILES 2. Algorithm for Generation of Unique SMILES Notation. D. Weininger & coll. (1989) J. Chem. Inf. Comput. Sci. 29, 97-101. DOI [ 10.1021/ci00062a008 ].
- A New Effective Algorithm for the Unambiguous Identification of the Stereochemical Characteristics of Compounds During Their Registration in Databases ; T. Cieplak and J.L. Wisniewski (2001) Molecules 6, 915-926. DOI [ 10.3390/61100915 ].
- SMILES – A Simplified Chemical Language [ http://www.daylight.com/dayhtml/doc/theory/theory.smiles.html ].
- SMIRKS – A Reaction Transform Language [ http://www.daylight.com/dayhtml/doc/theory/theory.smirks.html ].
- Versatile Cyclization of Aminoanilino Lactones: Access to Benzotriazoles and Condensed Benzodiazepin-2-thione. L. Hammal & coll. (2007) Synthetic Commun. 37:3, 501-511.
- Synthesis of Imidazoles from Ketimines Using Tosylmethyl Isocyanide (TosMIC) Catalyzed by Bismuth Triflate. M .Fodili & coll. (2009) Lett. Org. Chem. 6, 354-358.
- Technical report: CSVM Ecosystem. F. Rodriguez (2012) [ http://arxiv.org/abs/1209.2946 ].
- ChemAxon Marvin : consulter la page ressources [ Catalogues : logiciels tiers ] sur ce blog.
- Accelrys Discovery Studio [ Wikipedia_EN ] – https://en.wikipedia.org/wiki/Discovery_Studio ].















