Formats moléculaires: CML et dérivés

Le format CML (Chemical Markup Language) est un dérivé du XML, donc une approche qui utilise des balises (tags) pour délimiter des blocs de données hiérarchisés. Cela ne veut pas forcément dire que toute la molécule est traduite en arbre, très souvent lorsque une molécule est enregistrée sous ce type de format, il reste des blocs sérialisés, donc des tables à l’intérieur d’un arbre. Ce qui, finalement, limite l’impact de ce type de formats.

Publication initiale sur buildblog.buidez.net (2014) – Article mis à jour en Décembre 2024.

Navigation dans le guide

Guide [ Formats moléculaires (chimie) ]




1. Un premier exemple

Afin de visualiser une molécule au format CML on peut utiliser Chemaxon Marvin (sketcher) pour dessiner une molécule de Triclosan puis sauver la structure au format MRV:

Les numéros en bleu correspondent aux numéros d’atomes dans la molécule. Le format MRV (ChemAxon Marvin) est natif de l’application et correspond à une déclinaison du CML.
Si nous affichons la structure dans un éditeur de texte nous constaterons la présence de différents blocs de données, qui sont inclus dans un bloc molécule, lui même inclus dans d’autres blocs de niveaux supérieurs:

Nous distinguons un bloc de coordonnées moléculaires <atomArray> organisé sous la forme d’une table: une colonne par atome, et une ligne pour un identificateur d’atome (a1, a2 …), une ligne pour l’élément (C, O, Cl), une ligne pour les coordonnées en x, et une autre pour les coordonnées en y, il n’y a pas de coordonnées en z, la molécule étant strictement plane.
Nous distinguons aussi un bloc <bondArray> de topologie ou connectivité, il décrit les liaisons chimiques, c’est à dire quel atome (identificateur défini au bloc précédent) est lié avec un autre, et l’ordre de la liaison (liaison simple, double, aromaticité, etc).

2. CML vs. MRV

La molécule est englobée dans un tag <cml>, mais il peut y avoir des différences avec d’autres déclinaisons. Si l’on sauve la même molécule au format CML et non MRV, nous aurons:

Dans ce cas la lecture du bloc <bondArray> est beaucoup plus simple: <bond atomRefs2="a1 a2" order="2" /> signifie que l’atome 1 est connecté avec l’atome 2 avec une liaison covalente d’ordre 2 (double liaison). Ce qui se vérifie sur la formule développée en début de l’article.

3. Avec deux molécules ?

CML est en principe multi-moléculaire puisque le format est hiérarchisé: nous avons un bloc <molecule>. Prenons le cas de ces deux molécules, que l’on dessine (Marvin Sketch) dans la même feuille :

Si nous sauvons en CML les molécules vont être ajoutées l’une après l’autre, mais sans séparation particulière, par exemple le bloc <atomArray> va passer de 17 à 39 atomes et rester unique (extraits) :

Nous voyons la fin du triclosan avec l’oxygène et les trois chlore (ids a14 à a17) puis le début de l’autre molécule. Le cas étant plus compliqué en MRV qu’en CML à cause de la structure de la table <atomArray>. Si nous sauvons le fichier en SDF nous avons le même problème, par exemple (extraits) :

Avec Sybyl MOL2 c’est le même comportement, mais dans ce dernier cas on aura l’avantage d’avoir une marque de fragment (fragment1 et fragment2) :

Ce qui montre que c’est plus un problème de formats que d’application, Marvin sait très bien qu’il y a deux molécules. Au passage, un copier coller au format SMILES est sans ambiguïté, le point est bien présent pour séparer les deux molécules :

OC1=C(OC2=CC=C(Cl)C=C2Cl)C=CC(Cl)=C1.CCCCCCCCN1C=C(N=N1)C(=O)CC1=CC=CC=C1

C’est souvent le problème que nous avons avec nos collègues chimistes habitués à dessiner des molécules au format ChemDraw (CDX) sur une feuille (par exemple pour écrire des réactions) puis nous envoient ces données (qui devront donc être reprises). Une approche chemo-informatique associée à une collecte de données devra tenir compte cette problématique, il faudra communiquer et réfléchir à la meilleure manière de limiter le travail (inutile) pour chaque partie. Sans recette précise, car cela dépendra du contexte, mais avec l’éclairage amené par une bonne connaissance des formats.

4. Conclusion

Dans mon contexte CML est très peu utilisé, par contre comme le format MRV qui est natif des applications ChemAxon, nous l’utilisation parfois comme master s’il y a des problématiques telles que (symétries, radicaux, charges, délocalisations … Un master est une copie de la molécule qui est stockée en tant que référence afin d’être réutilisée pour régénérer une structure si celle ci au fur et à mesure des manipulations s’est dégradée et pose des problèmes (difficultés de chargement dans un logiciel, atomes ou liaisons aberrantes, etc). Reste à bien nommer le master si on a beaucoup de molécules sous forme de fichiers individuels, ce qui nous ramènera invariablement à quelques questions posées dans l’article [ Des noms de molécules ] sur ce blog.

Liens et lectures
Retour en haut