Data

Accélérer l'analyse de résultats scientifiques sur AWS et Snowflake

Le contexte

Une CRO européenne produit, pour ses clients, de très grands volumes de résultats expérimentaux en amont de la découverte de nouveaux médicaments. La valeur de ce travail ne réside pas uniquement dans la production des données, mais dans la vitesse à laquelle les équipes projet peuvent les analyser puis les restituer.

Le goulot d’étranglement n’était pas scientifique, il était informatique : des traitements lancés à la main, des fichiers qui circulent d’un poste à l’autre, et des analyses si longues qu’on hésite à les relancer. Cette hésitation est le vrai coût : elle réduit le nombre d’hypothèses qu’une équipe se permet d’explorer.

Ce que nous avons fait

Nous avons industrialisé la chaîne, de l’arrivée des résultats jusqu’à leur restitution.

Des résultats expérimentaux à la restitution, par un entrepôt uniqueLes résultats expérimentaux arrivent sur S3, aux côtés de la chimiothèque et des autres sources. Leur arrivée déclenche le pipeline de traitement via Lambda, sans lancement manuel. Les données traitées sont chargées dans un entrepôt Snowflake unique, que toutes les analyses interrogent. Cet entrepôt est ensuite consommé de trois façons : des tableaux de bord Power BI, un portail client servi par CloudFront derrière WAF, et les requêtes ad hoc des équipes projet.Des résultats bruts à la restitutionRésultats d’essaissortie instrumentChimiothèquestructures, métadonnéesautres sourcesL’arrivée sur S3 déclenche le pipeline — Lambda, sans lancement manuelEntrepôt Snowflake — un référentiel unique interrogeablePower BItableaux de bordPortail clientCloudFront et WAFÉquipes projetrequêtes ad hoc
Le pipeline démarre parce que des données sont arrivées, pas parce que quelqu’un a pensé à le lancer. Et les trois canaux de lecture sont trois vues d’un même entrepôt : la fraîcheur d’un chiffre devient une propriété du système au lieu d’une question à poser autour de soi.
  • Industrialisation des traitements sous forme de pipelines reproductibles sur AWS, déclenchés automatiquement à l’arrivée de nouvelles données plutôt que lancés à la demande par quelqu’un qui doit y penser. Le dépôt d’un fichier sur S3 est l’événement qui déclenche tout le reste.
  • Un entrepôt sur Snowflake pour que les analyses portent sur un référentiel unique et interrogeable, au lieu d’extractions dispersées dont plus personne ne connaît la fraîcheur.
  • La restitution et le reporting à destination des équipes projet et, au-delà, de leurs clients : tableaux de bord Power BI pour le suivi récurrent, et un portail client servi par CloudFront derrière WAF, dont les droits d’accès et l’état des livrables sont tenus dans DynamoDB. Un portail qui expose des données de clients concurrents entre elles n’a pas droit à l’approximation sur le cloisonnement.
  • La recherche par similarité dans la chimiothèque. Les structures et les résultats sont transformés en embeddings, indexés dans OpenSearch à côté des champs textuels. Une seule requête répond alors à « proche de cette structure, et testé après cette date », ce qu’aucun filtre ne sait exprimer. C’est la question que pose réellement un chimiste, et jusque-là elle se traitait de mémoire.
  • Une modélisation des données pensée pour que l’ajout d’un nouveau type d’expérience ne demande pas de reconstruire la chaîne de traitement.
Recherche par similarité dans la chimiothèqueLes structures et les résultats de la chimiothèque sont transformés en embeddings calculés sur Lambda. Ces vecteurs sont indexés dans OpenSearch à côté des champs textuels, de sorte qu’une seule requête combine similarité et filtres exacts. Le résultat est une liste classée de composés comparables, rendue à l’équipe projet, et non un tableau de lignes qu’un chimiste doit dépouiller.Rechercher la chimiothèque par similaritéChimiothèquestructuresEmbeddingscalculés sur LambdaIndex OpenSearchvectoriel et mots-clésComposés prochesclassés pour l’équipe
La similarité est la question que pose réellement un chimiste, et elle ne s’exprime pas comme un filtre. Garder les vecteurs et les champs textuels dans le même index permet à une seule requête de répondre à « proche de cette structure, et testé après cette date » sans deux allers-retours.

Le résultat

Des analyses qui se comptaient en jours se comptent en minutes. Ce n’est pas seulement un gain de temps : cela change la façon de travailler, parce que relancer une analyse avec d’autres paramètres devient banal au lieu d’être un arbitrage à demander.

Les équipes projet passent leur temps sur l’interprétation des résultats plutôt que sur la mécanique qui les produit.

Toutes les références

Parlez-nous directement

Écrivez-nous directement. Pas de commercial, pas d'appel de qualification. C'est l'un de nous deux qui répond, sous 24h.

contact@onescale.io

Nous répondons sous 24h, et c'est l'un de nous deux qui répond.

Basés à Lyon, nous travaillons en France, en Europe et à l’international.