Me llamo Ben Richardson. Me complace presentar hoy parte del trabajo que hemos estado realizando en UPSIDE Foods para automatizar el análisis de datos de bioprocesos en JSL para carne cultivada. Primero, quiero destacar algunas contribuciones importantes de Megan y Julia, y especialmente de UPSIDE Foods, la empresa que represento. A la derecha se muestran algunos de nuestros productos.
Primero, voy a repasar brevemente el índice para explicar lo que vamos a cubrir. Primero, una breve introducción por si acaso no están familiarizados con la carne cultivada ni con los medios de cultivo celular. Ese es el departamento en el que trabajo, y será fundamental para explicar por qué JMP ha sido una herramienta tan poderosa para nosotros.
También hablaré sobre cómo nuestro script JSL ha acelerado el desarrollo de bioprocesos en UPSIDE Foods. Después, haré una demostración del script. Mostraré algunas de las funciones de esta herramienta que hemos desarrollado, como el acceso en tiempo real a datos clave de instrumentos, herramientas de visualización de datos, análisis de tendencias e incluso funciones adicionales como herramientas orientadas al operador que utilizan funciones como Tabular.
En la sección final, presentaré una guía para principiantes sobre cómo automatizar algunos de estos cálculos avanzados en JMP. Para ello, me centraré en un caso práctico. En bioprocesamiento, el consumo de glucosa autoespecífico es un parámetro muy importante. También es un parámetro notoriamente difícil de calcular.
Hablaré de cuatro cosas diferentes que hemos hecho para desglosar este cálculo avanzado. La primera será estandarizar la nomenclatura de las muestras. Este es un aspecto fundamental de nuestro enfoque. También, cómo accedemos a los datos mediante la conectividad abierta de bases de datos, cómo limpiamos, ordenamos y organizamos automáticamente los datos y, por último, cómo creamos esas columnas de fórmula mediante funciones clave.
Analicemos algunos antecedentes. ¿Qué es la carne cultivada? ¿Qué es UPSIDE Foods? UPSIDE Foods fue la primera empresa fundada en el sector de la carne cultivada en 2015. Desde entonces, ha sido líder en este sector, obteniendo la aprobación regulatoria del USDA y la FDA en 2022.
Lo que hacemos es tomar células animales. Esto no es carne vegetal. Es carne animal, y aislamos las células. Esto no requiere sacrificio. No es necesario matar animales para lograrlo. Luego, desarrollamos líneas celulares a partir de esos aislamientos en medios de cultivo celular. De nuevo, ahí es donde he estado viviendo.
Las células y los medios de cultivo celular se combinan en un biorreactor. De forma muy similar a como se elabora cerveza, se utiliza levadura para cultivarlas. Cultivaremos esas células animales en un biorreactor y luego las formularemos para obtener un producto para consumo humano. Lo realmente emocionante de esto es que el bioprocesamiento podría hacer que la producción de carne sea más eficiente, reduciendo los costos para los consumidores y limitando el impacto ambiental negativo. Eso es algo que me entusiasma mucho: un menor uso de tierra y agua, e incluso menos gases de efecto invernadero, pero también reduciendo la crueldad animal.
¿Por qué son tan importantes los medios de cultivo celular? El tema del que voy a hablar aquí, el alimento celular, es algo que queremos abordar. Pueden ver algunas soluciones en la esquina. Son colores divertidos, principalmente de vitaminas, que crean esos colores. Los medios de cultivo celular son muy importantes porque proporcionan a las células los nutrientes y el entorno necesario para crecer fuera del cuerpo.
Los medios de cultivo celular no son nada especial. Son simplemente pequeñas porciones de los ingredientes alimentarios comunes que usaríamos para alimentar a pollos o vacas, o incluso para nosotros mismos: aminoácidos, azúcares, vitaminas y minerales. Para acelerar el desarrollo de medios de bajo costo, especialmente para precios a gran escala, UPSIDE Foods ha integrado verticalmente nuestra producción de medios de cultivo celular. Esto significa que hemos desarrollado formulaciones de medios patentadas, propias y desde cero, con componentes de grado alimenticio.
Si está familiarizado con los medios de cultivo celular o el bioprocesamiento, diseñar formulaciones de medios desde cero no es tarea fácil. Aquí es donde entra en juego el software estadístico JMP. A modo de ejemplo para ilustrar la dificultad, si tomamos un factorial para un diseño experimental con 50 componentes de medios, la estimación es bastante baja. Muchos medios pueden tener más de 100. Si simplemente tomamos una concentración baja, media y alta para cada uno de ellos, el espacio de diseño es 3 elevado a la quincuagésima potencia, que es 7,17 por 10 de la vigésimo tercera potencia. Eso es más de un mol, 6,02 por 10 de la vigésimo tercera potencia, lo cual es prácticamente infinito. No podemos probar todas estas condiciones.
Aquí es donde entra en juego el diseño de experimentos. El DOE es una metodología de estadística aplicada que permite explorar espacios de diseño de forma más eficiente, especialmente en relación con un factor a la vez o con enfoques OFAT. Aquí se muestra una ilustración cortesía de JMP. Si observamos tres variables diferentes y las visualizamos en un espacio tridimensional, donde tenemos las variables uno, dos y tres.
Con un enfoque tradicional de un factor a la vez, optimizaríamos la variable uno, encontraríamos la mejor condición, pasaríamos a la variable dos, encontraríamos la mejor condición, y la variable tres. Eventualmente, encontraríamos un máximo local. ¿Qué pasa si la mejor condición real está en algún punto y la pasamos por alto? Primero, estaríamos dedicando mucho más tiempo y esfuerzo a no encontrar la mejor condición.
La razón por la que JMP es tan potente en este caso y por la que es tan importante para nuestro enfoque es porque cuenta con un software DOE líder en la industria. Es un referente para el desarrollo de medios de cultivo celular y el desarrollo de bioprocesos. JMP ha sido ampliamente adoptado por los diferentes grupos de desarrollo de bioprocesos en UPSIDE Foods. Es una herramienta natural para analizar y utilizar en algunos de estos scripts.
Hablemos de cómo este script logró acelerar el desarrollo de bioprocesos aquí en UPSIDE Foods. Les presento un pequeño esquema que aísla las partes del proceso de desarrollo de bioprocesos, desde las actividades iniciales, como el desarrollo de líneas celulares, hasta la ciencia y tecnología de fabricación y la producción misma. He estado hablando mucho sobre el desarrollo de medios. Vivimos aquí, pero el desarrollo de procesos también presenta muchas intersecciones.
Lo que quiero señalar es que los ciclos de retroalimentación dinámica en este proceso de desarrollo son un elemento fundamental para impulsar la innovación y los avances científicos. Básicamente, se podría obtener una mejor línea celular que llegue al desarrollo de medios. Esto nos permite lograr un avance en algunos nutrientes limitantes y ciclos iterativos entre estos, donde realmente se produce ese emocionante avance científico.
Estaba hablando de cómo el DOE nos permitió explorar nuestros espacios de diseño de forma más eficiente. Podrías pensar que nuestros experimentos son cada vez más pequeños. En realidad, como intentamos diseñar medios desde cero, nuestros experimentos siguen siendo enormes. Aunque estamos probando el espacio de forma más eficiente, aún tenemos este espacio de diseño absurdo que necesitamos investigar.
Contamos con una enorme cantidad de muestras, a veces experimentos, y más de 100 condiciones para crear estos medios desde cero. Pueden ver una foto de mi colega Dasha imprimiendo etiquetas. Es solo un ejemplo de la cantidad de muestras con las que trabajamos y cómo esto creó un cuello de botella entre los equipos.
Para ilustrar mejor esto, tengo algunos recuentos celulares anuales que la empresa ha realizado, que son bastante impresionantes. Más de 40.000 recuentos celulares al año para el equipo de medios de UPSIDE Foods. Esto, inevitablemente, cambiará a lo largo del proceso de fabricación. A medida que se alcanzan escalas cada vez mayores, se tienen cada vez menos recipientes y grados de libertad. Como pueden ver, el PD, el paso inferior, todavía procesa unas 7.000 u 8.000 muestras al año.
Estamos procesando una enorme cantidad de datos, y avanzamos a un ritmo vertiginoso para obtenerlos. Desarrollamos este script JSL para reducir los tiempos promedio entre el procesamiento rutinario de datos de bioprocesos, difundir esa información más rápidamente, ponerla en manos de otros equipos y acelerar los ciclos de retroalimentación. Logramos reducir el tiempo de procesamiento rutinario de datos de aproximadamente una semana a aproximadamente dos días, lo cual representa un aumento de aproximadamente tres veces, lo cual es muy emocionante.
Ahora voy a hacer una pequeña demostración de un script. Les mostraré algunas de las funciones de esta herramienta. Aquí está el script. Es bastante extenso. Definitivamente ha crecido con el tiempo. Tenemos mucho código. En esta breve charla, no voy a tener tiempo para explicarlo todo. Lo que haré es mostrarles algunas de sus funciones. Si ejecuto este script, lo primero que ocurrirá es una pequeña ventana de advertencia que indica que se cerrarán otras ventanas que tengan abiertas. Me parece bien.
Voy a usar un ejemplo, quizás el 5109, de uno de nuestros experimentos. Se trata de datos reales. El script ejecuta nuestra conexión de base de datos abierta y extrae datos a JMP. Esto acelera el proceso y es algo que podemos hacer de forma rutinaria. Podemos hacerlo según sea necesario. Mientras el experimento está en marcha, los datos se cargan rutinariamente en nuestra base de datos y podemos extraerlos y consultar los gráficos en tiempo real. Pueden ver que se están completando los datos con diferentes instrumentos. Se están creando algunas tablas de datos. Luego, me preguntará si quiero agregar una clave de condición.
La clave de condición es algo que voy a explicar en un minuto y que abriré. Lo que haremos es decir que sí para poder mostrar algunas de sus funciones. También me preguntará si quiero añadir datos adicionales que no estén vinculados a un instrumento. Estos son metadatos adicionales que quizás quieras añadir. El ejemplo es pack_cell_volume. Esto es cualquier cosa que no esté siendo ejecutada por un instrumento y se cargue automáticamente a la base de datos. Vamos a decir que sí, de nuevo, para poder mostrar algunas funciones. Luego, el script creará una tabla de datos. Tenemos una buena tabla de datos completamente creada.
Antes de empezar, voy a abrir un script de normalización. Es un pequeño script que escribí para normalizar los datos. Escalará todos los números de cero a uno para que pueda hablar de ello sin restricciones de propiedad intelectual. Lo que haré será ejecutar este script junto con mi tabla de datos para ver qué sucede.
El tiempo de proceso acaba de aumentar. Ahora, nuestro valor máximo es uno, y todo lo demás es relativo a él. No tengo que mostrar todos los datos importantes que podrían estar ocultos aquí. Puedo simplemente mostrarles algunas de las funciones.
Volviendo al código de condición, voy a explicar brevemente su funcionamiento. Básicamente, tenemos las condiciones numéricas 202, 203 y 204. Todas las variables que modificamos están vinculadas a ellas mediante esta clave de condición. Aquí es donde colocaremos toda esa información, ya que necesitamos un sistema de nombres de muestra estandarizado. Hablaré de ello más adelante. Esto ilustra cómo vinculamos la información.
Tenemos una buena tabla de big data. Pueden ver que tenemos 1206 mediciones de muestra. Tenemos todos los parámetros, todos los cálculos, el lactato máximo, la generación específica de lactato, los tiempos de duplicación y otras funciones interesantes. Tenemos todos nuestros datos en un solo lugar. Lo siguiente que quiero destacar son algunos de los scripts que hemos guardado en la esquina superior izquierda.
Por ejemplo, tenemos este Constructor de Gráficos. Este Constructor de Gráficos es genial porque tiene automáticamente un selector de columnas y grafica todos nuestros parámetros y condiciones. Podemos ver rápidamente: "Oh, 202 está disminuyendo con el tiempo. Eso no está funcionando bien". 209. Como añadimos esa clave de condición, podemos decir: "Bueno, no quiero ver 201, 202. Lo que quiero ver es la condición".
Supongamos que se trata de una condición diferente. Otra ventaja de JMP y Graph Builder es que puedo decir rápidamente: "Quiero ver qué está haciendo la variable 1". Podemos tomar la variable 1 y colocarla aquí y ver: "Bueno, todos los controles no funcionan correctamente". Tenemos un par de estrategias diferentes que podrían funcionar. De igual forma, podemos arrastrar la variable 2 aquí e interactuar con los datos de forma intuitiva. Así nos hacemos una idea de lo que está sucediendo.
Podemos analizar el lactato. Podríamos considerar algo como el tiempo de duplicación aquí abajo. Lo que podemos hacer es interactuar rápidamente con nuestros datos, familiarizarnos con ellos y prepararlos para presentarlos a otras personas de la empresa para acelerar el proceso. Digamos que también quiero tener una idea de la variable 2. Puedo simplemente superponerla y obtener una idea. Los tiempos de duplicación están aumentando. Esto tiene sentido. La estrategia 1 es mantenerlos bajos. Eso es algo que queremos. Esa es la parte del Constructor de Gráficos, que es bastante interesante.
También tenemos muchas otras funcionalidades. Voy a intentar mostrarles un par rápidamente antes de pasar a la siguiente sección. Una de ellas es el análisis de ciclo. Básicamente, haré clic aquí y leerá todos los lotes que tenemos. Este número de pasaje y se creará una casilla de verificación.
Lo que haremos es seleccionar todos estos, ya que n menos 1 y n menos 2 son de escala ascendente. No quiero incluirlos en este análisis. Simplemente seleccionaré los que quiero y haré clic en "Aceptar". Aparecerán algunos ajustes bivariados y obtendremos estas tendencias. Como pueden ver, cuantificará lo que ocurre, obtendrá los datos, analizará estos análisis de tendencias y los añadirá directamente a nuestra tabla, todo automáticamente mediante scripts. No tenemos que hacerlo manualmente. Esto agiliza la obtención de datos.
Aquí pueden ver el análisis de tendencia. Ahora tenemos un gráfico que muestra: ¿cuál es la pendiente? ¿Cómo se ven a lo largo del tiempo? De nuevo, podemos tomar nuestra variable y observarla. De hecho, la vamos a colorear aquí. Pueden ver, de nuevo, maneras muy sencillas de interactuar con sus datos y analizarlos.
La última función que voy a mostrar son algunas herramientas para el operador. Por ejemplo, si quisiéramos tomar y hacer, por ejemplo, una señal o un anuncio, y un operador pregunta rápidamente: "¿Qué debo hacer hoy para ocuparme de estos reactores?", podemos decirle: "Bueno, tomemos un día".
Por ejemplo, podríamos querer hacer esto el 24/08/19. Esa es una fecha. Lo que haré será ejecutar este script. Digamos 24/08, ¿qué fecha fue? Quizás 19. Supongamos que estamos trabajando con un reactor pequeño. Podríamos tener un volumen de trabajo de unos 225 mililitros, y quizás, digamos, alimentamos al 2 %. Simplemente pulsamos "Aceptar" y se generará una tabla que indicará cuánto se alimentará cada reactor y si necesitan ciertos retroalimentadores.
En este caso, prácticamente todo necesitará glutamina y glucosa, pero imagínense una situación en la que, si no todos estuvieran ese día por debajo del umbral para una devolución de anuncio, podrían recibir un par de no. Pueden obtener una idea rápida de lo que se debe hacer para intervenir con estos reactores. Ese es el guion en resumen. Voy a cerrar algunos de estos puntos y volver a la presentación.
Analicemos brevemente cómo hacerlo, especialmente si eres principiante y estás empezando con JMP. ¿Cómo lo hacemos? Empecemos con el caso práctico: este cálculo, notoriamente difícil, del consumo autoespecífico. Los cuatro pasos que voy a cubrir son: desarrollar un sistema estandarizado de nombres de muestras, establecer una conexión con los datos, organizar, limpiar y ordenar automáticamente los datos y, por último, crear una columna de fórmula que calculará este parámetro automáticamente.
Vayamos directo al grano. Primero, para enmarcar el argumento o la tarea en cuestión, vamos a tener que hacer un poco de práctica. Voy a dar una breve charla donde hablaremos sobre qué es el consumo específico celular y por qué es tan difícil de calcular. Podemos pensar en el consumo específico celular como en la potencia celular. Cada célula necesita consumir una cantidad de nutrientes, y podemos pensar en ello como energía diaria, es decir, por unidad de tiempo.
Por lo tanto, nuestro consumo Q será un Delta C dividido por un Delta iVCD. Como pueden ver, esta es la densidad celular viable. Se trata básicamente del recuento celular. Es un proceso muy importante en bioprocesamiento. De igual manera, podemos medir la cantidad de un nutriente en la solución. Estas son curvas típicas que podrían ser un buen ejemplo de un bioproceso de lote alimentado. Para definir este parámetro, analizaremos dos puntos temporales: el que nos interesa y el anterior.
Hay un tiempo entre ellos. Se puede observar con el Delta T aquí. ¿Por qué es importante el área bajo la curva? Dije iVCD en lugar de VCD. Me refería a este gráfico de densidad de células viables, pero lo que realmente nos interesa es su integral. La razón por la que esto es importante es porque una célula viva al comienzo de este ciclo de cultivo, que puede durar cuatro días, consumirá aproximadamente cuatro veces más alimento que una célula hija que se dividió aquí y solo existió un día antes de ser cosechada.
Lo que podemos hacer es aproximarlo. Podemos hacer un poco de matemática empírica y la regla del trapezoide para calcularlo. Esta es la parte del denominador. También necesitamos un cambio en la concentración, pero eso también es un poco más complicado de lo que parece a primera vista.
Como buscamos el cambio en la concentración debido al consumo celular, debemos restar la cantidad ingerida. Normalmente no medimos esto porque sabemos qué estamos añadiendo. No solemos tener un punto de medición que muestre cómo aumenta y luego disminuye, pero debemos tenerlo en cuenta para que nuestras tasas de consumo sean precisas.
Se les administró una cantidad, y cuando la volvimos a medir al día siguiente, consumieron no solo el delta aquí, sino también la cantidad del delta aquí. Esto significa que debemos restar ese punto adicional. El resultado es esta fórmula compleja, donde tenemos muchos parámetros relacionados condicionalmente entre sí. Ese es el quid de la cuestión, lo que dificulta la automatización de algunos cálculos.
Voy a explicar cómo lo hacemos. El primero es desarrollar una nomenclatura estandarizada para las muestras. Esto es fundamental para la estrategia de automatización que hemos empleado. Usaré una cadena de ejemplo y desglosaré algunos de sus componentes. Cada uno de estos componentes es un elemento clave que nos ayuda a automatizar y procesar los datos, como limpiarlos, ordenarlos y calcularlos automáticamente.
Tenemos, por ejemplo, un ID de grupo. Tenemos el código de fecha, un número de experimento y guiones bajos para separar elementos y hacerlo visualmente más atractivo. Tenemos un lote o ciclo, un identificador de réplica y un código de condición o reactor. Esta larga cadena de caracteres puede parecer un poco intimidante, pero suele ser secuencial y numérica.
Especialmente si piensa que esto frustraría a algunos operadores, ya que normalmente solo tienen que escribir esto una vez al día, y luego puede usar funciones de autonumeración en muchos de estos instrumentos analíticos para simplemente hacer clic en la lista y rellenarla. Esto realmente da sus frutos una vez que intenta automatizar y autocalcular algunos de estos parámetros.
Mi consejo para adaptar este enfoque sería identificar qué utiliza su equipo para manipular y mostrar datos, y luego consolidar y codificar el mínimo de componentes necesarios. Es fundamental simplificar al máximo. Hay elementos que son necesarios y que serán independientes de este o aquel experimento específico, o de los que realmente se necesitan para manipular los datos.
Siempre puedes añadir funcionalidades adicionales más adelante. Por ejemplo, tenemos algunas funciones opcionales, como la sustitución de errores del instrumento, que puedes añadir al final. Puedes realizar remuestreos intencionales, como el feed del que hablaba. Si quisiéramos medirlo y comprobar que es lo que creemos que debería ser, hay otras funciones adicionales que puedes integrar, pero necesitas un esquema de nombres muy rígido para tu análisis predeterminado que logre la aceptación y haga que todos empiecen a usarlo.
¿Cuál es el segundo paso? Necesita acceder a estos datos. Lo hicimos con una conexión a una base de datos abierta. Tenemos JMP justo aquí, donde intentaremos ingresar nuestros datos. Trabajamos con nuestros equipos de datos y TI para configurar nuestros instrumentos para que exporten archivos CSV en cuanto se ejecuten. Luego, estos se cargan en nuestra base de datos. Pueden ver que, por ejemplo, un contador de células y un análisis químico se cargan en esta base de datos.
ODBC es la conexión. Es esta pieza que conecta la base de datos con el programa JMP. Es una interfaz de programación de aplicaciones (API) que utiliza SQL o lenguaje de consulta estructurado. Como vieron en la demostración, también se pueden agregar metadatos directamente a la aplicación o a JMP, o bien, alimentarlos a través de la base de datos. Ambas opciones funcionan.
¿Cómo se hace esto? JMP cuenta con una función de consultas SQL. Puedes revisarlas manualmente y hay una interfaz de usuario intuitiva donde puedes seleccionarlas. Una vez configurada la conexión a la base de datos, puedes crear tu consulta y combinarla con una función muy útil que quiero destacar, llamada Workflow Builder, que rastrea todos los pasos que realizas y genera código JSL para ello.
Ahora bien, al crear scripts más avanzados, probablemente necesites modificar ese andamio. Lo que hace es mostrarte un ejemplo de la sintaxis y agiliza la codificación, especialmente para principiantes. Para quienes no tienen formación clásica en informática. Es una herramienta realmente potente que quiero que la gente conozca.
Este es un fragmento que ilustra cómo se vería realmente el código. Tenemos una conexión. En este caso, usamos esa interfaz de usuario para agregar un ELN. Estas son algunas de las funciones adicionales que necesitaremos agregar posteriormente. Esto proporciona un punto de partida para trabajar, probar y comenzar a iterar.
Bien, paso 3. Necesitamos limpiar y ordenar los datos. Este es un paso importante, ya que, con frecuencia, al calcular el consumo de glucosa, se transfieren los datos a Excel, por ejemplo. Se mueven manualmente los datos, organizándolos, borrándolos y haciendo referencia a diferentes celdas. Limpiar y combinar los datos automáticamente será fundamental para garantizar resultados precisos.
Las dos primeras áreas que abordaré son las operaciones de unión y ordenación. En la interfaz de usuario, se encuentran en la pestaña Tablas y se pueden combinar de forma similar con el Generador de flujos de trabajo. Este es un ejemplo de una función de unión donde tomamos los analitos químicos y los recuentos celulares y simplemente unimos esas tablas. A continuación, queremos ordenarlas según nuestros parámetros para que los datos estén organizados y en el orden esperado por nuestras funciones.
Por último, podemos realizar todo tipo de limpieza. Esto es un poco más intensivo, pero se puede lograr con bastante facilidad mediante expresiones lógicas. El ejemplo que estoy usando aquí consiste básicamente en eliminar filas duplicadas de errores de instrumento. Ese es el parámetro de subrayado de R que mencioné antes.
Lo que hacemos aquí es revisar y etiquetar lo que es y lo que no es un duplicado. Luego, básicamente, tomamos, ocultamos y excluimos cualquier muestra que no sea la más reciente. Nuevamente, estos scripts incorporan muchas funciones para la limpieza, dejando los datos prácticamente listos para su uso inmediato.
Bien, pasemos a la última sección. ¿Cómo construimos una columna con funciones clave para calcular este parámetro? Tenemos nuestra ecuación compleja. Es bastante compleja. El primer paso será usar funciones como "if" y "is missing" para que el cálculo dependa de los parámetros disponibles.
En esta ventana de ejemplo, podemos decir que, para algunos de estos, sí tenemos una adición de glucosa. Ese es el parámetro de alimentación del que hablábamos. Para otros, no. Necesitamos una forma de configurar una ecuación que diga: si este valor está presente, calcularlo, incluyéndolo. Si no está presente, no. Así lo hacemos con las funciones "si" y "falta".
Tenemos otro problema. Ahora tenemos valores necesarios para este cálculo que aparecen en diferentes filas. En un formato de columnas, que ofrece ventajas para la gestión de datos, es más difícil hacer referencia a algo que no esté en la misma fila. Las fórmulas se basan más en referenciar elementos que están en la misma fila. Lo que podemos hacer es aprovechar una función muy potente que quiero mencionar aquí: la función de retardo.
Cuando los datos están correctamente ordenados y organizados, se pueden obtener referencias muy precisas a datos que no están en la misma fila. Tenemos nuestro C de T aquí y nuestro C de T menos 1, al que podemos hacer referencia mediante la función de retardo. Así es como se verá el código. Se generará una nueva columna. Crearemos una fórmula. Tendremos una sentencia if donde comprobaremos que son básicamente lo mismo. No estamos comparando dos lotes diferentes. Solo estamos dentro del mismo lote usando este identificador único. Comprobaremos si se está produciendo ese retroceso y realizaremos el cálculo. El iVCD, ese otro fragmento, se produce en otra columna, pero funciona de forma muy similar.
Lo que voy a hacer ahora es volver a JMP y mostrarlo en acción. Bien. Ahora tengo otro conjunto de datos normalizados. Pueden ver que tenemos algunas muestras, nuestros identificadores únicos, algunos valores de glucosa y algunos anuncios. Algunos de estos están sucediendo. En algunos casos, son valores diferentes y no están espaciados uniformemente. Necesitamos algo lo suficientemente inteligente como para calcular esto y hacerlo correctamente siempre.
Lo que haremos aquí es ejecutar el script que mostré al final. Lo ejecutaremos para crear una nueva columna donde se calculará el consumo específico de glucosa. Luego, simplemente moveremos la columna seleccionada para que podamos verla sin tener que desplazarnos. Tomaré y ejecutaré este pequeño fragmento del script.
Tengo que ejecutarlo todo, no solo la sección resaltada. Una vez ejecutado, vemos que se ha abierto una nueva columna y obtenemos los cálculos. Se realizan las interrupciones necesarias y obtenemos valores precisos con la escala deseada.
Si observamos nuestra fórmula, la hemos creado. Sigue esta lógica condicional y obtenemos el cálculo deseado. Aquí podemos previsualizar los datos. Podemos ver las diferentes partes, cómo se suman y solucionar problemas. Así es como automatizamos cálculos avanzados y precisos.
Muy bien. Con esto termina la charla. Solo quiero terminar rápidamente con un reconocimiento. Aquí, en UPSIDE Foods, todos los miembros han participado en esto, especialmente Megan y Julia. Aquí están algunos de mis compañeros de equipo cuando participamos en una competencia de Top Chef: toda la empresa, nuestras instalaciones de producción y algunos de nuestros productos.
Un agradecimiento especial a nuestros equipos de TI y datos por encargarse de parte del trabajo pesado relacionado con la conexión abierta a bases de datos, ayudándome a resolver problemas de sistemas. También quiero agradecer a mi gerente, Cameron, quien me presentó a JMP y me mostró lo poderosa que puede ser esta herramienta. Gracias, y con esto concluyo mi charla.