Un guide pour la collecte de molécules

Nous allons montrer ici comment réaliser une collecte de molécules, qui s’articule en deux processus: la collecte proprement dite et l’indexation sous la forme d’une table de molécules. Dans l’exemple, la finalité de la collecte est d’alimenter une ou plusieurs chimiothèques, via un processus générique et simplifié pour l’opérateur. Qu’il s’agisse d’un(e) chimiste qui indexe et stocke ses propres molécules ou d’un(e) chimiothécaire (gestionnaire de produits chimiques) qui réalise un acte de valorisation. Nous nous intéressons ici à des molécules originales et non à des produits commerciaux. Dans ce cas, la problématique est différente (inventaire de produits chimiques) puisque chaque molécule est déjà indexée dans un registre: numéro CAS ou CE (EINECS) et chez un fournisseur.

D’après un article publié dans buildblog.buidez.net en 2021 – Mise à jour novembre 2025.

1.  Comprendre le livrable

Prenons l’exemple d’un tableau Excel (image suivante). Ce tableau encode un bloc de 80 produits possibles (plus ou moins complet) qui correspond souvent à l’occupation d’une boite (plaque) de stockage, mais ce n’est pas systématique.
Un service de chemo-informatique va fournir ce type de table prête à remplir (certaines cellules sont préremplies) aux utilisateurs finaux (chimiothécaire, chimistes) qui vont renseigner (et valider) les informations de leur ressort, puis elle sera rendue au service numérique, pour une validation supplémentaire et son export vers un autre processus.

Dans cet exemple, la table n’est pas entièrement remplie, il s’agit d’un document de travail en cours par rapport à un processus particulier (dans la réalité les colonnes CN-BCODE et EVOTEC sont entièrement remplies ou entièrement vides).
Nous constatons que cette table inclue des molécules (une par ligne) et des informations sur ces molécules. La formule des molécules apparait dans deux colonnes: SMILES et Structure (en fait trois si nous prenons en compte la colonne Sel). Si le plugin JChem (ChemAxon) n’est pas installé, seule les colonnes SMILES et Sel peuvent être utilisées.

2. Remplir la table

Cette table inclue différentes colonnes que nous allons décrire, les colonnes qui doivent être impérativement renseignées par les chimistes sont marquées avec un symbole ‘+’.

Colonne S Description
SMILES , Sel + Formule chimique du composé sans son sel (SMILES) et formule chimique du sel éventuel (Sel). Si on ne dispose que de la formule molécule + sel, il est parfois difficile de savoir laquelle est le composé d’intérêt  car certains sels correspondent à des molécules organiques. Les chaines SMILES peuvent être copiées collées à partir d’un éditeur chimique : ChemAxon Marvin Sketch, ChemWindows, ChemDraw, ChemOffice
CID (+) Position du produit s’il est mis en plaque, ici nous avons une lettre (colonne) et un chiffre (ligne), la suite de l’article donnera quelques explications.
Structure (+) Doublon de la colonne SMILES, elle sera utilisée par les outils (ex: ChemAxon JChem pour Excel) qui convertissent la table en fichier SDF. Garder un doublon SMILES/Structure est parfois très utile vous pouvez me croire sur parole.
Duplicates Colonne préremplie à la valeur ‘n.d.’ si deux produits apparaissent être identiques, dans deux (ou plus) tubes différents, les valeurs de chaque ligne sont saisies à la valeur ‘True‘ (évidemment, nous ne transvasons pas dans un même tube deux produits similaires, dont l’un pourrait être dégradé ou moins pur).
Local-ID + Identifiant du produit, que le chimiste utilise pour ses molécules. Très souvent il s’agira de ses initiales et d’un numéro arbitraire. Nous constatons dans le document en cours que le collecteur est en train de travailler (recherche et vérification)  sur les valeurs de cette colonne, certaines cellules (produits 20/C4 et 23/C7) ne sont pas encore remplies.
STOCK + Cette colonne est utilisée pour renseigner la quantité de produit dont nous disposons. Nous reviendrons sur celle valeur à la suite.
Confidence Par définition, nous considérons que le chimiste est sûr(e) de la formule de ses produits, la colonne Confidence est préremplie à la valeur ‘True’. Mais si la personne qui collecte et écrit les formules développées n’est pas la même que celle qui a réalisé les composés ou n’a pas accès au cahier de laboratoire … cette colonne est très utile pour marquer une anomalie. D’ailleurs nous voyons qu’il y a un problème avec le produit 19/C3.
Sel + Cette colonne peut contenir plusieurs molécules, au format SMILES chaque molécule est séparée par un point (par exemple [BH4-].[Na+]).
MW (exact) + Masse moléculaire correspondant à la formule qui est indiquée dans la Colonne SMILES. Il s’agit donc d’une molécule non salée, cette valeur doit être calculée par le ou la chimiste (par exemple, en même temps qu’il ou elle saisit la formule).
Intérêt ? Dans des étapes ultérieures (numériques) du processus, la même valeur sera calculée par un outil de calcul puis comparée à celle ci de manière à faire remonter des anomalies éventuelles.
CN-VRAC Elle peut être remplie (mg) si le chimiste connait la quantité de son produit à fournir pour une autre chimiothèque, la Chimiothèque Nationale (CN), dans ce cas. Cette colonne est distincte de la colonne STOCK.
Material + Description de l’aspect du produit, saisie en utilisant une liste déroulante à choix multiples (image suivante).

Dans tout processus de collecte, il faut œuvrer pour que les opérateurs aient le moins de travail à faire. C’est la meilleure garantie pour que le processus se pérennise au fil du temps et que les erreurs de saisie soient limitées. C’est important, car dans la plupart des laboratoires, ce travail se fait, en plus, de l’activité de synthèse ou de recherche.
Nous constatons donc qu’il n’y a que 6 colonnes à remplir (SMILES, Local-ID, Sel, MW (exact) et Material) auxquelles s’ajoutent la colonne Stock (colonne colorée en vert) dont nous allons parler plus loin.

Colonnes à remplir dans la table Colonne Material

A ce niveau, le chimiste a rempli les informations qui relèvent de sa compétence: formule chimique, nom de la molécule, apparence (la seule chose que l’on lui demande de traiter c’est la masse exacte à partir de la formule saisie). Nous disposons donc de tout ce qui est nécessaire pour réaliser un traitement informatisé sur les molécules de la table.

3. D’autres colonnes ?

Les observateurs attentifs auront noté qu’il y a d’autres colonnes dans la table, telles que No, EVOTEC, CN-BCODE, Correction. Les lignes marquées avec un ‘+’ correspondent à des éléments dépendants d’un processus donné. Par exemple, nous pouvons tout à fait constituer des chimiothèques de sauvegarde dont la finalité n’est pas de fournir des composés à la chimiothèque nationale, dans ce cas la colonne CN-ID n’aura aucun intérêt immédiat.

Colonne P Description
No Indique un numéro d’ordre dans la table. Pas très hightech, mais très utile si deux partenaires d’une collecte sont amenés à échanger au téléphone.
Correction La colonne peut être utilisée pour tracer un suivi dans la collecte, par exemple si nous avons fait des corrections de formules, ou un numéro de version.
CN-BCODE + Indique un numéro de code, correspondant à un code barre qui est affecté au tube contenant le produit. Ce type de tube est destiné à l’envoi vers un partenaire.
ID-CN + Cette colonne peut être présente dans les tables, en général elle n’est pas remplie, car elle correspond à un numéro d’identification du produit qui sera attribué ultérieurement par la chimiothèque nationale. C’est ce numéro qui identifiera officiellement le produit.  Les chimiothèques ne communiquent pas la formule du produit tant qu’un accord de licence (par exemple un MTA, Mutual Transfer Agreement) n’est pas conclu entre partenaires.

Donc dans la table exemple, certains produits sont déjà indexés (20/C4, 21/C5, 22/C6, 23/C7)  et i) nous les avons envoyés chez un prestataire (date); ii) ils étaient dans un tube identifié par un code barre. Pour les autres produits de l’exemple, ils sont indexés, stockés, mais nous ne savons pas encore s’ils vont être envoyés vers une chimiothèque ou un partenaire.
Tous ces renseignements se croisent, est ce que c’est trop ? A mon avis, non, en cas d’indétermination sur un produit, il s’agit d’un bon moyen pour avoir des chances de le retrouver et de l’identifier d’une manière univoque.

4. La quantité de produit

Faut il renseigner la table de collecte avec une pesée exacte ? Tout va dépendre de ce que l’on fait de ces produits et du retour que l’on veut avoir sur l’état des stocks (colonne STOCK dans notre exemple). Tous les gestionnaires de produits chimiques constatent qu’il est relativement facile de constituer des stocks, mais cela l’est moins quand il faut maintenir les informations, à jour, en fonction des prélèvements.
Donc il faut absolument limiter cette charge de travail. Si les produits restent au laboratoire, il n’est pas nécessaire, même lorsque on dépose en piluliers, de renseigner la quantité exacte de produits. Il nous suffit de savoir si on en a un peu ou beaucoup, si nous voulons en faire quelque chose.
Si le produit est envoyé dans une autre chimiothèque, notamment à des fins de criblage, les quantités varient entre 0.5 et 2 mg en fonction de la masse moléculaire (de la taille) du composé. Il existe des tubes spéciaux, qui vont permettre une pesée automatisée (robots) et précise des produits, dans ce cas précis il n’y a pas lieu de faire une pesée précise, au moment de la mise en tubes. Dans les autres cas, il faut peser précisément.

Une solution pour le stock local

Nous avons bien compris que pour les tubes d’envoi, c’est de l’ordre du mg (un bout de spatule) tous les chimistes ont cette quantité dans l’œil. Pour le stock local, il faut faire simple, nous pouvons choisir de renseigner la colonne stock au moyen d’une échelle, basée sur 6 valeurs possibles (0 à 5).
Après saisie dans la table, la cellule correspondante changera de couleur (noir à vert) car elle est soumise à une mise en forme conditionnelle. Ce qui fait que rapidement nous aurons une vision des produits en quantité suffisante (tirent vers le vert) ou non (tirent vers le rouge-noir).

Règles d’évaluation

Les règles d’estimation sont simples, l’exemple suivant montre comment les appliquer sur des piluliers (6.5 cm) traditionnels, tels que ceux que l’on peut ranger en boites (8×12 tubes). Ceci qui explique le format des étiquettes: no de boite (P04) – colonne (A à L) – colonne (1 à 8).

Si nous n’avons pas (rien ou traces) de produit, STOCK = 0. Quel est l’intérêt ? Nous signalons que nous savons faire ce produit, qu’il a de l’intérêt, que nous en avons eu par les passé et que nous pouvons (peut être) en produire à nouveau. Une chimiothèque c’est aussi un acte de politique scientifique, quoi qu’on en dise. Les autres règles dépendent de la capacité à fournir du produit, je les explicite avec un peu d’humour:

  • 1 (rouge) – Après en avoir donné, je n’en ai plus.
  • 2 (orange) – Je peux en donner mais très peu.
  • 3 (jaune) – Je n’en donne qu’aux copains.
  • 4 (vert clair) – Je peux en donner à toute la planète, mais il faudra faire attention.
  • 5 (vert foncé) – Je peux en donner à toute la planète.

Bien sûr, tout cela est un peu subjectif et un peu lié à la générosité du chimiste; mais au final ça marche plutôt bien. Et cela fait l’économie d’une pesée, ce qui est très important. Car la pesée est un des éléments bloquants qui empêchent les chimistes de consacrer du temps à ce type de processus.

5. Nomenclature

Il est tout à fait possible de réaliser une nomenclature des produits sans passer par un indicateur lié à une plaque (boite, cf. image précédente). Nous ne recommandons pas de mettre la formule chimique sur les tubes, c’est utile pour le travail, mais une catastrophe pour le stockage à long terme (l’étiquette se déteriore). Il faut donc utiliser un identifiant, celui ci peut correspondre à toute chaine alphanumérique ou à un mix: code barre, identifiant.

Utilisation de plaques

Si le stock est effectué sur une plaque/piluliers, une manière de procéder est de renseigner la position du pilulier dans la plaque: lettres A à L et chiffres 1 à 8 (96 puits) dans la colonne CID de la table de collecte. Les images suivante montrent comment réaliser ce type de nomenclature low-tech:

Il est évidemment préférable d’utiliser une imprimante thermique pour disposer d’un résultat lisible et qui ne n’efface pas trop vite, même si chaque tube reste dans la cellule de la boite correspondant à sa nomenclature. Une imprimante de type étiqueteuse sur rubans (USB) est très utile, l’exemple suivant en montre une (image de gauche), associée au type de ruban dont la largeur correspond aux tubes.

Le dispositif affiché dans l’image de droite correspond à un lecteur (douchette) de code barres et à un tube étiqueté qu’il est capable de lire (cf. section suivante). Ce type de lecteur (USB), sous réserve du driver adéquat, est capable sur un clic de l’opérateur de reporter le numéro du code barre dans une cellule de tableur (ou un éditeur de texte) de la même manière qu’un copier-coller. Il ne nécessite donc pas un logiciel de saisie spécifique, ce qui est important à savoir.

6. Etapes ultérieures

Cet exemple va servir à illustrer un autre type de nomenclature, un peu plus high-tech. Donc, une fois le stock constitué (quel que soit sa forme) et le fichier Excel renseigné, nous sélectionnons les molécules qui vont être envoyées vers d’autres chimiothèques, notamment la CN.
Pour ces produits, une partie du stock (< 2 mg) sera déposé dans des tubes spécifiques (coniques, pré-tarés, code barres, identifiant). L’exemple montre ce type de tubes (il y en a d’autres) et une boite d’expédition (100 tubes, format boite à pizza) compatible pour l’expédition.

Une fois ce travail réalisé, il faudra mettre à jour la table de collecte en conséquence, par exemple en renseignant les codes barres des tubes.
Dans ce dernier cas, il se peut aussi qu’un service ait prérempli les cellules correspondantes. En effet, les tubes correspondent souvent à des séries dotées de numéros consécutifs, faire varier quelques digits à la fin d’un identifiant puis vérifier n’est pas trop compliqué. Dans ce cas, il faudra que les opérateurs vérifient le numéro du tube dans la table et qu’ils assurent la cohérence avec le produit stocké (dans le tube) et identifié (dans la table), une saisie au moyen de la douchette ne sera pas nécessaire.

Table de collecte finalisée

L’exemple suivant montre une table de collecte après cette étape. Il s’agit d’un tableau ‘brut’, curé et validé après un aller-retour vers les chimistes.

Ce tableau est ce que l’on appelle un master, c’est le document de travail (navette) entre chimistes, chimothécaire(s), services numériques. Il doit permettre toutes les modifications et les changements liés aux données (ajout d’une colonne par exemple) et aux anomalies de la collecte. Par exemple des lignes ‘sans produit’ (traçabilité, ex: ligne 11). Nous avons bien quelque chose dans le tube, mais le produit n’est pas encore totalement identifié, et le tube qui lui était affecté est barré, ce produit ne sera pas exportable.

7. Ingénierie logicielle pour l’export

Après validation, la table sera intégrée dans une base, d’une manière ou d’une autre: i) export vers une chimiothèque partenaire qui dispose de son propre système d’information; ii) intégration dans un SGBDR local ou iii) intégration dans une ‘flat’ database (ex: CSVM, XML).
Le dispositif d’intégration dépendra de chaque finalité et des spécifications émises par les partenaires. La base finale pourra incorporer des colonnes supplémentaires liées au calcul de descripteurs ou à l’ajout d’informations complémentaires (par exemple, solubilité dans le DMSO pour certains produits) d’une manière dispersée ou systématique. Après curation, la base finale pourra ne pas incorporer certaines colonnes liés à la collecte et dont l’information n’a plus d’intérêt.
Si nous souhaitons pouvoir répondre d’une manière générique et automatisée, il faudra disposer d’outils logiciels qui génèrent les fichiers d’import (CSV, SDF …) pour l’ensemble des cibles (locale, partenaires). Comme le format de fichier ou le nombre de colonnes sera différent dans chaque cas, l’utilisation d’un format pivot (CSVM) facilitera cette tâche, jusqu’aux fichiers SDF. Nous disposons en interne de ce type de codes (basés sur les paquetages buildez.chem.pybel_interface et buildez.chem.cnlib) qui permettent de générer les fichiers (CSV, SDF) vers les chimiothèques cibles, avec plusieurs niveaux de précision, typiquement :

  • Structures nettoyées (clean 2D, hydrogénées ou non) ou pas.
  • Fusions de colonnes à la demande, par exemple une formule développée incluant le produit ET le sel.
  • Des calculs (masses molaires …) et les détections d’anomalies associées.

Enfin, un aller/retour avec la chimiothèque partenaire est probable s’il reste des erreurs ou s’il y a des modifications dans les formats à introduire. Cette chimiothèque pourra également retourner différents identifiants pour chaque produit, qu’il faudra intégrer dans la base finale.

8. Plusieurs chimiothèques cibles

Si un produit est à destination de plusieurs chimiothèques, pour assurer la traçabilité de la collecte, il faudra multiplier certaines colonnes.  Par exemple, un produit à destination de deux chimiothèques A et B, aura une colonne A-VRAC et B-VRAC (pour les quantités transmises), A-BCODE et B-BCODE (pour les nomenclatures sur tubes), des identifiants de produits pour A et B … De même une chimiothèque pourra changer, en cours d’existence de nomenclature, dans ce cas, la base finale devra intégrer deux versions dans deux colonnes différentes (ID-A.1 et ID-A.2, par exemple).

Pourquoi différents identifiants ? Un exemple concret car c’est le cas à ChemBioFrance. Nous avons une chimiothèque de base (plusieurs dizaines de milliers de produits) et une chimiothèque essentielle avec un nombre réduit de produits, mais représentatifs de l’espace chimique correspondant à la chimiothèque de base, donc deux identifiants distincts.

9. Conclusion

La collecte de produits est un processus très lié au contexte. Soit il s’agit d’une suite d’opérations strictement codifiées, in fine la saisie directe dans un SGBDR. Soit il s’agit d’un processus fluide et adaptatif en fonction de chaque cas de figure. Comme pour beaucoup de problématiques, le SGBDR n’est pas toujours la solution universelle, puisque par définition, il offre un espace d’information contraint. Je considère qu’il offre une ‘vue’ sur un sous-ensemble de données, qu’il est pratique pour les recherches, mais que sa finalité n’est pas la conservation (incluant le long terme et la frugalité) des données.

Liens et lectures

Retour en haut