Mein Name ist Ben Richardson. Ich freue mich, Ihnen heute einige unserer Arbeiten bei UPSIDE Foods zur Automatisierung der Bioprozessdatenanalyse in JSL für kultiviertes Fleisch vorstellen zu dürfen. Zunächst möchte ich einige wichtige Beiträge von Megan und Julia und insbesondere von UPSIDE Foods, dem Unternehmen, das ich hier vertrete, hervorheben. Rechts sind einige unserer Produkte abgebildet.
Zunächst möchte ich kurz auf das Inhaltsverzeichnis eingehen und erklären, was wir behandeln werden. Zunächst eine kurze Hintergrundinformation für den Fall, dass jemand nicht weiß, was kultiviertes Fleisch und Zellkulturmedien sind. Das betrifft insbesondere die Abteilung, in der ich arbeite, und es ist sehr wichtig, um zu verstehen, warum JMP für uns ein so leistungsstarkes Tool ist.
Ich werde auch darüber sprechen, wie unser JSL-Skript die Bioprozessentwicklung hier bei UPSIDE Foods beschleunigt hat. Anschließend werde ich eine Skriptdemonstration durchführen. Ich werde einige der Funktionen dieses von uns entwickelten Tools vorstellen, darunter Echtzeitzugriff auf wichtige Instrumentendaten, einige Datenvisualisierungstools sowie Trendanalysen und sogar einige coole Extras wie bedienerorientierte Tools mit Funktionen wie Tabulate.
Im letzten Abschnitt werde ich eine Einführung in die Automatisierung einiger dieser fortgeschrittenen Berechnungen in JMP geben. Dazu konzentriere ich mich auf eine Fallstudie. In der Bioprozesstechnik ist der körpereigene Glukoseverbrauch ein wichtiger Parameter. Er ist jedoch bekanntermaßen schwer zu berechnen.
Ich werde über vier verschiedene Maßnahmen sprechen, die wir ergriffen haben, um diese komplexe Berechnung zu vereinfachen. Zunächst geht es um die Standardisierung der Stichprobenbenennung. Das ist ein entscheidender und grundlegender Bestandteil unseres Ansatzes. Außerdem erkläre ich, wie wir mithilfe offener Datenbankkonnektivität auf die Daten zugreifen, wie wir sie automatisch bereinigen, sortieren und organisieren und schließlich, wie wir mithilfe einiger Schlüsselfunktionen Formelspalten erstellen.
Lassen Sie uns gleich in die Hintergründe eintauchen. Was ist kultiviertes Fleisch? Was ist UPSIDE Foods? UPSIDE Foods war 2015 das erste Unternehmen im Bereich kultiviertes Fleisch. Seitdem ist es ein führendes Unternehmen in diesem Bereich und erhielt 2022 die behördliche Zulassung des USDA und der FDA.
Wir nehmen tierische Zellen. Das ist kein pflanzliches Fleisch. Es ist tierisches Fleisch, und wir isolieren die Zellen. Das geschieht ohne Schlachtung. Man muss dafür keine Tiere töten. Anschließend entwickeln wir aus diesen Isolaten Zelllinien in Zellkulturmedien. Genau das ist mein Arbeitsgebiet.
Zellen und Zellkulturmedien werden in einem Bioreaktor kombiniert. Ähnlich wie beim Bierbrauen wird Hefe zum Züchten dieser Substanzen verwendet. Wir werden diese tierischen Zellen in einem Bioreaktor züchten und sie dann zu einem Produkt für den menschlichen Verzehr verarbeiten. Das Spannende daran ist, dass die Bioverarbeitung die Fleischproduktion effizienter machen, die Kosten für die Verbraucher senken und negative Umweltauswirkungen begrenzen könnte. Das ist etwas, worüber ich mich wirklich freue. Weniger Land- und Wasserverbrauch und sogar Treibhausgase, aber auch weniger Tierquälerei.
Warum ist Zellkulturmedium so wichtig? Ich möchte hier über Zellnahrung sprechen. In der Ecke sehen Sie einige Lösungen. Das sind einige tolle Farben, die hauptsächlich von Vitaminen stammen. Zellkulturmedium ist wirklich wichtig, weil es die Zellen, die Nährstoffe und das notwendige Umfeld für ihr Wachstum außerhalb des Körpers liefert.
Zellkulturmedien sind eigentlich nichts Besonderes. Es sind lediglich kleine Mengen der üblichen Lebensmittelzutaten, die wir Hühnern oder Kühen füttern oder sogar selbst essen: Aminosäuren, Zucker, Vitamine und Mineralien. Um die Entwicklung kostengünstiger Medien, insbesondere für den Massenmarkt, zu beschleunigen, hat UPSIDE Foods die Produktion unserer Zellkulturmedien vertikal integriert. Das bedeutet, dass wir von Grund auf eigene Medienrezepturen mit lebensmittelechten Komponenten entwickelt haben.
Wenn Sie mit Zellkulturmedien oder Bioprozessen vertraut sind, wissen Sie, dass die Entwicklung von Medienformulierungen von Grund auf keine leichte Aufgabe ist. Und hier kommt die Statistiksoftware JMP ins Spiel. Nur um zu verdeutlichen, wie schwierig das ist: Wenn wir für einen Versuchsplan mit 50 Medienkomponenten eine Fakultät nehmen, ist das eigentlich eine zu niedrige Schätzung. Viele Medien können über 100 liegen. Wenn wir für jede dieser Komponenten eine niedrige, mittlere und hohe Konzentration annehmen, beträgt der Designraum 3 hoch 50, also 7,17 mal 10 hoch 23. Das ist mehr als ein Mol, nämlich 6,02 mal 10 hoch 23, was praktisch unendlich ist. Wir können nicht alle diese Bedingungen testen.
Hier kommt die Versuchsplanung ins Spiel. DOE ist eine angewandte Statistikmethode, mit der Sie Designräume effizienter untersuchen können, insbesondere im Hinblick auf jeweils einen Faktor oder OFAT-Ansätze. Hier eine Illustration mit freundlicher Genehmigung von JMP. Betrachten wir drei verschiedene Variablen und visualisieren sie im dreidimensionalen Raum, hier haben wir die Variablen eins, zwei und drei.
Bei einem traditionellen Ansatz, bei dem wir jeweils einen Faktor einzeln betrachten, optimieren wir Variable eins, finden die beste Bedingung, gehen weiter zu Variable zwei, finden die beste Bedingung und schließlich zu Variable drei. Schließlich finden wir ein lokales Maximum. Was, wenn die tatsächlich beste Bedingung irgendwo hier liegt und wir sie verpassen? Erstens benötigen wir viel mehr Zeit und Mühe, um die beste Bedingung möglicherweise nicht zu finden.
JMP ist hier so leistungsstark und für unseren Ansatz so wichtig, weil es über branchenführende DOE-Software verfügt. Es ist ein echter Goldstandard für die Entwicklung von Zellkulturmedien und Bioprozessen. JMP wird in den verschiedenen Bioprozess-Entwicklungsgruppen von UPSIDE Foods weithin eingesetzt. Es ist ein ideales Tool für die Analyse und Verwendung einiger dieser Skripte.
Lassen Sie uns darüber sprechen, wie dieses Skript die Bioprozessentwicklung hier bei UPSIDE Foods tatsächlich beschleunigen konnte. Ich habe hier ein kleines Schema, das Teile der Bioprozessentwicklungspipeline isoliert, von Upstream-Aktivitäten wie der Zelllinienentwicklung bis hin zur Fertigungswissenschaft und -technologie und der eigentlichen Produktion. Ich habe viel über die Medienentwicklung gesprochen. Wir leben hier, aber auch die Prozessentwicklung hat viele Überschneidungen.
Ich möchte darauf hinweisen, dass dynamische Rückkopplungsschleifen in dieser Entwicklungspipeline ein wichtiger Faktor für wissenschaftliche Innovationen und Durchbrüche sind. Im Grunde genommen könnte man eine bessere Zelllinie entwickeln, die es in die Medienentwicklung schafft. Das ermöglicht uns dann einen Durchbruch bei einigen limitierenden Nährstoffen, und in den iterativen Zyklen dazwischen entstehen wirklich spannende wissenschaftliche Durchbrüche.
Ich habe gerade darüber gesprochen, wie DOE es uns ermöglicht, unsere Designräume effizienter zu untersuchen. Man könnte meinen, unsere Experimente würden kleiner. Tatsächlich sind unsere Experimente aber immer noch riesig, weil wir versuchen, Medien von Grund auf neu zu entwickeln. Obwohl wir den Raum effizienter testen, haben wir immer noch diesen absurden Designraum, den wir untersuchen müssen.
Wir haben eine riesige Anzahl an Proben, manchmal Experimenten, unter über 100 Bedingungen, um diese Medien wirklich von Grund auf neu zu entwickeln. Sie sehen dort ein Bild meiner Kollegin Dasha, die Etiketten ausdruckt. Es veranschaulicht, mit wie vielen Proben wir hier arbeiten und wie dies tatsächlich zu Engpässen zwischen den Teams geführt hat.
Um dies weiter zu veranschaulichen, habe ich einige Zellzählungen pro Jahr, die das Unternehmen durchgeführt hat, die ziemlich erstaunlich sind. Über 40.000 Zellzählungen pro Jahr für das Medienteam hier bei UPSIDE Foods. Dies wird sich im Laufe der Pipeline zwangsläufig ändern. Mit zunehmendem Maßstab stehen immer weniger Gefäße und Freiheitsgrade zur Verfügung. Sie sehen, dass PD, die Stufe unter uns, tatsächlich immer noch etwa 7.000 oder 8.000 Proben pro Jahr durchführt.
Wir versuchen, eine riesige Datenmenge zu verarbeiten, und wir arbeiten mit Hochdruck daran, diese Daten zu erfassen. Wir haben dieses JSL-Skript entwickelt, um die durchschnittliche Zeit zwischen unseren routinemäßigen Bioprozessdatenverarbeitungen zu verkürzen, diese Informationen schneller zu verbreiten, sie anderen Teams zur Verfügung zu stellen und die Feedbackschleifen zu beschleunigen. Wir konnten die Zeit für die routinemäßige Datenverarbeitung von etwa einer Woche auf etwa zwei Tage reduzieren – eine etwa dreifache Steigerung, was ziemlich aufregend ist.
Jetzt zeige ich Ihnen ein kleines Skript. Ich zeige Ihnen einige Funktionen dieses Tools. Hier ist das Skript. Es ist ziemlich umfangreich. Es ist definitiv mit der Zeit gewachsen. Wir haben hier jede Menge Code. In diesem kurzen Vortrag habe ich nicht genug Zeit, um auf alles einzugehen. Ich werde Ihnen einige Funktionen demonstrieren. Wenn ich das Skript ausführe, erscheint als Erstes ein kleines Warnfenster, das Sie darauf hinweist, dass einige andere Fenster, die Sie möglicherweise geöffnet haben, geschlossen werden. Das ist okay.
Ich verwende hier ein Beispiel, vielleicht 5109, also eines unserer Experimente. Es handelt sich um echte Daten. Das Skript führt unsere offene Datenbankverbindung aus und lädt die Daten für mich in JMP. Das beschleunigt den Prozess und ist etwas, das wir routinemäßig und nach Bedarf durchführen können. Während des Experiments werden Daten routinemäßig in unsere Datenbank hochgeladen, und wir können die Diagramme in Echtzeit abrufen und betrachten. Sie sehen, wie verschiedene Instrumente gefüllt werden. Es werden einige Datentabellen für uns erstellt. Anschließend werde ich gefragt, ob ich einen Bedingungsschlüssel hinzufügen möchte.
Den Bedingungsschlüssel werde ich gleich erläutern. Wir wählen „Ja“, um einige Funktionen zu zeigen. Außerdem werden Sie gefragt, ob Sie zusätzliche Daten hinzufügen möchten, die nicht an ein Instrument gebunden sind. Dies sind zusätzliche Metadaten, die Sie möglicherweise hinzufügen möchten. Das Beispiel hier ist „pack_cell_volume“. Dies ist alles, was nicht von einem Instrument ausgeführt und automatisch in die Datenbank hochgeladen wird. Wir wählen „Ja“, um einige Funktionen zu zeigen. Anschließend erstellt das Skript eine Datentabelle. Wir haben eine schöne, fertige Datentabelle.
Bevor ich loslege, öffne ich ein Normalisierungsskript. Es ist ein kleines Skript, das ich zur Normalisierung der Daten geschrieben habe. Es skaliert alle Zahlen von null auf eins, damit ich urheberrechtlich geschützt darüber sprechen kann. Ich nehme dieses Skript hier und führe es zusammen mit meiner Datentabelle aus. Mal sehen, was passiert.
Die Prozesszeit wurde gerade skaliert. Unser Maximalwert ist jetzt eins, und alles andere ist relativ dazu. Ich muss nicht alle wichtigen Daten zeigen, die hier möglicherweise versteckt sind. Ich kann Ihnen nur einige der Funktionen zeigen.
Kommen wir noch einmal auf den Bedingungscode zurück. Ich erkläre kurz, wie er funktioniert. Wir haben die numerischen Bedingungen 202, 203 und 204. Alle Variablen, die wir ändern, sind über diesen Bedingungsschlüssel mit diesen verknüpft. Hier speichern wir alle Informationen, da wir ein standardisiertes Benennungssystem für Beispiele benötigen. Darauf gehe ich später noch ein. Dies veranschaulicht nur, wie wir Informationen damit verknüpfen.
Wir haben eine schöne große Datentabelle. Sie sehen, wir haben hier 1.206 Beispielmessungen. Wir haben alle Parameter, alle berechneten Werte, das maximale Laktat, die spezifische Laktatbildung, die Verdopplungszeiten und einige andere interessante Dinge. Wir haben alle unsere Daten an einem übersichtlichen Ort. Als Nächstes möchte ich hier einige dieser Skripte hervorheben, die wir oben links gespeichert haben.
Wir haben zum Beispiel diesen Graph Builder. Dieser Graph Builder ist super, weil er automatisch einen Spaltenumschalter hat und alle unsere Parameter und Bedingungen grafisch darstellt. Wir können schnell sehen, ob 202 mit der Zeit abnimmt. Das ist nicht gut. 209. Da wir diesen Bedingungsschlüssel hinzugefügt haben, können wir im Grunde sagen: „Okay, ich möchte 201, 202 nicht sehen. Was ich sehen möchte, ist die Bedingung.“
Nehmen wir an, es handelt sich um unterschiedliche Bedingungen. Ein weiterer Vorteil von JMP und Graph Builder ist, dass ich schnell sehen kann, was Variable 1 macht. Wir können Variable 1 hier einfügen und sehen, ob alle Steuerelemente nicht richtig funktionieren. Wir haben hier verschiedene Strategien, die funktionieren könnten. Ebenso können wir Variable 2 einfach hierher ziehen und auf benutzerfreundliche Weise mit den Daten interagieren. So bekommen Sie einen Überblick.
Wir können uns Laktat ansehen. Wir könnten uns beispielsweise eine Verdopplungszeit überlegen. Wir können einfach schnell mit unseren Daten interagieren, ein Gefühl dafür bekommen und sie für die Präsentation im Unternehmen vorbereiten, um den Prozess zu beschleunigen. Nehmen wir an, ich möchte mir auch ein Bild von Variable 2 machen. Ich kann sie einfach über das Overlay legen und mir ein Bild machen. Die Verdopplungszeiten steigen. Das ist sinnvoll. Strategie 1: Diese Werte niedrig halten. Das ist unser Ziel. Das ist der Graph Builder-Teil, der ziemlich spannend ist.
Wir haben noch eine Reihe weiterer Funktionen. Ich möchte Ihnen kurz ein paar davon vorstellen, bevor wir zum nächsten Abschnitt übergehen. Eine davon ist die Zyklusanalyse. Ich klicke darauf und es werden alle verschiedenen Batches angezeigt. Diese Passagennummer wird angezeigt und ein Kontrollkästchen wird eingeblendet.
Wir wählen alle diese aus, da n minus 1 und n minus 2 hochskaliert sind. Ich möchte sie nicht in die Analyse einbeziehen. Ich wähle einfach die gewünschten aus und klicke auf „OK“. Es werden einige dieser bivariaten Anpassungen angezeigt, und wir erhalten diese Trends. Wie Sie sehen, wird das Geschehen quantifiziert, die Daten für uns abgerufen, die Trendanalysen betrachtet und direkt in unsere Tabelle eingefügt – alles automatisch per Skript. Wir müssen das nicht manuell tun. Es beschleunigt die Datenausgabe.
Hier sehen Sie die Trendanalyse. Wir haben nun ein Diagramm, das die Steigung zeigt. Wie sehen diese im Zeitverlauf aus? Auch hier können wir einfach unsere Variable nehmen und sie betrachten. Wir werden sie hier farblich markieren. Sie sehen wieder sehr einfache Möglichkeiten, mit Ihren Daten zu interagieren und sie zu analysieren.
Die letzte Funktion, die ich vorstellen möchte, sind einige Tools für den Bediener. Wenn wir beispielsweise einen Feed oder eine Anzeige zurückgeben möchten und ein Bediener nur schnell wissen möchte, was er heute tun soll, um sich um diese Reaktoren zu kümmern, können wir sagen: „Okay, nehmen wir uns einen Tag Zeit.“
Nehmen wir beispielsweise den 24.08.2019 an. Das ist ein Datum. Ich führe dieses Skript aus. Wir schreiben den 24.08., was war das? Vielleicht 2019. Wir arbeiten mit einem kleinen Reaktor. Unser Arbeitsvolumen beträgt etwa 225 Milliliter, und wir geben 2 % ein. Wir klicken einfach auf „OK“, und es wird eine Tabelle erstellt, die uns anzeigt, wie viel jeder dieser Reaktoren zugeführt wird und ob sie bestimmte Zusatzstoffe benötigen.
In diesem Fall wird grundsätzlich sowohl Glutamin als auch Glukose benötigt. Man könnte sich aber vorstellen, dass, wenn nicht alle an diesem Tag unter der Schwelle für eine Rückrufaktion lagen, man hier einige Neins erhalten könnte. Sie können sich schnell einen Überblick darüber verschaffen, was getan werden muss, um bei diesen Reaktoren einzugreifen. Das ist das Skript in aller Kürze. Ich werde einige davon abschließen und zur Präsentation zurückkehren.
Lassen Sie uns kurz darauf eingehen, wie das geht, insbesondere wenn Sie Anfänger sind und gerade erst mit JMP anfangen. Wie geht das? Beginnen wir mit der Fallstudie, dieser bekanntermaßen schwierigen Berechnung, dem selbstspezifischen Verbrauch. Die vier Schritte, die ich beschreibe, sind die Entwicklung eines standardisierten Probenbenennungssystems, die Herstellung einer Verbindung zu Ihren Daten, die automatische Organisation, Bereinigung und Sortierung der Daten und schließlich die Erstellung einer Formelspalte, die diesen Parameter für uns berechnet.
Lassen Sie uns gleich loslegen. Um das Argument bzw. die vorliegende Aufgabe zu formulieren, müssen wir zunächst ein wenig recherchieren. Ich werde hier eine kleine Vorlesung halten, in der wir darüber sprechen, was zellspezifischer Verbrauch ist und warum er so schwer zu berechnen ist. Man kann sich den zellspezifischen Verbrauch wie die zelluläre Pferdestärke vorstellen. Jede Zelle muss eine bestimmte Menge an Nährstoffen aufnehmen, und wir können uns das wie Energie pro Tag, also pro Zeiteinheit, vorstellen.
Unser Verbrauch Q ist daher Delta C geteilt durch Delta iVCD. Sie sehen, dies ist die Dichte lebender Zellen. Im Grunde handelt es sich um die Zellzahl. Das ist ein sehr wichtiger Aspekt in der Bioprozesstechnik. Ebenso können wir die Menge eines Nährstoffs in der Lösung messen. Dies sind typische Kurven, die ein gutes Beispiel für einen Fed-Batch-Bioprozess darstellen. Um diesen Parameter zu definieren, betrachten wir zwei Zeitpunkte: den für uns interessanten und den vorherigen.
Dazwischen liegt eine Zeitspanne. Das sieht man hier am Delta T. Warum ist die Fläche unter der Kurve wichtig? Ich sagte iVCD statt VCD. Ich sprach von diesem Diagramm der lebensfähigen Zelldichte, aber was uns wirklich interessiert, ist das Integral davon. Das ist wichtig, weil eine Zelle, die zu Beginn dieses Kultivierungszyklus, vielleicht vier Tage lang, noch lebt, etwa viermal so viel Nahrung zu sich nimmt wie eine Tochterzelle, die sich hier geteilt hat und nur einen Tag existierte, bevor sie geerntet wurde.
Wir können das nur approximieren. Mit etwas empirischer Mathematik und der Trapezregel lässt sich das berechnen. Das ist der Teil im Nenner. Wir benötigen außerdem eine Konzentrationsänderung, aber auch das ist etwas komplizierter, als es auf den ersten Blick scheint.
Da wir die Konzentrationsänderung aufgrund des zellulären Verbrauchs erfassen möchten, müssen wir die zugeführte Menge abziehen. Normalerweise messen wir dies nicht, da wir wissen, was wir addieren. Normalerweise haben wir keinen Messdatenpunkt, der zeigt, wie die Konzentration steigt und dann wieder sinkt, aber wir müssen dies berücksichtigen, wenn wir genaue Verbrauchsraten erzielen möchten.
Sie bekamen eine bestimmte Menge zu fressen, und als wir sie am nächsten Tag erneut maßen, stellten sie fest, dass sie nicht nur das Delta hier, sondern die Delta-Menge hier konsumiert hatten. Das bedeutet, dass wir diesen zusätzlichen Punkt abziehen müssen. Das Ergebnis ist diese komplizierte Formel mit vielen Parametern, die bedingt miteinander verbunden sind. Das ist der Kern des Problems, der die Automatisierung einiger dieser Berechnungen so schwierig macht.
Ich werde trotzdem darüber sprechen, wie wir es machen. Der erste Schritt besteht darin, eine standardisierte Beispielbenennung zu entwickeln. Dies ist die Grundlage unserer Automatisierungsstrategie. Ich werde eine Beispielzeichenfolge verwenden und einige Teile davon aufschlüsseln. Jeder dieser Teile ist ein wichtiger Bestandteil, der uns bei der Automatisierung und der automatischen Datenverarbeitung unterstützt, beispielsweise beim Bereinigen, Sortieren und Berechnen.
Wir haben zum Beispiel eine Gruppen-ID. Wir haben den Datumscode, eine Experimentnummer und einige Unterstriche zur Trennung, um das Ganze optisch ansprechender zu gestalten. Wir haben hier einen Batch oder Zyklus, einen Replikations-Handle und einen Zustands- oder Reaktorcode. Diese lange Zeichenfolge mag etwas einschüchternd wirken, aber diese sind typischerweise sequenziell und numerisch.
Besonders wenn Sie befürchten, dass dies einige Bediener frustrieren könnte: Normalerweise müssen sie dies nur einmal pro Tag eingeben. Anschließend können Sie bei vielen dieser Analyseinstrumente die Autonumerierungsfunktionen verwenden, um die Liste einfach durchzuklicken und auszufüllen. Dies zahlt sich tatsächlich aus, wenn Sie versuchen, einige dieser Parameter tatsächlich zu automatisieren und automatisch zu berechnen.
Mein Rat für die Anpassung dieses Ansatzes wäre, herauszufinden, was Ihr Team zur Datenmanipulation und -darstellung verwendet, und dann die minimal benötigten Teile zu konsolidieren und zu kodifizieren. Halten Sie es so einfach wie möglich. Es gibt Dinge, die Sie einfach benötigen und die unabhängig von diesem oder jenem spezifischen Experiment sind, und jene Dinge, die Sie wirklich zur Datenmanipulation benötigen.
Sie können später jederzeit zusätzliche Funktionen hinzufügen. Wir haben hier beispielsweise einige optionale Features, wie einen Instrumentenfehlerersatz, den Sie am Ende anhängen können. Sie können beispielsweise gezielte Resamplings durchführen, wie bei dem Feed, von dem ich gesprochen habe. Wenn wir das messen und überprüfen möchten, ob es unseren Vorstellungen entspricht, können Sie weitere Extras einbauen, aber Sie benötigen ein strenges Namensschema für Ihre Standardanalyse, das Sie akzeptieren und von allen nutzen lassen.
Was ist der zweite Schritt? Sie benötigen Zugriff auf diese Daten. Wir haben dies über eine offene Datenbankverbindung erreicht. Wir haben JMP installiert, in das wir unsere Daten übertragen möchten. Gemeinsam mit unseren Daten- und IT-Teams haben wir unsere Instrumente so eingerichtet, dass sie nach dem Betrieb CSV-Dateien exportieren. Diese werden dann in unsere Datenbank hochgeladen. Sie sehen beispielsweise, dass ein Zellzähler und eine chemische Analyse in diese Datenbank hochgeladen werden.
ODBC ist die Verbindung. Das ist das Teil hier, das die Datenbank mit dem Programm JMP verbindet. Es ist eine Anwendungsprogrammierschnittstelle (API) und verwendet SQL (Structured Query Language). Wie Sie in der Demo gesehen haben, können Sie Metadaten auch direkt in die Anwendung oder JMP einfügen oder über die Datenbank einspeisen. Beides funktioniert.
Wie geht das eigentlich? JMP bietet eine SQL-Abfragefunktion. Sie können diese manuell durchgehen und über eine benutzerfreundliche Oberfläche auswählen. Sobald die offene Datenbankverbindung eingerichtet ist, können Sie Ihre Abfrage erstellen. Kombinieren Sie diese mit einer wirklich coolen Funktion namens Workflow Builder, die ich Ihnen vorstellen möchte. Sie verfolgt alle Ihre Schritte und erstellt dafür JSL-Code.
Wenn Sie nun fortgeschrittenere Skripte schreiben, müssen Sie dieses Gerüst wahrscheinlich anpassen. Es zeigt Ihnen ein Beispiel der Syntax und beschleunigt das Programmieren, insbesondere für Anfänger. Für Leute ohne klassische Informatikausbildung. Es ist ein wirklich mächtiges Werkzeug, das ich allen bekannt machen möchte.
Dies ist ein Code-Ausschnitt, der veranschaulicht, wie der Code tatsächlich aussehen würde. Wir haben eine Verbindung. In diesem Fall verwenden wir die Benutzeroberfläche, um ein ELN hinzuzufügen. Das sind einige der Extras, die wir nachträglich hinzufügen müssen. Es bietet Ihnen einen Ausgangspunkt zum Arbeiten und Testen, und ich werde mit der Iteration beginnen.
Also gut, Schritt 3. Wir müssen die Daten bereinigen und sortieren. Das ist ein großer Schritt, denn oft werden die Daten für eine spezifische Glukoseverbrauchsberechnung beispielsweise in Excel importiert. Dabei werden die Daten manuell verschoben, sortiert, gelöscht und auf verschiedene Zellen verwiesen. Das automatische Bereinigen und Zusammenführen der Daten ist entscheidend, um genaue Ergebnisse zu erhalten.
Die ersten beiden Bereiche, die ich bespreche, sind Join- und Sortiervorgänge. Diese befinden sich in der Benutzeroberfläche unter dem Reiter „Tabellen“ und können ähnlich mit dem Workflow Builder kombiniert werden. Dies ist ein Beispiel für eine Join-Funktion, bei der wir die chemischen Analyten und die Zellzahlen nehmen und diese Tabellen einfach zusammenführen. Anschließend sortieren wir sie nach unseren Parametern, damit die Daten geordnet und in der von unseren Funktionen erwarteten Reihenfolge vorliegen.
Abschließend können wir verschiedene Bereinigungen durchführen. Das ist zwar etwas aufwändiger, lässt sich aber mithilfe logischer Ausdrücke relativ einfach durchführen. In meinem Beispiel geht es im Wesentlichen um das Löschen doppelter Zeilen aus Instrumentenfehlern. Das ist der zuvor erwähnte R-Parameter mit Unterstrich.
Wir gehen die Daten durch und kennzeichnen, was Duplikate sind und was nicht. Anschließend entfernen wir alles, was nicht zum aktuellsten Beispiel gehört, und schließen es aus. Auch hier bieten diese Skripte umfangreiche Funktionen für die Bereinigung und machen Ihre Daten nahezu einsatzbereit.
Kommen wir zum letzten Abschnitt. Wie erstellen wir eine Spalte mit Schlüsselfunktionen zur Berechnung dieses Parameters? Wir haben unsere verrückte Gleichung. Sie ist ziemlich brutal. Der erste Schritt besteht darin, Funktionen wie „if“ und „is missing“ zu verwenden, um die Berechnung von den verfügbaren Parametern abhängig zu machen.
In diesem Beispielfenster können wir für einige davon eine Glukose-Zugabe angeben. Das ist der Feed-Parameter, über den wir gesprochen haben. Für andere ist dies nicht der Fall. Wir benötigen eine Möglichkeit, eine Gleichung aufzustellen, die besagt: „Okay, wenn dieser Wert vorhanden ist, berechnen wir ihn und berücksichtigen ihn.“ Wenn er nicht vorhanden ist, lassen wir ihn weg. Das machen wir mit den Funktionen „wenn“ und „fehlt“.
Wir haben ein weiteres Problem. Die für diese Berechnung benötigten Werte erscheinen in verschiedenen Zeilen. In einem spaltenbasierten Format, das Vorteile für die Datenverwaltung bietet, ist es schwieriger, auf etwas außerhalb derselben Zeile zu verweisen. Die Formeln sind eher darauf ausgerichtet, auf Dinge zu verweisen, die in derselben Zeile stehen. Wir können eine wirklich leistungsstarke Funktion nutzen, die ich hier erwähnen möchte: die Lag-Funktion.
Wenn Ihre Daten richtig sortiert und organisiert sind, ermöglicht dies sehr genaue Verweise auf Daten, die sich nicht in derselben Zeile befinden. Wir haben hier unseren C of T und unseren C of T minus 1, auf die wir mit der Lag-Funktion verweisen können. So sieht der Code aus. Es wird eine neue Spalte generiert. Wir erstellen eine Formel. Wir verwenden eine if-Anweisung, mit der wir prüfen, ob es sich im Wesentlichen um dasselbe handelt. Wir vergleichen nicht zwei verschiedene Batches. Wir befinden uns nur innerhalb desselben Batches mithilfe dieses eindeutigen ID-Handles. Wir prüfen, ob die Ad-Back-Funktion aktiv ist, und führen die Berechnung durch. Der iVCD, dieser andere Block, findet in einer anderen Spalte statt, funktioniert aber sehr ähnlich.
Ich wechsle jetzt zurück zu JMP und zeige das in Aktion. Gut. Ich habe jetzt einen weiteren normalisierten Datensatz. Sie sehen, wir haben hier einige Proben, unsere eindeutigen IDs, einige Glukosewerte und einige Ad-Backs. Einige davon treten tatsächlich auf. In einigen Fällen handelt es sich um unterschiedliche Werte, die nicht gleichmäßig verteilt sind. Wir brauchen etwas, das intelligent genug ist, um dies zu berechnen und es jedes Mal richtig zu machen.
Wir führen hier das unten gezeigte Skript aus. Es erstellt eine neue Spalte, in der der spezifische Glukoseverbrauch berechnet wird. Anschließend verschieben wir die ausgewählte Spalte, sodass wir sie sehen und nicht scrollen müssen. Ich nehme diesen kleinen Ausschnitt des Skripts und führe ihn hier aus.
Ich muss das gesamte Programm ausführen, nicht nur den markierten Abschnitt. Sobald ich es ausführe, sehen wir, dass hier eine neue Spalte angezeigt wird und wir Berechnungen erhalten. Die Berechnung wird nach unseren Wünschen unterbrochen, und wir erhalten genaue Werte, die nach unseren Wünschen skaliert sind.
Wenn wir uns unsere Formel ansehen, sehen wir, dass wir eine Formel erstellt haben. Sie durchläuft die bedingte Logik und wir erhalten die gewünschte Berechnung. Wir können die Daten hier in der Vorschau anzeigen. Wir können die einzelnen Teile betrachten, ihre Addition und Fehler beheben. So erhalten wir automatisierte, präzise Berechnungen.
So, das war's. Ich möchte hier noch kurz mit einigen Danksagungen schließen. Hier sind alle Mitarbeiter von UPSIDE Foods, insbesondere Megan und Julia. Hier sind einige meiner Teamkollegen, als wir an einem Top Chef-Wettbewerb teilnahmen: das gesamte Unternehmen, unsere Produktionsstätte und einige unserer Produkte.
Ein besonderer Dank gilt unseren IT- und Datenteams, die mir bei der Fehlerbehebung der offenen Datenbankverbindung geholfen und mir geholfen haben. Mein Manager Cameron hat mir JMP vorgestellt und mir gezeigt, wie leistungsstark es ist. Vielen Dank, und ich beende meinen Vortrag.