Mi chiamo Ben Richardson. Sono entusiasta di presentare oggi parte del lavoro che abbiamo svolto presso UPSIDE Foods per automatizzare l'analisi dei dati di bioprocesso in JSL per la carne coltivata. Vorrei innanzitutto sottolineare alcuni importanti contributi di Megan e Julia, e in particolare di UPSIDE Foods, l'azienda che rappresento qui. Ecco alcuni dei nostri prodotti, mostrati sulla destra.
Per prima cosa, introdurrò brevemente l'indice per spiegare meglio cosa tratteremo. Innanzitutto, una breve introduzione di base nel caso in cui qualcuno non abbia familiarità con la carne coltivata e con i terreni di coltura cellulare. Questo è specificamente il reparto in cui lavoro, e sarà molto importante per spiegare perché JMP è stato uno strumento così potente per noi.
Parlerò anche di come il nostro script JSL abbia accelerato lo sviluppo di bioprocessi qui in UPSIDE Foods. Poi farò una dimostrazione dello script, mostrando alcune delle funzionalità di questo strumento che abbiamo sviluppato, come l'accesso in tempo reale ai dati chiave degli strumenti, alcuni strumenti di visualizzazione dei dati, nonché l'analisi delle tendenze, e persino alcune interessanti funzionalità come gli strumenti rivolti all'operatore che utilizzano funzioni come Tabulate.
L'ultima sezione è quella in cui introdurrò una guida per principianti all'automazione di alcuni di questi calcoli avanzati in JMP. Per farlo, mi concentrerò su un caso di studio. Nel bioprocessing, il consumo di glucosio autospecifico è un parametro piuttosto importante. È anche un parametro notoriamente difficile da calcolare.
Parlerò di quattro cose diverse che abbiamo fatto per scomporre questo calcolo avanzato. La prima sarà la standardizzazione della denominazione dei campioni. Questo è un aspetto davvero fondamentale e fondamentale del nostro approccio. Inoltre, parlerò di come accediamo effettivamente ai dati utilizzando la connettività di database aperti, di come puliamo, ordiniamo e organizziamo automaticamente i dati e, infine, di come creiamo effettivamente le colonne delle formule utilizzando alcune funzioni chiave.
Ma entriamo subito nel vivo. Cos'è la carne coltivata? Cos'è UPSIDE Foods? UPSIDE Foods è stata la prima azienda fondata nel settore della carne coltivata nel 2015. Da allora è diventata un'azienda leader nel settore, ottenendo l'approvazione normativa da parte dell'USDA e della FDA, nel 2022.
Quello che facciamo è prendere cellule animali. Questa non è carne di origine vegetale. Questa è carne animale, e isoliamo le cellule. Questo non richiede macellazione. Non è necessario uccidere animali per farlo. Poi sviluppiamo linee cellulari da quegli isolamenti in terreni di coltura cellulare. Di nuovo, è lì che ho vissuto.
Cellule e terreni di coltura cellulare vengono combinati in un bioreattore. In modo molto simile a come si produce la birra, si usa il lievito per far crescere queste cellule. Coltiveremo queste cellule animali in un bioreattore e poi le formuleremo in un prodotto per il consumo umano. La cosa davvero entusiasmante è che la biolavorazione potrebbe rendere la produzione di carne più efficiente, riducendo i costi per i consumatori e limitando l'impatto ambientale negativo. È qualcosa che mi entusiasma molto. Minor consumo di suolo e acqua e persino emissioni di gas serra, ma anche riduzione della crudeltà sugli animali.
Perché i terreni di coltura cellulare sono così importanti? L'ambito di cui parlerò qui, il cibo per le cellule, qualcosa di cui vogliamo parlare. Potete vedere alcune soluzioni nell'angolo. Sono colori divertenti, per lo più derivanti dalle vitamine, in realtà, che creano quei colori. I terreni di coltura cellulare sono davvero importanti perché forniscono le cellule, i nutrienti e l'ambiente circostante necessari per crescere al di fuori del corpo.
I terreni di coltura cellulare non sono niente di speciale. Sono solo piccole porzioni di ingredienti alimentari comuni che daremmo da mangiare a polli o mucche o che mangeremmo noi stessi: amminoacidi, zuccheri, vitamine e minerali. Per accelerare lo sviluppo di terreni a basso costo, soprattutto per i prezzi di mercato, UPSIDE Foods ha integrato verticalmente la produzione di terreni di coltura cellulare. Ciò significa che abbiamo sviluppato internamente formulazioni proprietarie di terreni da zero con componenti di qualità alimentare.
Se si ha familiarità con i terreni di coltura cellulare o con i bioprocessi, progettare le formulazioni dei terreni da zero non è un compito facile. È qui che entra in gioco il software statistico JMP. Giusto per illustrare quanto sia difficile, se prendiamo un fattoriale per un disegno sperimentale con 50 componenti del terreno, questa è in realtà una stima al ribasso. Molti terreni possono avere più di 100 componenti. Se prendiamo solo una concentrazione bassa, media e alta per ciascuno di questi, lo spazio di progettazione è 3 alla 50esima potenza, ovvero 7,17 volte 10 della 23esima. Questo è più di una mole, 6,02 volte 10 della 23esima, che è praticamente infinito. Non possiamo testare tutte queste condizioni.
È qui che entra in gioco il design of experiments. Il DOE è una metodologia di statistica applicata che consente di sondare in modo più efficiente gli spazi di progettazione, soprattutto in relazione a un fattore alla volta o agli approcci OFAT. Ecco un'illustrazione per gentile concessione di JMP. Se osserviamo tre variabili diverse e le visualizziamo in uno spazio tridimensionale, qui abbiamo le variabili uno, due e tre.
Con un approccio tradizionale, un fattore alla volta, ottimizzeremmo la variabile uno, troveremmo la condizione migliore, passeremmo alla variabile due, troveremmo la condizione migliore e infine la variabile tre. Alla fine troveremo un massimo locale. E se la condizione migliore fosse da qualche parte qui e non la individuassimo? Per prima cosa, impiegheremmo molto più tempo e impegno per non trovare la condizione migliore.
Il motivo per cui JMP è così potente in questo caso e così importante per il nostro approccio è che JMP dispone di un software DOE leader del settore. È davvero un gold standard per lo sviluppo di terreni di coltura cellulare e per lo sviluppo di bioprocessi. JMP è stato ampiamente adottato dai diversi gruppi di sviluppo di bioprocessi di UPSIDE Foods. È uno strumento naturale da considerare e utilizzare per alcuni di questi script.
Parliamo di come questo script sia stato effettivamente in grado di accelerare lo sviluppo dei bioprocessi qui alla UPSIDE Foods. Ho qui un piccolo schema, che isola le varie fasi della pipeline di sviluppo dei bioprocessi, dalle attività a monte, come lo sviluppo delle linee cellulari, fino alla scienza e alla tecnologia di produzione e alla produzione vera e propria. Ho parlato molto dello sviluppo dei media. Viviamo qui, ma anche lo sviluppo dei processi presenta molte sovrapposizioni.
Ciò che voglio sottolineare è che i cicli di feedback dinamici lungo questa filiera di sviluppo sono davvero un elemento fondamentale per guidare l'innovazione scientifica e le scoperte rivoluzionarie. In pratica, si potrebbe ottenere una linea cellulare migliore che superi lo sviluppo del terreno di coltura. Questo ci permetterebbe di ottenere una svolta su alcuni nutrienti limitanti e sui cicli iterativi tra questi, ed è proprio qui che avviene questa entusiasmante scoperta scientifica.
Stavo parlando di come il Dipartimento dell'Energia ci abbia permesso di sondare in modo più efficiente i nostri spazi di progettazione. Potreste pensare che i nostri esperimenti si stiano riducendo. In realtà, poiché stiamo cercando di progettare i media da zero, i nostri esperimenti sono ancora enormi. Anche se stiamo testando lo spazio in modo più efficiente, abbiamo ancora questo spazio di progettazione assurdo che dobbiamo indagare.
Abbiamo un numero enorme di campioni, a volte esperimenti, oltre 100 condizioni per costruire questi terreni da zero. Potete vedere una foto della mia collega Dasha che stampa le etichette. È solo un esempio di quanti campioni stiamo lavorando qui e di come questo abbia effettivamente creato un collo di bottiglia tra i team.
Per illustrare ulteriormente questo concetto, ho alcuni conteggi cellulari annuali effettuati dall'azienda, che sono piuttosto impressionanti. Oltre 40.000 conteggi cellulari all'anno per il team media qui a UPSIDE Foods. Inevitabilmente, questo cambierà nel corso della pipeline. Man mano che si raggiungono scale sempre più grandi, si hanno sempre meno contenitori e gradi di libertà. Come potete vedere, PD, il passaggio successivo al nostro, in realtà esegue ancora circa 7.000 o 8.000 campioni all'anno.
Stiamo cercando di elaborare un'enorme quantità di dati, e ci stiamo muovendo a una velocità fulminea per ottenerli. Abbiamo sviluppato questo script JSL per ridurre i tempi medi di elaborazione dei dati di routine sui bioprocessi, per diffondere queste informazioni più rapidamente, per farle arrivare ad altri team e accelerare i cicli di feedback. Siamo riusciti a ridurre i tempi di elaborazione dei dati di routine da circa una settimana a circa due giorni, ovvero circa 3 volte di più, il che è davvero entusiasmante.
Ora farò una breve dimostrazione di script. Vi mostrerò alcune delle funzionalità di questo strumento. Ecco lo script. È piuttosto grande. È sicuramente cresciuto nel tempo. Abbiamo un sacco di codice qui dentro. Durante questa breve presentazione, non avrò tempo di entrare nei dettagli. Quello che farò è prendere e mostrare alcune delle funzionalità. Se eseguo questo script, la prima cosa che succederà è che apparirà una piccola finestra di avviso che questo chiuderà altre finestre che potreste avere aperte. Per me va bene.
Userò un esempio, forse il 5109, uno dei nostri esperimenti. Questi sono dati reali. Lo script esegue la nostra connessione al database aperto e estrae i dati in JMP per me. Questo velocizza il processo ed è qualcosa che possiamo fare regolarmente. Possiamo farlo quando necessario. Mentre l'esperimento è in corso, i dati vengono caricati regolarmente nel nostro database e possiamo estrarre e visualizzare i grafici in tempo reale. Potete vedere che diversi strumenti si stanno popolando. Sta creando alcune tabelle di dati per noi. Poi mi chiederà se voglio aggiungere una chiave di condizione.
La chiave di condizione è qualcosa di cui parlerò tra un minuto e che aprirò. Quello che faremo è dire di sì in modo da poter mostrare alcune di quelle funzionalità. Mi chiederà anche se voglio aggiungere dati aggiuntivi non legati a uno strumento. Si tratta di metadati aggiuntivi che potresti voler aggiungere. L'esempio qui è pack_cell_volume. Si tratta in realtà di qualsiasi cosa non venga eseguita da uno strumento e caricata automaticamente nel database. Diremo di sì, di nuovo, in modo da poter mostrare alcune funzionalità. Quindi quello che lo script farà qui è costruirci una tabella dati. Abbiamo una bella tabella dati già pronta.
Prima di entrare nel vivo dell'argomento, aprirò uno script di normalizzazione. Si tratta di un piccolo script che ho scritto per normalizzare i dati. Ridimensionerà tutti i numeri da zero a uno, così da poterne parlare senza violare la proprietà intellettuale. Prenderò questo script qui, lo eseguirò insieme alla mia tabella dati qui, e vedremo cosa succede.
Il tempo di elaborazione è appena aumentato. Ora, il nostro valore massimo è uno, e tutto il resto è relativo a questo. Non devo mostrarvi tutti i dati importanti che potrebbero essere nascosti qui. Posso solo mostrarvi alcune delle funzionalità.
Torniamo al codice di condizione. Lo spiegherò brevemente come funziona. In pratica, abbiamo condizioni numeriche, 202, 203, 204. Quindi, in pratica, tutte le variabili che stiamo effettivamente modificando sono collegate a queste tramite questa chiave di condizione. È qui che inseriremo tutte queste informazioni perché abbiamo bisogno di un sistema di denominazione standardizzato per i campioni. Ne parlerò più avanti. Questo serve solo a illustrare come stiamo effettivamente collegando le informazioni a questo.
Abbiamo una bella tabella di dati di grandi dimensioni. Come potete vedere, abbiamo 1.206 misurazioni campione. Abbiamo tutti i parametri, tutti i calcoli, il lattato massimo. Abbiamo la generazione specifica del lattato. Abbiamo i tempi di raddoppio e altre cose divertenti. Abbiamo tutti i nostri dati in un unico posto. La prossima cosa che voglio evidenziare qui sono alcuni di questi script che abbiamo salvato in alto a sinistra.
Ad esempio, abbiamo questo Graph Builder. Questo Graph Builder è fantastico perché ha automaticamente un selettore di colonna, visualizza graficamente tutti i nostri parametri e le nostre condizioni. Possiamo vedere rapidamente, oh, 202 sta diminuendo nel tempo. Non sta andando bene. 209. Poiché abbiamo aggiunto quella chiave di condizione, possiamo sostanzialmente dire, ok, non voglio vedere 201, 202. Quello che vorrei vedere è la condizione.
Supponiamo che si tratti di condizioni diverse. L'altro aspetto davvero interessante di JMP e Graph Builder è che posso dire rapidamente: "Voglio vedere cosa sta facendo la variabile 1". Possiamo prendere la variabile 1 e inserirla qui e vedere: "Oh, ok, tutti i controlli non funzionano bene". Abbiamo un paio di strategie diverse che potrebbero funzionare. Allo stesso modo, possiamo semplicemente trascinare la variabile 2 qui e interagire con i dati in un modo davvero intuitivo. Ci facciamo un'idea di cosa sta succedendo.
Possiamo analizzare il lattato. Potremmo pensare a qualcosa come il raddoppio del tempo qui sotto. Quello che possiamo fare è interagire molto rapidamente con i nostri dati, farci un'idea e prepararli per presentarli ad altre persone all'interno dell'azienda, in modo da accelerare il processo. Diciamo che voglio anche farmi un'idea della variabile 2. Quello che posso fare è semplicemente inserirla nella sovrapposizione e farmi un'idea. I tempi di raddoppio stanno aumentando. Questo ha senso. La strategia 1 consiste nel mantenerli bassi. È qualcosa che vogliamo. Questa è la parte del Graph Builder, che è piuttosto interessante.
Abbiamo anche un sacco di altre funzionalità. Cercherò di illustrarne rapidamente un paio prima di passare alla sezione successiva. Una di queste è l'analisi del ciclo. In pratica, clicco su questo pulsante e leggerà tutti i diversi batch che abbiamo. Questo numero di passaggio, e verrà creata una casella di controllo.
Quello che faremo è selezionare tutti questi perché n meno 1, n meno 2, sono scale-up. Non voglio che siano inclusi in questa analisi. Quello che farò è semplicemente selezionare quelli che mi interessano e premere OK. Appariranno alcuni di questi adattamenti bivariati e otterremo questi trend. Come potete vedere, quantificherà effettivamente cosa sta succedendo qui e otterrà quei dati per noi, esaminerà queste analisi dei trend e li aggiungerà direttamente alla nostra tabella, tutto automaticamente tramite script. Non dobbiamo farlo manualmente. Velocizza la nostra capacità di estrarre i dati.
Ecco l'analisi dei trend. Ora abbiamo un grafico che mostra, ok, qual è la pendenza? Come si presentano nel tempo? Di nuovo, possiamo semplicemente prendere la nostra variabile e osservarla. In realtà, la metteremo a colori qui. Potete vedere, ancora una volta, modi davvero semplici per interagire con i vostri dati e analizzarli.
L'ultima funzionalità che voglio mostrarvi riguarda alcuni strumenti rivolti all'operatore. Ad esempio, se volessimo prendere e fare, diciamo, un feed o un annuncio pubblicitario, e un operatore volesse sapere rapidamente, ehi, cosa dovrei fare oggi per occuparmi di questi reattori? Quello che possiamo fare è dire, ok, prendiamoci un giorno.
Ad esempio, potremmo volerlo fare, diciamo, il 24/08/2019. Questa è una data. Quello che farò è prendere ed eseguire questo script qui. Diremo 24/08, come era? Forse 2019. Diremo che stiamo lavorando su un piccolo reattore. Potremmo avere un volume di lavoro di circa 225 millilitri, e magari diciamo di alimentare il 2%. Premiamo semplicemente "OK", e verrà creata questa tabella che ci dirà quanto verrà alimentato ciascuno di questi reattori e se necessitano di determinati ad back.
In questo caso, praticamente tutto avrà bisogno sia di glutammina che di glucosio, ma si potrebbe immaginare una situazione in cui, se non fossero tutti al di sotto della soglia per un annuncio pubblicitario, si potrebbero ottenere un paio di no. Si può avere una rapida idea di cosa bisogna fare per intervenire su questi reattori. Questo è il copione in sintesi. Concluderò alcuni di questi punti e tornerò alla presentazione.
Vediamo brevemente come farlo, soprattutto se sei un principiante, se hai appena iniziato a usare JMP. Come si fa? Iniziamo con il caso di studio, questo calcolo notoriamente difficile: il consumo autospecifico. I quattro passaggi che tratterò sono: lo sviluppo di un sistema di denominazione standardizzato dei campioni, la creazione di una connessione ai dati, l'organizzazione, la pulizia e l'ordinamento automatici dei dati e, infine, la creazione di una colonna formula che calcolerà questo parametro per noi.
Andiamo dritti al punto. Innanzitutto, per inquadrare l'argomento o il compito in questione, dovremo fare un po' di pratica. Dovrò fare una breve lezione in cui parleremo di cosa si intende per consumo specifico cellulare e perché è così difficile da calcolare. Potete pensare al consumo specifico cellulare come alla potenza cellulare. Ogni cellula ha bisogno di consumare una certa quantità di nutrienti, e possiamo pensare a questo come a un'energia giornaliera, quindi per unità di tempo.
Pertanto, il nostro consumo Q sarà pari a un Delta C diviso per un Delta iVCD. Come potete vedere, questa è una densità cellulare vitale. Si tratta fondamentalmente di conteggi cellulari. È un parametro molto importante che utilizziamo nei bioprocessi. Allo stesso modo, possiamo misurare la quantità di un nutriente nella soluzione. Queste sono curve tipiche che potrebbero essere un buon esempio di un bioprocesso fed batch. Quello che faremo è osservare due punti temporali, quello che ci interessa e il punto temporale precedente, per definire questo parametro.
C'è un intervallo di tempo tra di loro. Lo si può vedere con il Delta T qui. Perché l'area sotto la curva è importante? Ho detto iVCD invece di VCD. Stavo parlando di questo grafico della densità delle cellule vitali, ma ciò che ci interessa veramente è l'integrale di questo. Il motivo per cui è importante è che una cellula viva all'inizio di questo ciclo di coltivazione, che può durare quattro giorni, mangerà circa quattro volte più cibo di una cellula figlia che si è divisa proprio qui ed è esistita solo per un giorno prima di essere raccolta.
Ciò che possiamo fare è approssimarlo. Possiamo fare un po' di matematica empirica e usare la regola del trapezio per calcolarlo. Questo è il pezzo al denominatore. Abbiamo anche bisogno di una variazione di concentrazione, ma anche questo è un po' più complicato di quanto sembri a prima vista.
Poiché vogliamo calcolare la variazione di concentrazione dovuta al consumo cellulare, dobbiamo sottrarre la quantità ingerita. Normalmente non misuriamo questo valore perché sappiamo cosa stiamo aggiungendo. Di solito non disponiamo di un punto di misura che mostri come questo valore aumenta e poi diminuisce, ma dobbiamo tenerne conto se vogliamo che i nostri tassi di consumo siano accurati.
C'è una quantità che hanno ricevuto in pasto, e poi, quando l'abbiamo effettivamente misurata nuovamente il giorno dopo, hanno consumato non solo il Delta qui, ma anche la quantità del Delta qui. Ciò significa che dobbiamo sottrarre quel punto aggiuntivo. Il risultato è questa formula complessa, in cui abbiamo molti parametri che sono condizionatamente correlati tra loro. Questo è il nocciolo della questione, ciò che rende alcuni di questi calcoli così difficili da automatizzare.
Parlerò comunque di come lo facciamo. Il primo passo è sviluppare una denominazione standardizzata per i campioni. Questo è davvero fondamentale per la strategia di automazione che abbiamo adottato qui. Userò una stringa di esempio e ne scomporrò alcuni elementi. Ognuno di questi elementi è un elemento importante che ci aiuta ad automatizzare e a trattare i dati, svolgendo funzioni come la pulizia, l'ordinamento e il calcolo automatico.
Ad esempio, abbiamo un ID di gruppo. Abbiamo un codice data, un numero di esperimento, alcuni caratteri di sottolineatura per separare le cose e renderle un po' più accattivanti. Abbiamo un batch o un ciclo, un handle di replica e un codice di condizione o di reazione. Questa lunga stringa di caratteri potrebbe sembrare un po' intimidatoria, ma in genere sono sequenziali e numerici.
Soprattutto se pensate che questo possa frustrare alcuni operatori, di solito devono solo digitare questo dato una volta al giorno, e poi potete usare le funzioni di autonumerazione su molti di questi strumenti analitici per cliccare sull'elenco e compilarlo. Ciò che questo fa davvero è che dà i suoi frutti quando si prova effettivamente ad automatizzare e calcolare automaticamente alcuni di questi parametri.
Il mio consiglio per adattare questo approccio è di identificare ciò che il tuo team utilizza per manipolare e visualizzare i dati, quindi consolidare e codificare il numero minimo di parti necessarie. È fondamentale che il processo sia il più semplice possibile. Ci sono alcune cose di cui hai bisogno e che saranno indipendenti da questo specifico esperimento o da quello o da questo e da quegli elementi di cui hai realmente bisogno per manipolare questi dati.
È sempre possibile aggiungere funzionalità aggiuntive in seguito. Ad esempio, abbiamo alcune funzionalità opzionali, come la sostituzione degli errori dello strumento che è possibile aggiungere alla fine. È possibile effettuare ricampionamenti intenzionali, ad esempio, come nel feed di cui parlavo. Se volessimo misurarlo e verificare che sia esattamente come pensiamo che dovrebbe essere, ci sono altri dettagli che è possibile integrare, ma è importante uno schema di denominazione molto rigido per l'analisi predefinita, che consenta a tutti di iniziare a utilizzarlo.
Qual è il secondo passaggio? È necessario accedere a questi dati. Il modo in cui lo abbiamo fatto è tramite una connessione a un database aperto. Abbiamo JMP proprio qui, in cui proveremo a inserire i nostri dati. Abbiamo collaborato con i nostri team IT e di gestione dati per configurare i nostri strumenti in modo che esportino file CSV non appena vengono eseguiti. Questi vengono poi caricati nel nostro database. Ad esempio, un contatore di cellule e un'analisi chimica vengono entrambi caricati in questo database.
ODBC è la connessione. È questo componente che collega il database al programma JMP. È un'interfaccia di programmazione di applicazioni, un'API, e utilizza SQL o Structured Query Language. Come hai visto durante la demo, puoi anche aggiungere metadati direttamente nell'applicazione o in JMP, oppure puoi anche alimentarli tramite il database. Funzionano entrambi.
Come si fa esattamente? In JMP c'è una funzionalità di query SQL. Puoi accedervi manualmente e c'è un'interfaccia utente intuitiva in cui puoi selezionarle. Una volta configurata la connessione al database aperto, puoi creare la tua query e puoi combinarla con una funzionalità davvero interessante che voglio segnalare, chiamata Workflow Builder, che terrà traccia di tutti i passaggi che stai eseguendo e creerà il codice JSL per questo.
Ora, quando si fa scripting più avanzato, probabilmente sarà necessario modificare quello scaffold. Quello che fa è mostrare un esempio della sintassi e velocizzare la codifica, soprattutto per i principianti. Per chi non ha una formazione classica in informatica. È uno strumento davvero potente di cui voglio assicurarmi che tutti siano a conoscenza.
Questo è uno snippet che illustra come apparirebbe effettivamente il codice. Abbiamo una connessione. In questo caso, stiamo usando quell'interfaccia utente per aggiungere un ELN. Questi sono alcuni degli extra che dovremo aggiungere in seguito. Vi offre un punto di partenza su cui lavorare e testare, e su cui inizierò a iterare.
Bene, passaggio 3. Dobbiamo pulire e ordinare i dati. Questo è un passaggio importante perché spesso, per un calcolo specifico del consumo di glucosio, si importano i dati in Excel, ad esempio. Si spostano manualmente i dati, li organizzano, li eliminano e li fanno riferimento a celle diverse. Pulire e unire automaticamente i dati sarà fondamentale per garantire risultati accurati.
Le prime due aree di cui parlerò sono le operazioni di unione e ordinamento. Nell'interfaccia utente, queste si trovano nella scheda Tabelle e possono essere combinate in modo simile con il Generatore di flussi di lavoro. Questo è un esempio di una funzione di unione in cui prendiamo gli analiti chimici e i conteggi cellulari e uniamo semplicemente le tabelle. Successivamente, vogliamo ordinarle in base ai nostri parametri in modo che i dati siano tutti organizzati e nell'ordine previsto dalle nostre funzioni.
Infine, possiamo effettuare tutti i tipi di pulizia. Questa è un'operazione un po' più impegnativa, ma può essere eseguita abbastanza facilmente utilizzando espressioni logiche. L'esempio che sto usando qui consiste essenzialmente nell'eliminare le righe duplicate dagli errori dello strumento. Si tratta del parametro R con trattino basso di cui ho parlato prima.
Quello che stiamo facendo qui è analizzare ed etichettare ciò che è e ciò che non è un duplicato. Quindi, in pratica, prendiamo, nascondiamo ed escludiamo tutto ciò che non è il campione più recente. Ancora una volta, questi script integrano molte funzionalità nella pulizia, rendendo i dati praticamente pronti per l'uso, pronti per il grande pubblico.
Bene, passiamo all'ultima sezione. Come si costruisce una colonna con funzioni chiave per calcolare questo parametro? Abbiamo la nostra folle equazione. È piuttosto brutale. Il primo passo sarà usare funzioni come if e is missing per far sì che il calcolo dipenda dai parametri disponibili.
In questa finestra di esempio, possiamo dire che per alcuni di questi abbiamo un'aggiunta di glucosio. Questo è il parametro di alimentazione di cui stavamo parlando. Per alcuni di essi, non ce l'abbiamo. Abbiamo bisogno di un modo per impostare un'equazione che dica, ok, se questo valore è presente, calcolalo, includendolo. Se non è presente, non farlo. Ecco come lo facciamo: con le funzioni if e is missing.
Abbiamo un altro problema. Ora abbiamo valori necessari per questo calcolo che compaiono in righe diverse. In un formato basato su colonne, che ha i suoi vantaggi per la gestione dei dati, è più difficile fare riferimento a qualcosa che si trova al di fuori della stessa riga. Le formule sono più strutturate in modo da fare riferimento a elementi che si trovano nella stessa riga. Quello che possiamo fare è sfruttare una funzione davvero potente che voglio menzionare qui, ovvero la funzione di ritardo.
Quando i dati sono ordinati e organizzati correttamente, è possibile fare riferimenti molto accurati a dati che non si trovano nella stessa riga. Abbiamo il nostro C of T qui e il nostro C of T meno 1 a cui possiamo fare riferimento utilizzando la funzione lag. Ecco come apparirà il codice. Avremo una nuova colonna che verrà generata. Creeremo una formula. Avremo un'istruzione if in cui verificheremo che siano sostanzialmente la stessa cosa. Non stiamo confrontando due batch diversi. Siamo solo all'interno dello stesso batch utilizzando questo handle ID univoco. Verificheremo se quel ritorno pubblicitario si sta verificando o meno ed eseguiremo il calcolo. L'iVCD, quell'altro blocco, si verifica in un'altra colonna, ma funziona in modo molto simile.
Quello che farò ora è tornare a JMP e mostrarlo in azione. Bene. Ora ho un altro set di dati normalizzato. Come potete vedere, abbiamo alcuni campioni, abbiamo i nostri ID univoci, abbiamo alcuni valori di glucosio e abbiamo alcuni annunci pubblicitari. Alcuni di questi si verificano. In alcuni casi, si tratta di valori diversi e non sono distribuiti uniformemente. Abbiamo bisogno di qualcosa che sia abbastanza intelligente da capire come calcolare questo e farlo correttamente ogni volta.
Quello che faremo qui è eseguire lo script che ho mostrato in fondo. Lo eseguiremo per creare una nuova colonna in cui verrà calcolato questo specifico consumo di glucosio, e poi sposteremo la colonna selezionata in modo da poterla visualizzare senza dover scorrere. Prenderò ed eseguirò questo piccolo estratto dello script qui.
Devo eseguire l'intero processo, non solo la sezione evidenziata. Una volta eseguito, quello che possiamo vedere è che è comparsa una nuova colonna qui, e stiamo ottenendo i calcoli. Sta apportando delle interruzioni nel calcolo nel modo desiderato, e stiamo ottenendo valori accurati e scalati come desiderato.
Se osserviamo la nostra formula, stiamo costruendo una formula. Elabora questa logica condizionale e otteniamo il calcolo come desideriamo. Possiamo visualizzare in anteprima i dati. Possiamo osservare i diversi elementi, come si sommano e risolvere eventuali problemi. In questo modo otteniamo calcoli automatizzati, avanzati e accurati.
Bene. Questa è la fine del discorso. Vorrei solo concludere velocemente con alcuni ringraziamenti. Qui, UPSIDE Foods in generale, ci sono persone coinvolte in questo progetto, in particolare Megan e Julia. Ecco alcuni dei miei colleghi quando abbiamo partecipato a una competizione di Top Chef: l'intera azienda, il nostro stabilimento di produzione e alcuni dei nostri prodotti.
Un ringraziamento speciale ai nostri team IT e di gestione dati per aver svolto parte del lavoro più impegnativo in merito alla connessione al database aperto, aiutandomi a risolvere i problemi dei sistemi. Poi, un ringraziamento speciale al mio responsabile, Cameron, che mi ha introdotto a JMP e mi ha mostrato quanto questo strumento possa essere potente. Grazie, e concludo il mio intervento.