Le format MDL/Mol est un format très utilisé pour les petites molécules organiques telles que des inhibiteurs ou des ligands. Ce format créé à l’origine par MDL (Molecular Design Limited) est libre de droit et s’applique à des molécules en 2D (formules développées) ou 3D. Il s’agit d’une des plus anciennes spécifications (1995) pour décrire numériquement une molécule, et il se trouve que cette société a été au cœur de la révolution qui à permis à chaque chimiste, biologiste … de disposer d’outils simples et pratiques pour gérer (au sens large) de l’information chimique.
Publication initiale sur buildblog.buidez.net (2013) – Article mis à jour en Décembre 2024.
Navigation dans le guide
Guide [ Formats moléculaires (chimie) ]
1. Une molécule simple
On va reprendre une fois le Triclosan, molécule exemple pour cette série d’articles, ce qui permet d’avoir une idée comparative des différents formats. MDL/Mol n’est pas un format binaire mais purement ASCII, cela veut dire que indépendamment d’un logiciel de chimie, on peut travailler directement le fichier MDL Mol avec un éditeur de texte (par exemple SciTE) ou comme une chaine de caractères avec un langage de programmation. Si nous examinons la déclinaison MDL/Mol du Triclosan, nous allons trouver une organisation en deux blocs, atomes (coordonnées, type) et topologie (connexions entre numéros d’atomes):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Marvin 02141315402D 17 18 0 0 0 0 999 V2000 -3.2116 0.0884 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -3.9261 -0.3241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -3.9261 -1.1491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -3.2116 -1.5616 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -2.4971 -1.1491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -2.4971 -0.3241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.7827 0.0884 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 -1.0682 -0.3241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.3537 0.0884 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -1.0682 -1.1491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.3537 -1.5616 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 0.3607 -1.1491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 0.3607 -0.3241 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 -0.3537 0.9134 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0 1.0752 -1.5616 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0 -3.2116 0.9134 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0 -4.6405 -1.5616 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0 1 2 2 0 0 0 0 1 6 1 0 0 0 0 2 3 1 0 0 0 0 3 4 2 0 0 0 0 4 5 1 0 0 0 0 5 6 2 0 0 0 0 6 7 1 0 0 0 0 7 8 1 0 0 0 0 9 8 2 0 0 0 0 8 10 1 0 0 0 0 9 13 1 0 0 0 0 10 11 2 0 0 0 0 11 12 1 0 0 0 0 12 13 2 0 0 0 0 9 14 1 0 0 0 0 12 15 1 0 0 0 0 1 16 1 0 0 0 0 3 17 1 0 0 0 0 M END |
Sur ce code, la première ligne (vide) avant l’entête n’apparait pas, mais elle est nécessaire, le nombre d’atomes (17) et de liaisons (18) apparait dans la ligne d’entête.
La molécule est donc codée en deux parties: un bloc de coordonnées suivi par un bloc de connectivité/topologie. Dans l’image suivante on a marqué l’atome 1 (en vert) et numéroté les atomes comme dans le fichier précédent. Si on prends le bloc de connectivité, on voit que la première ligne 1 2 2 0 0 0 0 indique que l’atome 1 est connecté avec l’atome 2 et que la connexion correspond à une liaison double (2). La ligne suivante montre que l’atome 1 est connecté par une liaison simple (1) à l’atome 6, etc.
![]() |
Il n’y a pas de numérotation d’atomes dans le bloc de coordonnées cartésiennes (x,y,z). Les atomes sont numérotés par ordre d’apparition. Par exemple la première ligne -3.2116 0.0884 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0 correspond à l’atome numéro 1 dont on a déjà parlé et qui est un atome de carbone (C). La colonne avec la valeur 0.0000 indique qu’il n’y a pas de coordonnées atomique relatives à l’axe z, il s’agit d’une formule développée (molécule plane).
Le fait que les atomes ne soient pas numérotés explicitement dans le bloc de coordonnées, implique d’être attentif sur les fichiers, par exemple si on porte l’atome d’oxygène numéro 7 en première position, cela donnera sous Marvin Sketch:
![]() |
A l’époque la tendance était à la parcimonie dans les formats autant que dans les codes, pour des raisons de taille mémoire, de performances, ou d’idéologie tout simplement: light is right. Ceci dit, le format MDL utilise de manière apparemment inutile, des espaces, lignes vides, colonnes à zéro.
2. Subtilités: exemple de la stéréochimie
L’utilité potentielle de ces colonnes à zéro apparaît lorsque on consulte la spécification du format. Certaines peuvent servir à l’encodage de la stéréochimie. Prenons comme exemple l’arabinose (un sucre) en forme linéaire, et deux de ses 8 stéréoisomères possibles, on aura:
Si nous nous intéressons à la première molécule et à sa table de connectivité, nous considérons que les atomes 3 et 8 (ou 4 et 9) sont liés par une liaison simple au dessus du plan (1, Bold Wedge ou W). Les atomes 5 et 10 sont liés par une liaison simple sous le plan (6, Hash Wedge ou H). On retrouve une information qui est ici, corrélative à la configuration R et S dans le bloc d’atomes. En fait il s’agit d’une information de parité (1, odd, impaire ou 2, even, paire) qui utilise les numéros d’atomes ascendants (3 ou 4 atomes voisins) pour déterminer un sens de rotation. Par exemple, pour l’atome numéro 3 (S) de la première formule de l’arabinose, la parité est de 2 (soit dans le sens inverse des aiguilles d’une montre). Si on compare toujours avec la même référence (atome d’hydrogène du carbone tetrahédral sous le plan) on peut interpréter les valeurs dans le fichier de la manière suivante:
![]() |
Nous constatons donc que nous avons deux systèmes redondants pour définir la stéréochimie dans le même format de fichier. Ce qui posera des problèmes de cohérence à des outils de dessin en cas d’ajout, suppression d’atomes ou de modification de la numérotation. Des parseurs pourront avoir le même type de problème et les informations de stéréochimie devront être régénérées car la numérotation des atomes peut changer en cas d’échanges entre logiciels.
D’ailleurs dans des formats de fichiers plus récents, nous ne trouvons plus ces informations de parité, seulement les informations W/H par rapport aux liaisons. Par exemple le bloc de connectivité (bondArray) de la même molécule d’arabinose, au format MRV (dérivé de CML):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<bondArray> <bond atomRefs2="a1 a2" order="2" /> <bond atomRefs2="a2 a3" order="1" /> <bond atomRefs2="a3 a4" order="1" /> <bond atomRefs2="a4 a5" order="1" /> <bond atomRefs2="a5 a6" order="1" /> <bond atomRefs2="a6 a7" order="1" /> <bond atomRefs2="a3 a8" order="1"> <bondStereo>W</bondStereo> </bond> <bond atomRefs2="a4 a9" order="1"> <bondStereo>W</bondStereo> </bond> <bond atomRefs2="a5 a10" order="1"> <bondStereo>H</bondStereo> </bond> </bondArray> |
D’autres subtilités touchent ce format, qui le rendent parfois difficile à manipuler d’une manière totalement automatisée, on citera en particulier le codage des isomères cis-trans d’une double liaison, ou la manière d’écrire des liaisons délocalisées, plus ou moins bien interprétées selon le parseur. Un ensemble de problèmes qui se retrouvent dans le format SDF qui est dérivé de MDL Mol.
3. Une autre version (V3000) du format
On remarquera la version de format (chaîne V2000) dans une des lignes d’entête. Sous cette déclinaison, le fichier est limité à la description de 1000 atomes et de 1000 liaisons atomiques. En version V3000 (à partir de 2005) le nombre d’atomes est indéfini, mais par contre la syntaxe change, on parle parfois de format MDL Mol étendu. Par exemple, le Triclosan précédent s’écrit maintenant sous la forme:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
Mrv0541 02151322352D 0 0 0 0 0 999 V3000 M V30 BEGIN CTAB M V30 COUNTS 17 18 0 0 0 M V30 BEGIN ATOM M V30 1 C -5.995 0.165 0 0 M V30 2 C -7.3287 -0.605 0 0 M V30 3 C -7.3287 -2.145 0 0 M V30 4 C -5.995 -2.915 0 0 M V30 5 C -4.6613 -2.145 0 0 M V30 6 C -4.6613 -0.605 0 0 M V30 7 O -3.3277 0.165 0 0 M V30 8 C -1.994 -0.605 0 0 M V30 9 C -0.6602 0.165 0 0 M V30 10 C -1.994 -2.145 0 0 M V30 11 C -0.6602 -2.915 0 0 M V30 12 C 0.6733 -2.145 0 0 M V30 13 C 0.6733 -0.605 0 0 M V30 14 O -0.6602 1.705 0 0 M V30 15 Cl 2.007 -2.915 0 0 M V30 16 Cl -5.995 1.705 0 0 M V30 17 Cl -8.6623 -2.915 0 0 M V30 END ATOM M V30 BEGIN BOND M V30 1 2 1 2 M V30 2 1 1 6 M V30 3 1 2 3 M V30 4 2 3 4 M V30 5 1 4 5 M V30 6 2 5 6 M V30 7 1 6 7 M V30 8 1 7 8 M V30 9 2 9 8 M V30 10 1 8 10 M V30 11 1 9 13 M V30 12 2 10 11 M V30 13 1 11 12 M V30 14 2 12 13 M V30 15 1 9 14 M V30 16 1 12 15 M V30 17 1 1 16 M V30 18 1 3 17 M V30 END BOND M V30 END CTAB M END |
Nous voyons apparaitre des délimiteurs de blocs (ATOM, BOND, CTAB) hiérarchisés, une numérotation des atomes dans le bloc ATOM et la disparition de colonnes non utilisées. Ceci dit, si on s’intéresse à la première molécule d’arabinose (section précédente) et à sa stéréochimie, nous aurons le résultat suivant en V3000 (généré par Marvin Sketch):
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
Mrv0541 02151323432D 0 0 0 0 0 999 V3000 M V30 BEGIN CTAB M V30 COUNTS 10 9 0 0 0 M V30 BEGIN ATOM M V30 1 O -4.4758 5.2742 0 0 M V30 2 C -5.2458 3.9405 0 0 M V30 3 C -4.4758 2.6069 0 0 CFG=2 M V30 4 C -5.2458 1.2732 0 0 CFG=1 M V30 5 C -4.4758 -0.0605 0 0 CFG=1 M V30 6 C -5.2458 -1.3942 0 0 M V30 7 O -4.4758 -2.7279 0 0 M V30 8 O -2.9358 2.6069 0 0 M V30 9 O -6.7858 1.2732 0 0 M V30 10 O -2.9358 -0.0605 0 0 M V30 END ATOM M V30 BEGIN BOND M V30 1 2 1 2 M V30 2 1 2 3 M V30 3 1 3 4 M V30 4 1 4 5 M V30 5 1 5 6 M V30 6 1 6 7 M V30 7 1 3 8 CFG=1 M V30 8 1 4 9 CFG=1 M V30 9 1 5 10 CFG=3 M V30 END BOND M V30 END CTAB M END |
Nous constatons que le système dual pour décrire la stéréochimie perdure, ainsi que les colonnes intermédiaires avec des valeurs à zéro dans le bloc de coordonnées atomiques. Malgré ces évolutions, même en 2024, je ne vois que rarement des fichiers MDL Mol en version 3000. Il en résulte que la plupart du temps, le format est utilisé pour de petites molécules, car il est exprimé en version V2000. Donc, inutile de coder une protéine au format MDL/Mol (il vaut mieux utiliser PDB et dérivés ou Sybyl Mol2).
4. Conclusion
Le format MDL/Mol sous cette présentation n’est pas multi-moléculaire, mais avec quelques adaptations (à minima un identifiant de molécule et un séparateur) il le devient sous la forme du format SDF, qui est un format majeur en termes de bibliothèques de molécules et d’échanges de molécules sous forme numérique. L’utilisation de SDF est certainement une raison pour laquelle MDL Mol continue à avoir autant de succès. Alors que (comme SDF) ce format souffre de pas mal de défauts plus ou moins critiques selon la version et la discipline scientifique. Un article (A.M. Clark) cité en référence permet d’avoir une idée sur la question.
Ce qui veut dire qu’il faut toujours contrôler les molécules après un import MDL Mol car en fonction de chaque logiciel, la manière dont certains aspects sont interprétés, peut différer et conduire à des molécules incorrectes. Mais utilisé comme format pivot entre plusieurs logiciels, MDL Mol et SMILES constituent très souvent notre ultima ratio en cas de problèmes avec une molécule.
Un peu d’histoire
J’ai parlé en début d’article de MDL, qui ont été déterminants pour la chemoinformatique. Dans les laboratoires nous trouvions encore au milieu des années 2000 des outils comme ISIS Draw (dessin, libre de droits) ou ISIS Base (base de données), toujours d’origine MDL. Puis des fusions multiples ont brouillé la filiation jusqu’à sa disparition. Les successeurs de ISIS Draw: Symyx Draw, puis après le rachat par Accelrys: Accelrys Draw et Isentris (pour ISIS/Base), puis après le rachat par Dassault Systèmes: Biovia Draw. Bien que cela sorte du cadre de la description d’un format de fichier, la science et la technologie, c’est avant tout une aventure humaine. Donc j’ai gardé quelques références et des documentations (tant qu’elles sont accessibles) d’intérêt historique.
Liens et lectures
- MDL Information Systems [Wikipedia_EN] – http://en.wikipedia.org/wiki/MDL_Information_Systems ].
- ISIS Draw [Wikipedia_EN] – http://en.wikipedia.org/wiki/ISIS/Draw ].
- Symyx technologies [Wikipedia_EN] – http://en.wikipedia.org/wiki/Symyx_Technologies ].
- Update: Il n’y a plus de lien qui décrit ISIS/Base aujourd’hui.
- Chemical Table File [Wikipedia_EN] – http://en.wikipedia.org/wiki/MDL_molfile ].
- JMol Wiki – File Formats/Coordinates – http://wiki.jmol.org/index.php/File_formats/Coordinates ].
- Update: le document original
CTfile Formatsqui décrivait MDL Mol et des formats de la même famille n’est plus disponible (le domaine mdl.com n’existe plus). - DAYCONVERT: A Daylight-Centric Conversion Tool for Chemical Information CTfile formats [ https://www.daylight.com/meetings/mug05/Kappler/ ] qui inclue un lien vers CTFile.pdf [ https://www.daylight.com/meetings/mug05/Kappler/ctfile.pdf ].
- Description of several chemical structure file formats used by computer programs developed at Molecular Design Limited. A. Dalby , J. G. Nourse , W. D. Hounshell , A. K. I. Gushurst , D. L. Grier , B. A. Leland , J. Laufer. J. Chem. Inf. Comput. Sci., 1992, 32 (3), pp 244–255 [ doi: 10.1021/ci00007a012 ].
- Ten Reasons to Adopt the V3000 Molfile Format [ https://depth-first.com/articles/2021/11/17/ten-reasons-to-adopt-the-v3000-molfile-format/ ].
- La formule Light is Right (Colin Chapman) ne pourrait elle pas trouver une application heureuse à l’informatique d’aujourd’hui ? Par exemple, des codes inutilement orientés objet qui traitent des fichiers inutilement structurés face aux enjeux portés par leurs données. En gros, un marteau pilon pour écraser une mouche, mais cela fait fonctionner la bulle. D’autant plus que cela ne signifie pas, pour autant, que cette complexité soit le gage d’une maintenance ou d’une compréhension plus aisée. Je suis persuadé que dans des codes qui fonctionnaient avec très peu de mémoire sur des ordinateurs dépassés, se cachaient des pépites algorithmiques, mais définitivement perdues.




