La culture cellulaire joue un rôle crucial dans la production de produits biologiques. Lors de l'introduction de modifications de procédé dans le cadre d'un plan d'expériences (DOE), la modélisation précise du comportement du procédé de culture cellulaire s'avère complexe, car ce dernier comprend de multiples phases de croissance et de production interdépendantes, dont seules certaines sont susceptibles d'être affectées par les modifications apportées au procédé. Les modèles paramétriques non linéaires traditionnels peinent à appréhender efficacement cette complexité, tandis que les modèles non paramétriques seuls peuvent s'avérer incohérents et difficiles à corréler avec les paramètres du DOE.
Pour résoudre ce problème, la planification d'expériences fonctionnelle (DOE) simplifie la complexité en la décomposant en composantes principales et en corrélant les variations avec les paramètres de la DOE. Cette approche permet la création d'un outil de profilage prédictif, capable d'optimiser les paramètres de culture cellulaire à partir de données à petite échelle et de les utiliser pour prédire le comportement lors d'une production à plus grande échelle. L'ensemble du processus peut être réalisé au sein de la plateforme Functional Data Explorer de JMP Pro et offre une méthode plus efficace pour optimiser les procédés de culture cellulaire.
Aujourd'hui, je vais vous présenter un cas d'utilisation de la méthode DOE fonctionnelle pour modéliser des processus complexes et non linéaires de culture cellulaire. Je commencerai par décrire le processus de culture cellulaire que nous avons cherché à modéliser : une production continue. J'aborderai ensuite deux des objectifs de cette modélisation : le maintien d'un état stationnaire et la possibilité de prédire certains comportements à grande échelle à partir de données à petite échelle.
Ensuite, j'aborderai les splines non paramétriques, qui sont les fonctions de base de la modélisation que j'ai effectuée, et je présenterai Functional Data Explorer, la plateforme qui utilise dans ce cas des splines ainsi que des composantes principales pour la modélisation.
Je présenterai deux solutions différentes répondant aux deux objectifs, ainsi que divers types d'ajustements splines et la manière d'intégrer les conditions de la planification d'expériences. Enfin, j'expliquerai comment générer des profils articulaires et je résumerai et discuterai des résultats, en évoquant éventuellement les difficultés rencontrées.
L'objectif de notre modélisation est la production en continu. La norme en biologie est la production par lots. Dans ce cas, on cultive des cellules, on optimise leur rendement, puis elles finissent par s'épuiser métaboliquement et mourir. On récolte alors tout le contenu du bioréacteur, y compris les cellules mortes et le médicament ou la molécule d'intérêt, puis on le traite selon les besoins.
Ce que nous essayons d'examiner, et que beaucoup d'acteurs du secteur examinent également, c'est de savoir si, au lieu de croître et de mourir en produisant par lots ponctuels, nous pouvons nous rapprocher d'autres secteurs, comme l'industrie automobile par exemple, où nous produisons des matériaux en continu.
Pour ce faire, il faut bien sûr continuer à faire croître les cellules, mais ensuite les maintenir en phase stationnaire (étape 5 de la courbe de croissance) et éviter la phase de déclin (étape 6). On pourrait utiliser un bioréacteur plus petit, alimenté en continu avec un milieu de culture frais contenant tous les nutriments nécessaires, tout en retirant simultanément un volume constant de liquide. Ce liquide devrait contenir la molécule d'intérêt. L'objectif est de maintenir un apport constant de milieu de culture frais et de favoriser la diffusion de la molécule recherchée.
Le deuxième objectif, outre le maintien d'une production stable, est de pouvoir prédire le déroulement des opérations à grande échelle à partir des résultats obtenus à petite échelle. En effet, à petite échelle, nous pouvons tester différents réacteurs et introduire diverses conditions, ce qui est impossible à grande échelle en raison des contraintes logistiques, de temps et de budget. Nous souhaitons donc déterminer si nous pouvons prédire le passage de l'échelle réduite à l'échelle industrielle, mais aussi évaluer l'impact potentiel de l'ajout de différents facteurs et conditions à grande échelle.
Un autre aspect intéressant concerne la production : avec ces différentes phases, il est possible d'introduire des conditions à différents moments. La phase de croissance peut toujours être contrôlée de la même manière, peut-être même de la même manière qu'à grande échelle, mais ensuite, on ajoute différents facteurs de plan d'expériences, qui comportent une dimension temporelle. Nous verrons comment nous avons pu réaliser cela avec Functional Data Explorer.
Je vais commencer par présenter les splines. Elles constituent la base de notre modélisation. Au départ, nous souhaitions explorer la possibilité d'une modélisation paramétrique, qui aurait peut-être fonctionné pour certaines phases. Nous aurions pu utiliser une fonction logistique exponentielle pour la phase de croissance. Cependant, en intégrant les effets d'échelle et les plans d'expériences (DOE) introduits à différents moments, nous ne parvenions pas à tout saisir, car certaines productions pouvaient croître puis chuter, tandis que d'autres pouvaient croître et se stabiliser. Un modèle paramétrique que nous avons trouvé ne permettait pas de modéliser cela.
Nous souhaitions utiliser une méthode plus flexible, en l'occurrence les splines. Une spline consiste essentiellement à ajuster une fonction simplifiée entre les points nodaux des données. Lors de l'ajustement d'une spline, plusieurs choix s'imposent. Combien de points nodaux souhaitez-vous inclure ? En général, plus il y a de points nodaux, plus le modèle s'ajustera aux données, ce qui peut être un avantage ou un inconvénient, voire conduire à un surapprentissage. Il faut également définir le degré d'ajustement. Entre chaque point nodal, souhaitez-vous une ligne droite ? Une courbe ? Une simple fonction en escalier ?
Ensuite, avec certains types de splines, comme les P-splines générées par Functional Data Explorer, vous pouvez ajouter une fonction de lissage. À chaque nœud, vous lissez la transition entre les splines afin d'éviter, par exemple avec des splines linéaires, d'obtenir des lignes discontinues et abruptes.
Dans Functional Data Explorer, vous avez le choix entre deux splines : les B-splines et les P-splines. D'autres options sont disponibles, comme les fonctions d'onde, mais elles n'étaient pas pertinentes dans ce cas précis. De manière générale, j'ai constaté que les P-splines, les splines de régression les plus simples, conviennent bien à la modélisation de fonctions lisses. Elles peuvent être plus performantes pour les fonctions bruitées et irrégulières, car elles atténuent le bruit. Il s'agit d'une observation générale. On peut certes surajuster une P-spline et sous-ajuster une B-spline, mais ce ne sont que des règles empiriques.
Dans ce cas précis, nous utilisons la plateforme Functional Data Explorer. Voici quelques images illustrant son interface. Les données fonctionnelles sont généralement des données enregistrées de manière continue. Ici, il s'agit du temps : le lot est produit progressivement. Cela peut aussi concerner d'autres types de données. J'ai déjà vu cette plateforme utilisée pour des données spectrales, par exemple. L'objectif est ensuite d'identifier un ensemble de mesures. Dans ce cas, il s'agit de différents lots que nous identifions, ce qui permet d'effectuer des ajustements individuels pour chaque lot.
L'autre avantage, que je détaillerai plus tard, est la possibilité d'ajouter des facteurs supplémentaires. Il s'agit des facteurs de votre plan d'expériences, c'est-à-dire des éléments qui interviennent et qui peuvent modifier les formes que vous souhaitez obtenir. J'expliquerai plus en détail leur fonctionnement ultérieurement dans cette présentation.
Au départ, j'hésitais sur le type de spline le plus approprié, car il n'existe pas de règle absolue. J'ai donc commencé par modéliser avec les deux. Dans Functional Data Explorer, il existe de nombreuses méthodes pour trouver un modèle optimal. Ici, j'ai utilisé la minimisation du BIC. On peut aussi recourir à la validation croisée. Dans ce cas précis, l'introduction de facteurs supplémentaires a rendu la définition des ensembles de données de test et d'entraînement plus complexe. Nous avons donc opté pour la minimisation du BIC.
Nous avons ici les résultats obtenus avec les deux types de splines. La ligne rouge représente la moyenne des ajustements obtenus avec chacune d'elles. On constate qu'elles sont assez similaires, mais qu'elles y parviennent de manière différente. La spline B a recommandé un nombre de nœuds plus faible, ici 13, et une fonction cubique, ce qui explique la légère courbure que l'on observe.
P Spline recommandait d'avoir un nœud chaque jour, en principe. Il y a 30 jours, mais 29 nœuds séparent chaque jour. Un lissage était ensuite appliqué à chaque nœud, ce qui permettait d'utiliser une approximation linéaire tout en conservant la courbure grâce à ce lissage. On constate qu'ils sont assez similaires au début. Il y a peut-être quelques différences à la fin, car il manquait potentiellement des données pour certains lots.
Nous allons maintenant examiner les ajustements individuels pour comprendre l'origine des différences observées en fin de séquence. Nous présentons ici, pour un même ensemble de lots, les ajustements spline réels pour chaque lot. On observe un phénomène similaire à celui constaté avec la fonction moyenne : les ajustements sont assez similaires au début et au milieu, mais en fin de séquence, pour les ajustements B-spline, on constate parfois des changements de direction rapides, ce qui est inhabituel dans la réalité.
En général, une fois que les cellules meurent, elles ne ressuscitent pas miraculeusement pour recommencer à croître. Cela semble dû au fait que nous ne disposions pas nécessairement des données du 30e jour pour tous les lots. Comme la spline B utilisait une fonction cubique, elle prédisait des résultats qui n'étaient pas forcément pertinents. En revanche, avec la spline P, qui utilisait une fonction linéaire lisse, nous obtenions des résultats plus conformes à nos attentes en fin de lot, même en cas de données manquantes. Cela suggérait que la spline P serait plus adaptée, mais je souhaitais poursuivre les analyses avec les deux modèles pour le confirmer.
Avec Functional Data Explorer, une fois que vous avez obtenu tous les ajustements de tous les lots, le logiciel génère une fonction moyenne. Il s'agit de la moyenne de tous les ajustements pour tous les lots. Ensuite, il analyse les données et indique : « Où se situent les principales sources de variabilité par rapport à cette fonction moyenne ? »
Si vous vous souvenez des diapositives précédentes, nous avons observé un fort étalement. Je vais revenir en arrière pour vous le montrer. On observe cet étalement important. Les données sont assez resserrées ici, puis on observe cet étalement important à la fin, ce que nous cherchons à étudier. Bien sûr, en observant cette première fonction de forme, qui décrit entre 70 % et 80 % de la variabilité, on constate qu'elle est relativement plate au début, pendant cette phase de croissance, mais qu'elle présente ensuite cette variation à la fin, ce qui est tout à fait normal. En effet, il s'agit probablement de la phase stable que nous essayons de modéliser. Cela semble correspondre à cette phase car la courbe est stable puis augmente, ce qui compense la baisse observée dans la fonction moyenne.
On constate que les deux fonctions capturent cela ici, mais pour la spline P, la courbe monte et reste stable, tandis que pour la spline B, elle monte et présente à nouveau cette petite chute à la fin que nous ne souhaitions pas forcément.
Les fonctions de forme supplémentaires capturent des éléments qui, bien que moins importants, pourraient néanmoins être intéressants à modéliser. Il peut s'agir, par exemple, de petites discontinuités, notamment lors de la transition entre les phases de croissance et stationnaire, ou encore de légères chutes en fin de courbe. Cependant, c'est sans aucun doute la fonction de forme initiale qui nous intéressait le plus.
Les fonctions de forme que j'observe peuvent parfois être un peu difficiles à interpréter, car il faut ensuite les comparer à la fonction moyenne. L'un des avantages de Functional Data Explorer, comme pour toute autre analyse en composantes principales, est qu'il fournit des graphiques de scores. Ainsi, il ajuste chaque lot et lui attribue un score indiquant sa position (élevée ou faible) sur chaque composante principale, permettant ainsi de déterminer quels lots sont fortement ou faiblement représentés par la fonction de forme 1.
Vous pouvez y voir des exemples qui vous aident à comprendre ce changement de forme. On constate ici que ce lot particulier, qui présentait une valeur élevée de cette fonction de forme initiale, a atteint un état stable, tandis que pour celui qui présente une valeur faible, on observe une augmentation suivie d'une diminution.
Par curiosité, j'ai aussi regardé à quoi servent ces autres variables. Elles semblent plutôt servir à détecter les fluctuations parfois observées entre la phase de croissance et la phase stationnaire, dues à un changement de paramètre. Cela peut légèrement perturber la production, ce qui n'est pas très problématique, mais qu'il serait peut-être judicieux de minimiser. Elles pourraient aussi servir à détecter ces baisses de rendement en fin de cycle, dont l'importance reste à déterminer. Il pourrait s'agir simplement d'un artefact lié à la fin de ce lot particulier.
À partir de là, nous avons défini nos composantes principales fonctionnelles et identifié les zones de changement de forme. Mais nous voulions ensuite comprendre ce qui modifiait réellement ces fonctions de forme. Pouvions-nous contrôler la forme obtenue en manipulant les conditions ? C’est là qu’intervient la planification d’expériences fonctionnelle.
Concrètement, cela consiste à effectuer une régression sur chaque composante principale, en tenant compte des conditions supplémentaires de votre plan d'expériences. Il existe de nombreuses options pour modéliser cela. Dans ce cas précis, j'ai opté pour une sélection du meilleur sous-ensemble avec minimisation du critère d'information d'Akaike (AIC), car nous n'introduisons que trois facteurs. Il n'était pas nécessaire de réduire le nombre de facteurs et la complexité du modèle. De plus, la sélection du meilleur sous-ensemble n'était pas trop gourmande en ressources de calcul. C'est la méthode que j'utilise pour tous ces plans factoriels. On constate ici, et c'est très pratique, qu'ils produisent une expression de prédiction. Cela permet de se faire une idée de l'impact de chaque facteur sur chaque forme.
Mais encore une fois, ce n'est pas toujours la meilleure façon d'interpréter les données. On pourrait en déduire que le facteur 3 a le coefficient le plus élevé et qu'il est donc potentiellement le plus influent. Or, ce que je préfère dans JMP, ce sont les profileurs. Ils sont vraiment très utiles pour visualiser ce qui se passe réellement.
Dans ce cas précis, en analysant le profil, j'ai utilisé la maximisation du Jour 30 comme indicateur d'une phase stationnaire prolongée. Ce n'est pas une solution idéale, mais nous pensons que si la production se stabilise, elle restera élevée au Jour 30. En effet, cette optimisation nous montre que la minimisation du Facteur 3, logique compte tenu de son coefficient négatif, nous permet d'obtenir une production plus stable qu'avec un Facteur 3 très élevé. Cela s'est avéré très utile pour nos clients. Cela leur a permis d'identifier les conditions optimales pour une production plus stable.
La deuxième étape, après avoir identifié l'état stationnaire, consistait à déterminer si l'on pouvait prédire les résultats à grande échelle. Les données recueillies comprenaient des essais à grande échelle réalisés dans des conditions de contrôle, puis à petite échelle dans les mêmes conditions, ainsi que des essais après introduction des différentes conditions expérimentales (DOE) en phase de croissance.
Nous souhaitions pouvoir saisir ce phénomène car la transposition du petit au grand format n'est pas parfaite, notamment pendant la phase de croissance. À grande échelle, les cellules disposent de plus d'espace, le mélange cellulaire peut être plus ou moins efficace et l'accès aux nutriments peut être amélioré. On observe généralement une croissance plus rapide à grande échelle qu'à petite échelle. Nous voulions déterminer s'il était possible de générer un outil de prédiction permettant d'anticiper cette augmentation de croissance, mais aussi d'appliquer les impacts issus du plan d'expériences (DOE).
Je ne reviendrai pas sur ce point en détail, mais un ajustement très similaire a été effectué pour la réponse 2. La spline P a de nouveau été choisie en raison de cette anomalie observée en fin de courbe, comme avec la spline B pour la réponse 1. En examinant les fonctions de forme, on retrouve celle-ci. Il s'agit de la fonction en régime permanent. Cependant, dans le cas présent, pour l'échelle, ce n'est pas ce qui nous intéresse le plus.
Étant donné l'importance de l'échelle, nous souhaitons observer son impact sur cette partie. Nous disposons de fonctions de forme supplémentaires qui semblent capturer les changements survenant au début de la production, ce qui est essentiel pour nous. En effet, la fonction de forme 3 semble représenter le changement le plus significatif durant cette phase de croissance.
Là encore, l'analyse des profils permet de le confirmer. Si l'on compare ces pentes avec des valeurs élevées de FPC3, on constate que lorsque FPC3 est élevé, la pente est légèrement moins marquée ; lorsqu'il est faible, le pic est plus prononcé.
Nous souhaitions ensuite passer à la planification d'expériences. Pouvions-nous appliquer les facteurs et l'échelle à ces composantes principales ? Le résultat intéressant concernant la troisième composante principale était que le seul facteur significatif était l'échelle, ce qui est positif car nous avons pu isoler l'impact de l'échelle sur ce changement de forme particulier. Bien que l'échelle ait également influencé les autres composantes principales, nous avons pu isoler cette forme spécifique.
Là encore, l'analyse du profil est essentielle à l'interprétation. Au jour 30, l'échelle n'a que peu d'impact ; la courbe est relativement stable. En revanche, au jour 7, pendant la phase de croissance, on observe une différence : l'effet est plus marqué pour les grandes échelles que pour les petites. Il semble donc que nous parvenions à saisir cette différence d'échelle.
Nous avons pu intégrer ces deux objectifs dans les modèles. Autre avantage de Functional Data Explorer : la possibilité d’exporter les formules de prédiction dans une colonne de votre tableau de données. Ensuite, grâce à la plateforme de profilage standard, vous pouvez créer un profileur permettant de manipuler simultanément les deux réponses, puisqu’elles partagent certains facteurs.
C'est pratique pour plusieurs raisons. D'une part, il est agréable de tout voir d'un seul coup d'œil, et d'autre part, certains clients ou utilisateurs de modèles n'ont peut-être pas accès à JMP Pro ni à l'Explorateur de données fonctionnelles. Cela vous permet de partager le modèle avec une personne qui possède simplement JMP, et elle pourra ensuite l'explorer.
En résumé, nous avons atteint nos deux objectifs de modélisation grâce à la méthode DOE fonctionnelle. Celle-ci a permis de simplifier considérablement la complexité tout en identifiant les zones d'intérêt où les résultats variaient d'un lot à l'autre selon les conditions. Nous avons ainsi pu isoler certaines fonctions en fonction de facteurs spécifiques. Enfin, nous avons créé un profileur particulièrement adapté au partage avec le client ou l'utilisateur du modèle, car ce sont eux qui, au final, l'utiliseront.
Certaines limitations. Il me semble que le sujet est abordé chaque année lors de la conférence JMP : l’absence d’erreur de prédiction fournie par Functional DOE et Functional Explorer. J’ai tenté d’explorer la possibilité, en affichant les résidus de prédiction, d’obtenir une indication en modélisant ces résidus. Mes résultats ont été mitigés, mais je suis ouvert à toute suggestion pour améliorer cette approche à l’avenir.
Une autre fonctionnalité intéressante, et peut-être même possible (mais je n'ai pas trouvé comment faire), serait l'optimisation par rapport à une fonction de forme spécifique. Dans mon cas, j'optimisais pour maximiser la valeur du jour 30, utilisée comme indicateur. Une valeur élevée au jour 30 indique une production relativement stable. Ce n'est pas un indicateur parfait. Si l'on pouvait définir une fonction idéale, correspondant à une production plate, comment optimiser par rapport à cette fonction ? Ce serait utile. Il est possible que cela existe déjà, mais je l'ignore.
L'autre risque, inhérent à toute modélisation flexible, est bien sûr le surapprentissage sur des données très bruitées. Dans ce cas précis, les données étaient plutôt régulières, ce qui ne sera pas toujours le cas. Généralement, pour limiter ce surapprentissage, des techniques comme la validation croisée sont très utiles. Cependant, comme les conditions d'exécution n'étaient pas identiques pour tous les tests, l'introduction de facteurs supplémentaires a complexifié la définition d'un ensemble de données de test et d'un ensemble d'entraînement. Je suis tout à fait ouvert à toute suggestion à ce sujet.
Globalement, nous avons pu atteindre nos objectifs. Bien entendu, ce travail n'est pas le fruit du seul travail de ma part. Notre équipe préclinique a fourni de nombreuses données. Certains de mes co-auteurs ont également contribué à cet article, notamment en ce qui concerne le traitement continu. J'ai aussi bénéficié de l'aide précieuse d'autres statisticiens de notre équipe de recherche. Je tenais à les remercier chaleureusement. Vous trouverez également des références ici. Ma présentation est maintenant terminée.