Lo sviluppo e la produzione di biofarmaci comportano numerosi esperimenti e report standardizzati. La maggior parte dei report contiene informazioni provenienti dal protocollo associato, dati sulla qualità del prodotto da un sistema di gestione delle informazioni di laboratorio (LIMS), informazioni dalla documentazione di laboratorio e dati sulle prestazioni di diversi dispositivi. Attualmente, queste fonti di dati vengono elaborate con JMP, Excel e altri software, e successivamente assemblate in presentazioni PowerPoint e documenti Word.
Dimostro l'automazione di questo processo completo, sviluppata internamente con JMP. Con l'ausilio di un diario, l'utente viene guidato attraverso un flusso di lavoro automatizzato. Il sistema utilizza i dati LIMS e la documentazione di laboratorio per compilare automaticamente, ad esempio, le risposte di una serie di esperimenti (DoE) e propone opzioni di illustrazione una volta che l'esperto in materia (SME) ha creato un modello. Queste illustrazioni, i tracciati cromatografici e le informazioni del protocollo vengono quindi assemblati in una presentazione PowerPoint e in un report Word, seguendo una struttura predefinita.
La generazione automatizzata di questo report consente alle PMI di risparmiare una notevole quantità di tempo, permettendo loro di concentrarsi maggiormente sull'interpretazione dei risultati. Inoltre, mantenendo l'automazione in un unico software, l'integrità dei dati è preservata e gli standard di layout e valutazione sono rispettati in ogni report.
Ciao e benvenuti. Oggi vorrei mostrarvi un flusso di lavoro per la raccolta, l'analisi e la presentazione di dati sperimentali. Dato che presento al Discovery Summit, ho scelto come esempio un report del Dipartimento dell'Energia degli Stati Uniti (DOE), ma ovviamente questo strumento è molto generale e può essere utilizzato per qualsiasi tipo di report.
Per dare una breve panoramica della nostra attività, Rentschler Biopharma è un'azienda che si occupa di produzione e sviluppo conto terzi di biofarmaci. Ciò significa che sviluppiamo processi di purificazione per qualsiasi tipo di biofarmaco.
La maggior parte sono, ovviamente, anticorpi. Ne abbiamo oltre 120, ma abbiamo anche prodotto il vaccino a mRNA contro il COVID-19 per BioNTech Pfizer. E poi abbiamo un portafoglio piuttosto ampio con oltre 140 modalità terapeutiche, per lo più anticorpi monoclonali, che sono quelli semplici e un po' banali, ma anche anticorpi multispecifici, proteine di fusione, enzimi ricombinanti e altre cose un po' più interessanti.
Lo svantaggio di avere 140 modalità diverse è che bisogna scrivere 140 report diversi, e quando si produce qualcosa, ad esempio, ogni anno, si devono scrivere anche report annuali. Per ognuno di questi progetti, quello che facciamo, scriviamo report e, in aggiunta, poiché lavoriamo per i clienti, realizziamo presentazioni PowerPoint, a volte anche settimanalmente.
Certo, la preparazione può richiedere parecchio tempo, quindi l'idea è di ridurlo automatizzando il processo con JMP. A tal proposito, ho portato un esempio: un report DOE (Design of Experiments). Immaginate di dover eseguire diversi DOE ogni volta che sviluppate un processo, per capire come funziona, quanto è robusto, se lo è, come ottimizzarlo e così via. Noi utilizziamo un approccio DOE per questo scopo e ogni processo ha diverse fasi, quindi ogni processo può generare 5 o 10 report, il che rappresenta un carico di lavoro considerevole. D'altro canto, è un processo molto standardizzato, quindi è un ottimo esempio per sfruttare la potenza dell'automazione.
L'unica cosa di cui hai bisogno è una tabella JMP, una tipica tabella DOE che JMP genererà una volta che gli avrai chiesto di creare un progetto sperimentale. Ti serve un protocollo, che comunque ti serve, ogni cliente lo richiede, e alla fine ti serve anche almeno JMP-18. Questo perché JMP-18 ha una buona integrazione con Python che semplifica un po' le cose, quindi molte delle cose che vedrai oggi funzionano con Python, anche se l'utente non se ne accorgerà, ma ha il vantaggio di poter fare cose un po' interessanti con Python.
Innanzitutto vi mostrerò brevemente come funziona in teoria, per poi passare a un esempio pratico. Come si presenta? Si parte da una tabella DOE vuota, che potete vedere qui a sinistra. Contiene l'ID di una prova, un modello, diversi fattori e risposte, e viene compilata automaticamente con pochi clic dal LIMS. Il vantaggio è che, invece di copiare e incollare i dati dal LIMS, con il rischio di commettere errori, il computer lo fa automaticamente.
Il sistema blocca automaticamente le colonne per garantire l'assenza di errori e traccia ogni singolo passaggio effettuato dall'utente. Questo è estremamente utile in termini di integrità dei dati, poiché permette di tracciare con precisione la loro provenienza. I dati non possono essere manipolati accidentalmente, il che rende molto felice il nostro team di controllo qualità.
Dopo aver copiato i dati nella tabella DOE, l'esperto in materia deve costruire il proprio modello. Da questo punto di vista non è cambiato nulla. È possibile farlo nel modo che si preferisce. JMP Build dispone già di tutte le funzionalità necessarie e non ci sono modifiche in tal senso. È sufficiente salvare il modello e poi tornare allo strumento per creare tutti i tipi di grafici che solitamente desideriamo includere nei nostri report.
Questi includono, ad esempio, un grafico di replica in cui è possibile vedere come i dati si distribuiscono nelle diverse esecuzioni, un riepilogo dell'adattamento in cui è possibile stimare la qualità del modello, stime dei parametri che indicano quale parametro è responsabile di una risposta specifica e diversi tipi di grafici di profilazione per fornire una panoramica di quali fattori influenzano quale risposta e, infine, alcuni grafici di contorno se si hanno interazioni bidimensionali o tridimensionali, che è possibile visualizzare direttamente in un unico grafico per trovare magari un ottimo o localizzare qualsiasi tipo di problema al limite del fallimento o cose simili.
Quindi, questi dati vengono assemblati in una presentazione, o possono essere assemblati in una presentazione. L'idea è che i nostri clienti desiderano essere aggiornati sui nostri progressi e, a tal fine, tutti i grafici generati possono essere facilmente assemblati in una presentazione PowerPoint. In sostanza, vengono aggiunte tutte le figure, viene aggiunta automaticamente anche un'intestazione e l'esperto in materia deve solo scrivere la relativa interpretazione.
Il secondo aspetto, che vi mostrerò tra un attimo, consiste nell'assemblare tutto in un report. Questo report conterrà i dati provenienti dal LIMS, ovvero un database SQL, dalla documentazione elettronica del nostro laboratorio, che includerà dati come i tempi di mantenimento e simili. Potrà inoltre contenere dati esportati dal dispositivo, come cromatogrammi o grafici di filtrazione, e infine i dati del protocollo. Si tratta di piani sperimentali, denominazioni e altre informazioni di questo tipo.
Come appare, potete vederlo un po' sulla destra. Ci sono tabelle aggiunte dal protocollo o dal LIMS, ci sono grafici provenienti dai dispositivi che vengono poi colorati in qualsiasi modo necessario, come le prestazioni della pompa o i grafici cromatografici e analitici.
L'obiettivo di tutto ciò è passare da una situazione in cui tutte queste operazioni devono essere eseguite manualmente e, di conseguenza, soggette a errori, a una situazione in cui l'esperto in materia si limita a costruire il modello, JMP genera una bozza di report che viene poi interpretata e revisionata dagli esperti stessi, con un notevole risparmio di tempo e, naturalmente, di frustrazione.
Spero che vi piaccia, e vorrei mostrarvi come funziona nella pratica. Quelli che vedete qui sono tipici journal di JMP, quindi per le mie attività di automazione di solito utilizzo i journal. Hanno una breve introduzione e dei link, e poi molti di questi elementi di schema che vi guidano attraverso il processo.
Si inizia dall'inizio e in sostanza ti dice cosa devi fare, carichi i dati LIMS, logicamente devi iniziare da lì, e poi troverai sempre un pulsante. Quindi clicchiamoci sopra, che ti chiederà di inserire una tabella DOE vuota. Prova e preparala. Ha questo aspetto.
Questa è una tabella tipica che viene generata. Contiene tutti i fattori e alcuni numeri di esecuzione. Ci sono degli script che vengono inseriti automaticamente da JMP e, ovviamente, le risposte sono ancora vuote. Successivamente, viene richiesto di recuperare i dati dal LIMS. Non posso mostrarveli direttamente perché devo utilizzare dati casuali.
Tuttavia, l'effetto è lo stesso, quindi ciò che vedi è che le risposte vengono compilate automaticamente e, in aggiunta, sono colorate di verde. Questo indica semplicemente che i dati sono stati verificati. Innanzitutto, significa che sono bloccati, quindi non puoi modificarli accidentalmente. Ma i dati sono anche salvati, quindi anche se ora salvassi o modificassi i dati, in seguito il sistema rileverebbe una discrepanza e ti segnalerebbe un problema con la verifica.
Salva anche tutti i passaggi di estrazione dei dati. Si tratta di variabili di tabella che puoi vedere qui. Quello che puoi fare è quindi iniziare a creare tutti i tipi di grafici. Ad esempio, è sempre utile il grafico di replica. Tutto quello che devi fare è cliccare su Crea grafico di replica.
La prima cosa che ti chiede è una tabella, che verrà richiesta solo una volta per sessione. In sostanza, questa verifica dei dati funziona non solo sulla base di tabelle, ma anche su grafici con ogni tipo di figura. Non abbiamo ancora creato nessuna figura, quindi annulliamola. A questo punto ne creerà una nuova. Ora, invece, viene generato questo grafico di replicazione, che possiamo vedere qui con tutte le risposte e come cambiano le repliche; i punti blu rappresentano i punti centrali.
Quello che ha fatto anche sul sito è stato creare una bella tabella o una tabella di verifica del grafico. Possono vedere direttamente quali dati sono presenti, quindi come questo è questo file, il suo nome, quali passaggi ha eseguito qualcuno, alcune verifiche manuali perché dati casuali che ho inventato. L'ho fatto proprio ora. Ho creato il file.
Poi c'è questo valore hash MD5, che in sostanza è il valore che si può calcolare per ogni singolo file. In questo modo, si può verificare se il file che si sta utilizzando non solo ha lo stesso nome, ma è effettivamente identico. Quindi c'è una sorta di sicurezza che impedisce a qualcun altro di salvare un file simile con lo stesso nome e di considerarlo valido anche se non lo è. Come ho detto, si tratta di dati casuali, quindi la fonte non è verificata e questo segnala un problema, ma ai fini di questa dimostrazione non è rilevante.
Avete visto che potete chiuderlo. Tutti questi grafici vengono salvati automaticamente nella cartella. Poi dovete creare un modello. Potete usarlo, fate come preferite. Facciamo clic su Esegui, e poi potete rimuovere alcuni fattori. Possiamo tranquillamente ignorarli. Mi stupisce sempre la qualità dei modelli casuali che si possono generare, così, senza problemi.
Qui puoi anche rimuovere alcuni fattori. Sembra casuale. Nota delle differenze e, naturalmente, puoi farlo come preferisci. Lasciamo le cose come stanno. Puoi salvare i risultati nella tabella dati, se lo desideri.
E poi puoi iniziare a creare dei grafici. Ad esempio, puoi creare un grafico riassuntivo dell'adattamento che assomiglia a questo. Questo ti dà una panoramica di quanto sia buona la tua risposta. Quando il modello dei dati è, ovviamente, pessimo, tuttavia, almeno hai una buona panoramica di quanto sia scadente il tuo modello. In questo modo puoi capire quali parametri giocano un ruolo nel tuo modello.
Basta cliccare di nuovo. Lo fa automaticamente per ogni singola risposta. Questo viene poi salvato, quindi ognuno di questi fattori è responsabile di questa risposta. Infine, o meglio, ci sono i grafici di previsione. Le previsioni offrono una buona panoramica di come si presenta la situazione.
Basta cliccare su "crea grafici" e ne otterrete diversi. Quindi, a seconda dei fattori che avete, potete ottenere ogni singolo grafico, ogni risposta con ogni fattore. Potrebbe piacervi. Ad esempio, se per la risposta D sono responsabili tre fattori, otterrete un grafico riassuntivo in cui potete vederli tutti insieme. È una bella panoramica.
Certo, puoi chiudere anche quello. Infine, possiamo creare un grafico a curve di livello, se preferisci. Fattori predittivi, esegui le formule di previsione del vettore 1, o magari 3. Puoi scegliere la tua combinazione di colori, lasciarla così com'è, e otterrai un bel grafico a curve di livello in cui potrai vedere chiaramente come è distribuito e come si influenzano a vicenda.
In sostanza, questo è tutto. Naturalmente, è possibile generarne altri quando si hanno più dati, ma per ora fermiamoci qui e chiudiamo il file, possiamo salvarlo. Magari ve lo mostrerò a breve. Per tutte queste cifre che abbiamo annotato, è stata generata un'ultima riga, e si possono vedere i passaggi di estrazione dei dati che abbiamo eseguito, il nome del file e poi questo valore hash. Lo salviamo.
Bene, ora hai un sacco di dati. L'unica cosa che devi fare è aggiungerli a un report, e ovviamente potresti copiare e incollare tutto perché sono già salvati, ma è molto più divertente se ti basta cliccare e lasciare che JMP faccia il lavoro. Quindi devi trovare la cartella. Questo è, come ho detto, uno strumento che funziona per tutti i tipi di report.
Quindi, per ogni tipo di report, serve una tabella diversa. Ve la mostrerò tra un attimo. Come potete vedere, qui ci sono diverse fonti. Questa tabella indica a JMP da quale fonte prelevare i dati per generare il report, quali punti dati utilizzare. Dal protocollo vengono copiate alcune tabelle, la codifica dei passaggi intermedi, lo schema di esecuzione, alcuni parametri, una panoramica dei batch, tutti i filtri e cose del genere.
Quindi, dallo strumento di creazione di grafici del DOE, verrebbero copiati i grafici dei residui, le stime dei parametri, le previsioni, i grafici di contorno e dai dati LIMS, che è un altro strumento, si otterrebbe l'elenco dei metodi analitici utilizzati. Poi, ovviamente, serve un modello. Ogni report ha il suo modello. Io preparo il Q1 per motivi di privacy. Ho bisogno di una cartella e, ovviamente, serve anche un protocollo.
Manipola le fasi del processo. Se desideri farlo, puoi impostare alcune opzioni. Dobbiamo sapere quali sono le tabelle DOE. Basta cliccare su OK, attendere qualche secondo e vedrai che sono stati aggiunti 22 elementi. E questo è tutto, senza che tu debba dedicare tempo a questa operazione.
E poi qui puoi vedere direttamente come genera questa tabella delle origini dati, quindi ti dice cosa ha fatto. Ha copiato la codifica intermedia, la codifica dei passaggi dal protocollo. Questo è il file. L'ha fatto con quello e così via. Lo fa con un mucchio di tabelle dal protocollo, poi con parecchie figure che sono state usate ora nell'altro strumento.
Li scrive in questa tabella di origine dati e ti dice che sì, non sono verificati perché si tratta di dati casuali, ma in generale ottieni un elenco completo di come si presentano. E poi, ovviamente, ottieni anche un report completo. Questo è quello che riceverai come bozza. Il report contiene parecchie informazioni, ovviamente, e deve essere compilato. Ho dovuto accorciarlo un po' per motivi di privacy, ma posso mostrarti come appare in generale.
Certo, devi scrivere una copia del riepilogo, ma puoi iniziare con una panoramica delle previsioni, quindi quale fattore influenza quale risposta. Se è verde, allora è significativo. Altrimenti, non lo è. Dipende dal tuo modello [inaudibile 00:17:06], che abbiamo realizzato. Poi, ovviamente, alcuni dati che ho eliminato.
Poi ci sono alcuni buffer che sono stati estratti dal protocollo. C'erano dei filtri che sono stati trovati anche nel protocollo, la codifica dei passaggi era un protocollo completo, poi un elenco di metodi analitici e quali versioni sono state utilizzate per ogni esecuzione. Questo proviene direttamente da LIMS. Schema di esecuzione, che è stato anch'esso dal protocollo, e altri dati dal protocollo, e poi più tardi i risultati, la tabella che abbiamo appena fatto, e ovviamente tutti i grafici che abbiamo appena fatto. È una lista bianca, grafici dei residui.
Si ottiene quindi un riepilogo e, per ogni singola risposta, il rischio, le stime dei parametri e i grafici di previsione, ovvero quelli significativi, e, se disponibili, anche il grafico di controllo. E poi, per ogni singola risposta, come potete immaginare, il sistema lo fa sempre automaticamente, e si ottiene una tabella completa. Poi, ovviamente, bisogna scrivere la valutazione e le conclusioni. Il tutto si conclude con le abbreviazioni. Questa è una funzione che viene utilizzata automaticamente. Se l'abbreviazione è presente nel report, viene aggiunta a questo elenco.
Quindi, tutto ciò si traduce in un report molto breve, di circa 30 pagine e 20 elementi, ma ovviamente funziona anche per report molto più ampi con molti più elementi. In particolare, una panoramica delle fonti di dati fa risparmiare molto tempo, perché altrimenti qualcuno dovrebbe controllarle.
Permettetemi di concludere. Spero di avervi convinto che è possibile risparmiare molto tempo utilizzando JMP in Python per automatizzare i flussi di lavoro. Inoltre, riduce al minimo gli errori perché non è necessario copiare e incollare o altro, e allo stesso tempo permette di documentare ogni singolo passaggio, registrando chi lo ha eseguito, quando, con quale strumento e così via.
E quest'ultimo modulo fornisce un formato di report standardizzato, il che è importante. Ad esempio, lavoro per il reparto di purificazione a valle, il che significa che sono responsabile della purificazione di ciò che riceviamo dal reparto a monte. Naturalmente, è importante che i report che un cliente riceve da noi siano più o meno uniformi, con gli stessi colori e così via.
Con questo, concludo la mia presentazione. Sarei molto lieto di incontrarvi tutti al Discovery Summit di Berlino e, se avete domande, non esitate a contattarmi. Grazie mille.