Le développement et la fabrication de produits biopharmaceutiques impliquent de nombreuses expériences et rapports standardisés. La plupart de ces rapports contiennent des informations issues du protocole associé, des données de qualité du produit provenant d'un système de gestion de l'information de laboratoire (LIMS), des informations de la documentation de laboratoire et des données de performance provenant de différents dispositifs. Actuellement, ces sources de données sont traitées avec JMP, Excel et d'autres logiciels, puis assemblées dans des présentations PowerPoint et des documents Word.
Je présente une automatisation de ce processus complet, développée en interne avec JMP. Grâce à un journal de bord, l'utilisateur est guidé tout au long d'un flux de travail automatisé. Ce dernier exploite les données LIMS et la documentation de laboratoire pour renseigner automatiquement, par exemple, les réponses d'une série de plans d'expériences (DoE) et les options d'illustration proposées une fois que l'expert métier (SME) a élaboré un modèle. Ces illustrations, les chromatogrammes et les informations du protocole sont ensuite intégrés dans une présentation PowerPoint et un rapport Word, selon une structure prédéfinie.
La génération automatisée de ce rapport permet aux PME de gagner un temps précieux, leur permettant ainsi de se concentrer davantage sur l'interprétation des résultats. De plus, l'automatisation étant centralisée dans un seul logiciel, l'intégrité des données est préservée et les normes de mise en page et d'évaluation sont respectées dans chaque rapport.
Bonjour et bienvenue. Aujourd'hui, je souhaite vous présenter un flux de travail pour la collecte, l'analyse et la rédaction de rapports de données expérimentales. Dans le cadre du Discovery Summit, j'ai choisi de prendre comme exemple un rapport DOE, mais cet outil est bien entendu très général et peut être utilisé pour tout type de rapport.
Pour vous donner un aperçu de nos activités, Rentschler Biopharma est une entreprise de fabrication et de développement à façon de produits biopharmaceutiques. Autrement dit, nous développons des procédés de purification pour tous types de produits biopharmaceutiques.
La plupart sont, bien sûr, des anticorps. Nous en possédons plus de 120, mais nous avons également produit le vaccin à ARNm contre la COVID-19 pour BioNTech et Pfizer. Par ailleurs, notre portefeuille est assez important, avec plus de 140 modalités thérapeutiques, principalement des anticorps monoclonaux (des anticorps plutôt simples, quoique peu conventionnels), mais aussi des anticorps multispécifiques, des protéines de fusion, des enzymes recombinantes et d'autres produits un peu plus innovants.
L'inconvénient, avec 140 modalités différentes, c'est qu'il faut rédiger 140 rapports différents. De plus, si vous produisez un service chaque année, vous devez également rédiger des rapports annuels. Pour chacun de ces projets, nous rédigeons des rapports et, comme nous travaillons pour des clients, nous réalisons aussi des présentations PowerPoint, parfois chaque semaine.
Bien sûr, la préparation peut être assez longue. L'idée est donc de réduire ce temps en automatisant le processus avec JMP. Pour cela, je vous propose un exemple : un rapport de plan d'expériences (DOE). Vous pouvez imaginer que lors du développement d'un processus, il est nécessaire de réaliser plusieurs expériences (DOE) pour comprendre son fonctionnement, sa robustesse et, le cas échéant, l'optimiser. Nous utilisons une approche DOE, et chaque processus comporte de nombreuses étapes. Ainsi, chaque processus peut générer entre 5 et 10 rapports, ce qui représente un travail considérable. En revanche, cette approche est très standardisée, ce qui en fait un excellent exemple pour exploiter la puissance de l'automatisation.
Pour cela, vous n'avez besoin que d'une table JMP, une table DOE standard que JMP génère automatiquement lorsque vous lui demandez de créer un plan d'expériences. Il vous faut également un protocole, indispensable pour tout client, et au minimum JMP-18. En effet, JMP-18 offre une excellente intégration avec Python, ce qui simplifie considérablement les choses. De nombreuses fonctionnalités actuelles fonctionnent donc avec Python, même si l'utilisateur ne s'en aperçoit pas. L'avantage ? Vous pouvez réaliser des choses intéressantes avec ce langage.
Je vais d'abord vous expliquer brièvement le principe, puis vous donner un exemple concret. Comment ça marche ? On part d'un tableau DOE vide, visible ici à gauche. Ce tableau contient un identifiant d'essai, un modèle, différents facteurs et leurs réponses, qui sont automatiquement renseignés en quelques clics depuis le LIMS. L'avantage ? Au lieu de copier-coller des données depuis le LIMS et de risquer des erreurs, l'ordinateur s'en charge.
Le système verrouille automatiquement les colonnes pour éviter toute erreur et enregistre chaque étape effectuée par l'utilisateur. C'est essentiel pour garantir l'intégrité des données, car leur provenance est clairement identifiable. Elles ne peuvent être manipulées accidentellement, ce qui rassure pleinement notre équipe d'assurance qualité.
Une fois les données copiées dans le tableau DOE, l'expert métier doit construire son modèle. Rien n'a changé à ce niveau. Vous pouvez procéder comme vous le souhaitez. JMP Build possède déjà toutes les fonctionnalités nécessaires, et rien n'a été modifié de ce côté-là. Il vous suffit d'enregistrer ce modèle, puis de revenir à l'outil pour créer tous les types de graphiques que nous incluons généralement dans nos rapports.
Ces graphiques incluent, par exemple, un graphique de réplication permettant de visualiser la répartition des données sur les différentes exécutions, un résumé de l'ajustement permettant d'estimer la qualité du modèle, des estimations de paramètres indiquant quel paramètre est responsable d'une réponse spécifique, différents types de graphiques de profilage offrant une vue d'ensemble des facteurs influençant chaque réponse, et enfin, des graphiques de contours en cas d'interactions bidimensionnelles ou tridimensionnelles, permettant de visualiser directement ces interactions sur un seul graphique afin de trouver un optimum ou de localiser un problème à la limite de la défaillance.
Ensuite, ces données sont assemblées dans une présentation, ou peuvent l'être. L'idée est que nos clients apprécient d'être informés de nos progrès, et pour cela, tous les graphiques générés peuvent être facilement intégrés dans une présentation PowerPoint. Concrètement, cela signifie que toutes les figures sont ajoutées, ainsi qu'un en-tête automatiquement ; l'expert métier n'a plus qu'à rédiger les commentaires.
La deuxième chose, que je vais vous montrer dans un instant, c'est que toutes les données sont compilées dans un rapport. Ce rapport contiendra les données de notre LIMS (une base de données SQL) et de notre documentation électronique de laboratoire, notamment les temps de maintien en vie. Il pourra également inclure les données exportées par l'appareil, comme les chromatogrammes ou les courbes de filtration, et enfin les données du protocole : les plans expérimentaux, les nomenclatures, etc.
Vous pouvez en avoir un aperçu sur la droite. Vous y trouverez des tableaux issus du protocole ou du LIMS, ainsi que des graphiques provenant des appareils, qui sont ensuite colorés selon vos besoins, par exemple pour représenter les performances de la pompe, les chromatographies ou les graphiques analytiques.
L'objectif de tout cela est de passer d'un état où vous devez effectuer toutes ces tâches manuellement et, par conséquent, sujet aux erreurs, à un état cible où l'expert métier se contente de construire le modèle, JMP génère un rapport préliminaire qui n'est ensuite plus qu'interprété et examiné par les experts métier, ce qui permet de gagner beaucoup de temps et d'éviter bien sûr beaucoup de frustration.
J'espère que cela vous plaira, et j'aimerais vous montrer à quoi cela ressemble en pratique. Vous voyez ici des journaux JMP typiques ; pour mes tâches d'automatisation, j'utilise généralement des journaux. Ils contiennent une brève introduction et des liens, puis de nombreux éléments de plan qui vous guident tout au long du processus.
Vous commencez par le début, qui vous explique la marche à suivre : charger les données LIMS (logiquement, c'est par là qu'il faut commencer), puis vous trouverez toujours un bouton. Cliquez dessus ; on vous demandera alors un tableau DOE vide. Essayez et préparez-le. Voici à quoi il ressemble.
Voici un tableau typique. Il contient tous les facteurs et quelques numéros d'exécution. Des scripts y sont insérés automatiquement par JMP, et bien sûr, les réponses sont encore vides. Ensuite, il vous est demandé de récupérer les données depuis le LIMS. Je ne peux pas vous le montrer directement car je dois utiliser des données aléatoires.
Cependant, l'effet est le même : les réponses sont automatiquement renseignées et, de plus, colorées en vert. Cela indique simplement que ces données sont vérifiées. Cela signifie d'abord qu'elles sont verrouillées et que vous ne pouvez donc pas les modifier accidentellement. Mais elles sont également enregistrées ; par conséquent, même si vous les enregistrez ou les modifiez maintenant, le système détectera ultérieurement une anomalie et vous signalera un problème de vérification.
Il enregistre également toutes les étapes d'extraction de données, c'est-à-dire les variables du tableau que vous pouvez voir ici. Vous pouvez ensuite créer toutes sortes de graphiques. Par exemple, le graphique de réplication est toujours utile. Pour cela, il vous suffit de cliquer sur « Créer un graphique de réplication ».
La première chose qu'il vous demande est un tableau, et cette demande ne sera formulée qu'une seule fois par session. En réalité, cette vérification des données fonctionne non seulement à partir de tableaux, mais aussi de graphiques contenant toutes sortes de figures. Nous n'avons pas encore de figure, annulons donc celle-ci. Le programme en créera alors une nouvelle. Il génère ensuite ce graphique de réplication, que nous pouvons voir ici, avec toutes les réponses et l'évolution au fil des réplications ; les points bleus représentent les points centraux.
Le site a également généré un tableau clair, ou plutôt un tableau de vérification graphique. Les utilisateurs peuvent ainsi voir directement les données présentes : le nom du fichier, les étapes de traitement, et même une vérification manuelle, car il s'agit de données aléatoires que j'ai créées. Je viens de le faire. J'ai créé le fichier.
Ensuite, il y a cette valeur de hachage MD5, qui est en fait la valeur que l'on peut calculer pour chaque fichier. Ainsi, on peut vérifier si le fichier utilisé porte non seulement le même nom, mais s'il s'agit bien du même fichier. Cela garantit qu'aucun autre utilisateur n'ait enregistré un fichier similaire avec le même nom et que la validation n'ait été effectuée qu'à tort. Comme je l'ai mentionné, il s'agit de données aléatoires, la source n'est donc pas vérifiée, ce qui indique un problème potentiel, mais cela n'a pas d'importance pour cette démonstration.
Vous avez vu qu'il est possible de le fermer. Tous ces graphiques sont automatiquement enregistrés dans le dossier. Ensuite, il faut créer un modèle. Vous pouvez l'utiliser comme bon vous semble. Cliquez sur « Exécuter », puis supprimez quelques facteurs. Nous pouvons ignorer cela. Je suis toujours surpris de la qualité des modèles aléatoires que l'on peut générer aussi facilement.
Vous pouvez aussi supprimer quelques facteurs. Cela semble aléatoire. Observez les différences, et vous pouvez bien sûr procéder comme vous le souhaitez. Pour l'instant, arrêtons-nous là. Vous pouvez ensuite enregistrer ces données dans le tableau si vous le désirez.
Vous pouvez ensuite commencer à créer des graphiques. Par exemple, vous pouvez réaliser un graphique récapitulatif de l'ajustement, comme celui-ci. Cela vous donne un aperçu de la qualité de votre réponse. Même si le modèle de données est, bien sûr, très mauvais, vous avez au moins une bonne vue d'ensemble de ses limites. Vous pouvez ainsi comprendre quels paramètres influencent votre modèle.
Il suffit de cliquer à nouveau. Cela se fait automatiquement pour chaque réponse. Ces données sont ensuite enregistrées, et chacun de ces facteurs contribue à la réponse. Enfin, les graphiques de prédiction offrent une vue d'ensemble claire du résultat.
Il suffit de cliquer sur « Créer des graphiques » pour en obtenir plusieurs. Selon les facteurs en jeu, vous pouvez visualiser chaque réponse individuellement, en fonction de chaque facteur. Cela pourrait vous être utile. Par exemple, si trois facteurs sont responsables de la réponse D, vous obtenez un graphique récapitulatif qui les regroupe tous. C'est un aperçu plutôt pratique.
Bien sûr, vous pouvez aussi fermer cette fenêtre. Enfin, nous pouvons créer un graphique de contours si vous le souhaitez. Pour les facteurs prédits, utilisez les formules de prédiction du vecteur 1, ou peut-être 3. Vous pouvez choisir votre palette de couleurs, ou la laisser telle quelle, et vous obtiendrez un graphique de contours clair qui vous permettra de visualiser leur distribution et leurs interactions.
Voilà en résumé tout. Bien sûr, vous pouvez en générer d'autres avec davantage de données, mais arrêtons-nous là pour l'instant. Nous pouvons fermer et enregistrer ce fichier. Je vous montrerai peut-être comment faire sous peu. Pour toutes les valeurs que nous avons relevées, une dernière ligne a été générée. Vous pouvez ainsi voir les étapes d'extraction de données effectuées, le nom du fichier et la valeur de hachage. Nous enregistrons ces données.
Voilà, vous avez maintenant une multitude de données. Il ne vous reste plus qu'à les ajouter à un rapport. Bien sûr, vous pourriez tout copier-coller, car toutes les données sont enregistrées, mais c'est beaucoup plus simple de cliquer et de laisser JMP faire le reste. Vous devez donc trouver votre dossier. Comme je l'ai dit, cet outil fonctionne pour tous types de rapports.
Donc, pour chaque type de rapport, il vous faut votre propre table. Je vais vous la montrer dans un instant. Vous pouvez voir ici différentes sources. Cette table indique à JMP, pour la génération du rapport, à partir de quelle source utiliser les données et quels points de données. À partir du protocole, JMP copie plusieurs tables : le code des étapes intermédiaires, le schéma d'exécution, certains paramètres, un aperçu des lots, tous vos filtres, etc.
Ensuite, l'outil de création de graphiques DOE permet de copier les graphiques de résidus, les estimations de paramètres, les prédictions et les courbes de niveau. À partir des données LIMS (un autre outil), on obtient la liste des méthodes analytiques utilisées. Il faut ensuite un modèle, chaque rapport ayant son propre modèle. Je prépare le rapport Q1 pour des raisons de confidentialité. J'ai besoin d'un dossier et, bien sûr, vous avez également besoin d'un protocole.
Vous pouvez modifier les étapes du processus. Pour cela, vous pouvez configurer certains paramètres. Nous devons connaître les tables DOE. Cliquez simplement sur OK, patientez quelques secondes, et vous verrez que 22 éléments ont été ajoutés. C'est tout, sans que vous ayez à y consacrer du temps.
Vous pouvez ensuite constater directement ici qu'il génère ce tableau de données sources, indiquant ainsi les opérations effectuées. Il a copié le code intermédiaire et le code étape par étape du protocole. Voici le fichier. Il a procédé de la même manière avec ce fichier, et ainsi de suite. Il utilise plusieurs tableaux du protocole, puis de nombreuses figures qui ont ensuite été utilisées dans l'autre outil.
Le système les enregistre dans ce tableau de données sources et vous indique qu'elles ne sont pas vérifiées car il s'agit de données aléatoires. Vous obtenez néanmoins une liste complète de leur structure. Un rapport complet est également généré. Voici ce que vous recevrez en brouillon. Le rapport contient de nombreuses informations à compléter. J'ai dû le raccourcir légèrement pour des raisons de confidentialité, mais je peux vous en donner un aperçu.
Bien sûr, il faut rédiger un résumé, mais on peut commencer par un aperçu des prédictions, c'est-à-dire quel facteur influence quelle réponse. Si c'est en vert, c'est significatif. Sinon, ça ne l'est pas. Cela dépend de votre modèle [inaudible 00:17:06], que nous avons créé. Ensuite, j'ai supprimé certaines données.
Ensuite, on trouve quelques tampons extraits du protocole. Des filtres, également présents dans le protocole, ainsi que le codage des étapes (qui constituait un protocole complet), une liste des méthodes analytiques et leurs versions utilisées pour chaque exécution (provenant directement du LIMS), le schéma d'exécution (lui aussi issu du protocole), d'autres données du protocole, puis les résultats (le tableau que nous venons de créer) et, bien sûr, tous les graphiques (liste blanche, graphiques des résidus).
Vous obtenez ensuite un résumé, et pour chaque réponse, le risque, les estimations des paramètres et les graphiques de prédiction significatifs, ainsi que le graphique de contrôle, le cas échéant. Ce processus est entièrement automatisé pour chaque réponse, et vous obtenez un tableau complet. L'évaluation et les conclusions sont ensuite rédigées manuellement. Enfin, les abréviations sont ajoutées automatiquement à la liste des abréviations utilisées dans le rapport.
Donc, tout cela constitue un rapport très court d'une trentaine de pages et d'une vingtaine d'éléments, mais cela fonctionne aussi pour des rapports beaucoup plus volumineux comportant bien plus d'éléments. Un aperçu des sources de données, notamment, permet un gain de temps considérable, car sinon, une vérification est nécessaire.
Je vais conclure. J'espère vous avoir convaincu que l'utilisation de JMP en Python pour automatiser vos flux de travail vous permettra de gagner un temps précieux. De plus, elle minimise les erreurs grâce à l'absence de copier-coller et autres manipulations manuelles. Vous conservez ainsi une trace écrite précise de chaque étape : qui l'a effectuée, quand, avec quel outil, etc.
Ce dernier module vous permet d'obtenir un format de rapport standardisé, ce qui est essentiel. Par exemple, je travaille au service de purification aval, ce qui signifie que je suis responsable de la purification des produits provenant du service amont. Il est donc important que les rapports que nous envoyons à nos clients soient uniformes, avec les mêmes couleurs, etc.
Voilà qui conclut ma présentation. Je serais ravi de vous retrouver au Discovery Summit de Berlin. N'hésitez pas à me contacter si vous avez des questions. Merci beaucoup.