Changer de labo, changer de protocole : la couche YAML de PhytoNote en cotutelle
Six mois en cotutelle au LBVpa de Tours. Un DPPH local à 50 µM au lieu de 100, trolox au lieu d'acide ascorbique. Vingt minutes pour éditer un YAML, et mes mesures sont passées.
Février 2026. J'arrive à la gare de Tours après six heures de Paris-Centre, ma valise et mon ordinateur dans le sac. Mon premier jour au labo, c'est un lundi matin. J'arrivais en cotutelle pour six mois au LBVpa, le Laboratoire de Biologie des Végétaux pour les Produits Aromatiques de l'Université de Tours, dans le cadre d'une convention signée entre mon directeur de thèse à Rabat et son homologue tourangelle, le Pr. Lanoue. Le froid m'a saisie en sortant de la gare. J'avais sous-estimé la différence avec Casablanca.
Le protocole local
À 9h30, après les présentations d'usage et un café au distributeur, l'ingénieure d'études du labo m'a installée devant la paillasse 12 et m'a tendu un classeur rouge. C'était leur cahier de protocoles. Page 47, le test DPPH local. J'ai lu une fois. Puis deux. Puis j'ai relu en notant les différences avec ce que je faisais à Rabat depuis deux ans.
La solution mère de DPPH• ici se prépare à 50 µM dans du méthanol absolu, pas à 100 µM comme chez nous. L'incubation se fait à l'obscurité pendant 30 minutes à température ambiante, pas 60. La lecture spectrophotométrique se fait à 517 nm sur leur Tecan Infinite M200 Pro, ce qui colle, mais leur standard de référence est le trolox à six points de gamme, là où à Rabat on travaillait à l'acide ascorbique sur huit points.
Pas de catastrophe. Juste un autre référentiel. Et moi, au milieu, avec une thèse en cotutelle qui devait produire des résultats comparables des deux côtés de la Méditerranée.
Le moment de panique mesurée
J'ai pris une heure le midi pour faire le tour du problème. Toutes mes courbes d'étalonnage faites à Rabat étaient inutilisables pour la suite directe. Je devais refaire mes gammes trolox de zéro sur les standards que j'avais apportés (cinq extraits de plantes médicinales marocaines, en flacons étiquetés à la main, congelés à -80°C pendant le voyage en valise réfrigérée), et reprendre tous mes IC50 dans les conditions locales pour pouvoir comparer.
Six mois de séjour. Cinq extraits. Trois essais antioxydants par extrait (DPPH•, ABTS•+, FRAP). Plus les analyses LC-MS prévues à mi-séjour. Faire tenir tout ça dans le calendrier sans me planter sur les paramètres me semblait, à 13h ce lundi-là, assez vertigineux.
PhytoNote, la couche YAML, vingt minutes
L'après-midi, j'ai sorti mon laptop et ouvert le dossier des configurations PhytoNote. Quand j'avais conçu l'app deux ans plus tôt, je n'avais pas anticipé ce scénario précis. J'avais juste eu l'intuition, après avoir vu des collègues de mon labo à Rabat utiliser PhytoNote avec leurs propres tests d'inhibition enzymatique, que les bornes de validation et les paramètres d'essai devaient vivre en dehors du code. Dans un fichier texte. Modifiable sans recompilation.
La décision, à l'époque, n'avait pas été idéologique. Elle avait été paresseuse, je l'avoue. Je ne voulais pas recompiler une APK Flutter chaque fois qu'une collègue me demandait d'ajuster une borne haute d'absorbance de 0,05. Donc j'avais poussé tout ce qui ressemblait à un paramètre dans des fichiers YAML, gardé le code Dart générique, et passé à autre chose. Deux ans plus tard, assise à la paillasse 12 de Tours avec un protocole étranger sous les yeux, cette paresse-là s'est révélée être la meilleure décision que j'avais prise sur ce projet.
J'ai dupliqué mon fichier dpph_rabat.yaml en dpph_tours.yaml. J'ai changé la concentration de la solution mère, le temps d'incubation, le standard de référence et les bornes attendues d'absorbance à 517 nm. J'ai ajouté un identifiant de protocole et un champ commentaire pour pouvoir retrouver d'où venait chaque mesure trois ans plus tard. Vingt minutes plus tard, j'avais relancé l'app sur ma tablette de paillasse et fait passer une plaque de test à blanc pour vérifier que les bornes répondaient bien.
Le reste du séjour s'est déroulé sans drame. Chaque manip lançait son protocole YAML correspondant. Chaque mesure était horodatée avec le tag protocol: dpph_tours. Mes données rentraient à Rabat propres, traçables, étiquetées au bon référentiel. J'ai pu reconstruire mes IC50 en local et les comparer aux valeurs Rabat avec un facteur de conversion documenté, sans perdre la chaîne de provenance.
J'ai aussi glissé un troisième fichier YAML dans le projet ce mois-là. Le protocole ABTS•+ du LBVpa diffère légèrement du nôtre, avec du persulfate de potassium à 2,45 mM au lieu de 2,5 et une pré-incubation de 16 heures au lieu de 12. Cinq lignes ajoutées dans un fichier YAML. Pas de modification de code. Le moteur de validation a pris en compte les nouvelles bornes au lancement suivant, et c'était fini.
Le YAML partagé, le jour du départ
Avant de prendre mon train pour Paris CDG, j'ai laissé une clé USB sur le bureau de l'ingénieure du labo. Le YAML dpph_tours.yaml y était, avec une note d'usage en deux paragraphes et l'APK Android de PhytoNote. J'ai eu un message d'elle deux mois plus tard. Deux doctorantes du LBVpa l'utilisaient pour leurs propres essais sur les polyphénols de vigne. Elles avaient ajouté un fichier frap_tours.yaml.
C'est à ce moment-là que j'ai compris quelque chose que je n'avais pas formulé explicitement avant. Les protocoles ne voyagent pas bien entre labos. Chaque équipe a ses petites adaptations, ses standards préférés, ses temps d'incubation qui sont devenus loi locale parce que quelqu'un a publié un papier avec eux il y a quinze ans. C'est sain, c'est de la diversité méthodologique, et ça produit aussi une dette : on perd la comparabilité directe, on multiplie les sources d'erreurs au moment où un étudiant change de site, et on rend les méta-analyses de littérature plus douloureuses qu'elles ne devraient l'être.
La portabilité des protocoles, dans la phytochimie comme dans beaucoup d'autres disciplines expérimentales, c'est un sujet sur lequel on bricole encore beaucoup et qu'on outille peu. La couche YAML de PhytoNote n'est pas une réponse complète. C'est juste un endroit où chaque labo peut écrire ses règles, les versionner sur git si l'envie lui en prend, et les partager avec un séjour de chercheur invité ou un partenaire de cotutelle sans renoncer à son identité méthodologique.
Pour le détail technique de la couche YAML et les essais déjà supportés, la page PhytoNote donne un aperçu. Le papier méthodologique détaille le moteur de validation et la philosophie de configuration externalisée. Le même YAML, resservi en contexte industriel sur une ligne de CQ cosmétique chez Arganor Labs, a fait baisser leur variance inter-opérateur de 18 % à 4 % — je raconte ce passage labo→industrie dans le récit Arganor.