저는 벤 리처드슨입니다. 오늘 UPSIDE Foods에서 재배육용 JSL 생물공정 데이터 분석을 자동화하기 위해 진행해 온 작업에 대해 발표하게 되어 기쁩니다. 먼저 Megan과 Julia, 그리고 제가 대표로 참여하는 UPSIDE Foods의 주요 공헌에 대해 말씀드리고 싶습니다. 오른쪽에 저희 제품 중 일부가 나와 있습니다.
먼저, 목차를 간략하게 정리하여 앞으로 다룰 내용을 설명하겠습니다. 먼저, 배양육과 세포 배양 배지에 대해 잘 모르시는 분들을 위해 간략한 배경 소개를 드리겠습니다. 제가 근무하는 부서가 바로 그 부서인데, JMP가 저희에게 매우 유용한 도구였던 이유를 이해하는 데 매우 중요한 역할을 할 것입니다.
또한 UPSIDE Foods에서 JSL 스크립트가 생물공정 개발을 어떻게 가속화했는지에 대해서도 말씀드리겠습니다. 그런 다음 스크립트 데모를 진행하겠습니다. 주요 계측기 데이터 실시간 접근, 데이터 시각화 도구, 추세 분석, 그리고 Tabulate와 같은 기능을 활용한 운영자용 도구 등 저희가 개발한 이 도구의 몇 가지 기능을 보여드리겠습니다.
마지막 섹션에서는 JMP에서 이러한 고급 계산 중 일부를 자동화하는 방법에 대한 초보자 가이드를 소개합니다. 이를 위해 사례 연구를 중점적으로 살펴보겠습니다. 생물 공정에서 자가 특이적 포도당 소비량은 매우 중요한 매개변수입니다. 또한 계산하기 매우 어려운 매개변수로 악명 높습니다.
이 고급 계산을 분석하기 위해 저희가 수행한 네 가지 작업에 대해 설명드리겠습니다. 첫 번째는 샘플 명명을 표준화하는 것입니다. 이는 저희 접근 방식에서 매우 중요하고 근본적인 부분입니다. 또한, 개방형 데이터베이스 연결을 사용하여 실제로 데이터에 액세스하는 방법, 데이터를 자동으로 정리, 정렬 및 구성하는 방법, 그리고 마지막으로 몇 가지 주요 함수를 사용하여 수식 열을 실제로 생성하는 방법에 대해서도 설명하겠습니다.
바로 배경을 살펴보겠습니다. 배양육이란 무엇일까요? UPSIDE Foods는 무엇일까요? UPSIDE Foods는 2015년 배양육 분야 최초의 회사로 설립되었습니다. 2022년에는 USDA와 FDA의 규제 승인을 받으면서 이 분야를 선도해 왔습니다.
우리가 하는 일은 동물 세포를 채취하는 것입니다. 이건 식물성 고기가 아닙니다. 동물성 고기인데, 거기서 세포를 분리합니다. 도축하지 않습니다. 굳이 동물을 죽일 필요는 없습니다. 그런 다음 세포 배양 배지에서 분리한 세포로 세포주를 개발합니다. 다시 말씀드리지만, 저는 바로 그 곳에서 살았습니다.
세포와 세포 배양 배지는 생물 반응기에서 결합됩니다. 맥주를 양조하는 것과 매우 유사하게, 효모를 사용하여 배양합니다. 우리는 생물 반응기에서 동물 세포를 배양한 후 사람이 섭취할 수 있는 제품으로 만들 것입니다. 이 과정에서 정말 흥미로운 점은 생물 가공을 통해 육류 생산 효율을 높이고, 소비자 비용을 절감하며, 환경에 미치는 부정적인 영향을 제한할 수 있다는 것입니다. 저는 이 점이 정말 기대됩니다. 토지와 물 사용량을 줄이고, 온실가스 배출량까지 줄이는 동시에 동물 학대도 줄일 수 있습니다.
세포 배양 배지가 왜 그렇게 중요할까요? 제가 여기서 이야기하려는 것은 바로 세포 먹이입니다. 바로 우리가 이야기하고 싶은 것입니다. 구석에 몇 가지 해결책이 있습니다. 흥미로운 색깔들이 있는데, 주로 비타민에서 나오는 것입니다. 세포 배양 배지는 세포, 영양소, 그리고 체외에서 성장하는 데 필요한 주변 환경을 제공하기 때문에 매우 중요합니다.
세포 배양 배지는 사실 특별한 것이 아닙니다. 닭이나 소에게 먹이거나 심지어 우리 스스로도 섭취하는 일반적인 사료 성분의 작은 조각일 뿐입니다. 아미노산, 당, 비타민, 미네랄 등이 함유되어 있습니다. UPSIDE Foods는 특히 대량 생산을 위한 저렴한 배지 개발을 가속화하기 위해 세포 배양 배지 생산을 수직 통합했습니다. 즉, 식품 등급 성분을 사용하여 자체적으로 배지 조성을 개발했습니다.
세포 배양 배지나 생물 공정에 익숙하다면 배지 조성을 처음부터 설계하는 것은 쉬운 일이 아닙니다. 바로 이 부분에서 JMP 통계 소프트웨어가 등장합니다. 이것이 얼마나 어려운지 보여주는 예로, 50개의 배지 성분을 가진 실험 설계에 대해 요인 분석을 한다면 실제로는 매우 낮은 추정치입니다. 많은 배지는 100 이상이 될 수 있습니다. 각 배지에 대해 저농도, 중농도, 고농도만 고려한다면 설계 공간은 3의 50승, 즉 7.17 곱하기 23의 10입니다. 이는 1몰, 즉 6.02 곱하기 23의 10보다 더 큰 값이며 사실상 무한합니다. 이러한 모든 조건을 테스트할 수는 없습니다.
바로 여기서 실험계획법이 등장합니다. 실험계획법(DOE)은 응용 통계 방법론으로, 특히 한 번에 한 요인이나 OFAT(실험설계) 접근법을 기준으로 설계 공간을 더욱 효율적으로 탐색할 수 있도록 해줍니다. JMP에서 가져온 몇 가지 예시를 보여드리겠습니다. 세 개의 서로 다른 변수를 살펴보고 3차원 공간에 시각화해 보면, 변수 1, 2, 3이 있습니다.
전통적인 한 번에 한 가지 요인을 최적화하는 방식은 변수 1을 최적화하여 최적의 조건을 찾고, 변수 2로 넘어가 최적의 조건을 찾은 후, 변수 3으로 넘어가는 방식입니다. 결국에는 국소 최댓값을 찾게 될 것입니다. 만약 최적의 조건이 저 어딘가에 있는데 우리가 그것을 놓친다면 어떨까요? 첫째, 최적의 조건을 찾지 못하는 데 훨씬 더 많은 시간과 노력을 들이게 될 것입니다.
JMP가 이 분야에서 그토록 강력하고 저희 접근 방식에 중요한 이유는 JMP가 업계 최고의 DOE 소프트웨어를 제공하기 때문입니다. 세포 배양 배지 개발 및 생물 공정 개발의 진정한 표준입니다. JMP는 UPSIDE Foods의 다양한 생물 공정 개발 파이프라인 그룹에서 널리 채택되어 왔습니다. 이러한 스크립팅 작업의 일부를 살펴보고 사용하기에 적합한 도구입니다.
이 스크립트가 UPSIDE Foods에서 바이오 프로세스 개발을 실제로 어떻게 가속화했는지 이야기해 보겠습니다. 세포주 개발과 같은 상위 단계부터 제조 과학 및 기술, 그리고 실제 생산까지, 바이오 프로세스 개발 파이프라인의 각 부분을 분리하여 간략하게 도식화해 보겠습니다. 배지 개발에 대해서도 많이 이야기해 왔습니다. 우리는 이 분야에 종사하고 있지만, 프로세스 개발 역시 많은 부분이 겹칩니다.
제가 강조하고 싶은 것은 이 개발 파이프라인 전반에 걸친 역동적인 피드백 루프가 과학적 혁신과 획기적인 발전을 이끄는 데 매우 중요한 요소라는 것입니다. 기본적으로 배지 개발 단계에 도달하는 더 나은 세포주를 얻을 수 있습니다. 이를 통해 제한적인 영양소와 반복적인 사이클에서 획기적인 발전을 이룰 수 있는데, 바로 이 과정에서 흥미로운 과학적 혁신이 일어납니다.
방금 DOE 덕분에 디자인 공간을 더욱 효율적으로 탐색할 수 있었다는 이야기를 했습니다. 실험 규모가 점점 작아지고 있다고 생각하실 수도 있겠지만, 사실 저희는 미디어를 처음부터 디자인하려고 하기 때문에 실험 규모가 여전히 방대합니다. 공간을 더욱 효율적으로 테스트하고 있음에도 불구하고, 여전히 조사해야 할 터무니없는 디자인 공간이 남아 있습니다.
저희는 이 미디어를 처음부터 제작하기 위해 엄청난 양의 샘플과 때로는 실험, 그리고 100가지가 넘는 조건을 가지고 있습니다. 제 동료 다샤가 라벨을 인쇄하는 사진을 보실 수 있습니다. 저희가 얼마나 많은 샘플을 다루고 있는지, 그리고 이것이 실제로 팀 간에 병목 현상을 어떻게 발생시켰는지 보여주는 예시입니다.
이를 더욱 자세히 설명하기 위해, 회사에서 매년 실시한 세포 수 측정 결과를 보여드리겠습니다. 정말 놀라운 수치입니다. UPSIDE Foods의 미디어팀은 매년 4만 개가 넘는 세포를 측정합니다. 파이프라인이 진행됨에 따라 이러한 수치는 필연적으로 변할 것입니다. 규모가 커질수록 용기와 자유도는 점점 줄어듭니다. 바로 아래 단계인 PD는 실제로 매년 약 7,000개에서 8,000개의 샘플을 처리합니다.
우리가 수집하려는 데이터는 엄청난 양이며, 번개처럼 빠른 속도로 데이터를 수집하고 있습니다. 일상적인 생물공정 데이터 수집에 걸리는 평균 시간을 단축하고, 정보를 더 빠르게 전파하며, 다른 팀에도 정보를 전달하고 피드백 루프를 가속화하기 위해 JSL 스크립트를 개발했습니다. 실제로 우리가 이룬 것은 일상적인 데이터 수집 시간을 약 1주일에서 약 2일로 단축한 것입니다. 약 3배나 증가한 수치인데, 정말 놀라운 성과입니다.
이제 스크립트 데모를 잠깐 보여드리겠습니다. 이 도구의 몇 가지 기능을 보여드리겠습니다. 스크립트는 다음과 같습니다. 꽤 크고, 시간이 지나면서 확실히 늘어났습니다. 코드도 꽤 많습니다. 이 짧은 강연에서는 이 모든 내용을 다 설명할 시간이 없습니다. 대신 몇 가지 기능을 보여드리겠습니다. 이 스크립트를 실행하면 먼저 작은 경고 창이 뜨는데, 열려 있는 다른 창들이 닫힐 수 있다는 내용입니다. 괜찮습니다.
여기서는 5109번과 같은 예를 사용하겠습니다. 저희 실험 중 하나죠. 이건 실제 데이터입니다. 이 스크립트는 열려 있는 데이터베이스 연결을 실행하고 JMP로 데이터를 가져오는 역할을 합니다. 이렇게 하면 프로세스 속도가 빨라지고, 정기적으로 수행할 수 있습니다. 필요에 따라 수행할 수 있습니다. 실험이 진행되는 동안 데이터는 정기적으로 데이터베이스에 업로드되고, 실시간으로 그래프를 가져와서 볼 수 있습니다. 다양한 계측기가 채워지는 것을 볼 수 있습니다. 이 스크립트는 몇 가지 데이터 테이블을 생성합니다. 그런 다음 조건 키를 추가할지 묻습니다.
영어: condition key는 여기서 잠깐 설명하고 열어보겠습니다. 우리가 할 일은 그 기능 중 일부를 보여드리기 위해 '예'라고 말하는 것입니다. 또한 악기에 연결되지 않은 추가 데이터를 추가할지 묻습니다. 이것은 추가 메타데이터입니다. 여기의 예는 pack_cell_volume입니다. 이것은 실제로 악기에서 실행되지 않고 데이터베이스에 자동으로 업로드되는 모든 것입니다. 다시 '예'라고 말하여 일부 기능을 보여드리겠습니다. 그런 다음 스크립트가 여기서 할 일은 데이터 테이블을 만드는 것입니다. 우리는 모두 멋진 데이터 테이블을 만들었습니다.
본격적으로 시작하기 전에, 정규화 스크립트를 열어 보겠습니다. 이 스크립트는 데이터를 정규화하기 위해 제가 직접 작성한 간단한 스크립트입니다. 모든 숫자를 0에서 1로 변환하여 지적 재산권 침해 없이 설명할 수 있도록 합니다. 이 스크립트를 여기 데이터 테이블과 함께 실행해서 어떤 일이 일어나는지 살펴보겠습니다.
처리 시간이 방금 확장되었습니다. 이제 최대값은 1이고, 나머지는 모두 그 값을 기준으로 합니다. 여기에 숨겨진 중요한 데이터를 모두 보여드릴 필요는 없습니다. 몇 가지 기능만 보여드리겠습니다.
조건 코드로 돌아가서, 이 코드가 어떻게 작동하는지 간략하게 설명해 드리겠습니다. 기본적으로 숫자 조건, 202, 203, 204가 있습니다. 그리고 실제로 변경하는 모든 변수는 이 조건 키를 통해 이 조건 키에 연결됩니다. 표준화된 샘플 명명 체계가 필요하기 때문에 이 모든 정보를 여기에 입력합니다. 이 부분은 나중에 자세히 설명하겠습니다. 이는 정보를 여기에 연결하는 방법을 보여주는 예시일 뿐입니다.
멋진 빅데이터 테이블이 있습니다. 1,206개의 샘플 측정값이 여기에 있습니다. 모든 매개변수, 계산된 값, 최대 젖산 수치, 특정 젖산 생성량, 두 배로 증가하는 시간 등 여러 가지 재미있는 정보가 있습니다. 모든 데이터가 한곳에 잘 정리되어 있습니다. 다음으로 강조하고 싶은 것은 왼쪽 상단에 저장된 스크립트입니다.
예를 들어, 이 그래프 빌더가 있습니다. 이 그래프 빌더는 자동으로 열 전환 기능을 제공하고 모든 매개변수와 조건을 그래프로 표시해 주기 때문에 멋집니다. 202가 시간이 지남에 따라 감소하는 것을 아주 빠르게 확인할 수 있습니다. 209입니다. 조건 키를 추가했기 때문에, 201, 202는 보고 싶지 않고, 조건만 보고 싶다고 말할 수 있습니다.
이것들이 서로 다른 조건이라고 가정해 보겠습니다. JMP와 Graph Builder의 또 다른 장점은 "변수 1의 동작을 보고 싶다"라고 바로 말할 수 있다는 것입니다. 변수 1을 여기에 놓고 "아, 모든 컨트롤이 제대로 작동하지 않는군."이라고 말할 수 있습니다. 여기에는 효과가 있을 수 있는 몇 가지 전략이 있습니다. 마찬가지로 변수 2를 여기로 끌어다 놓고 매우 사용자 친화적인 방식으로 데이터와 상호 작용할 수 있습니다. 무슨 일이 일어나고 있는지 감을 잡을 수 있습니다.
젖산을 살펴볼 수도 있고, 여기 아래쪽에서 시간을 두 배로 늘리는 것과 같은 것을 살펴볼 수도 있습니다. 우리가 할 수 있는 일은 데이터와 매우 빠르게 상호 작용하고, 그 느낌을 파악하고, 회사 내 다른 사람들에게 제시할 수 있도록 준비하여 속도를 높이는 것입니다. 예를 들어 변수 2에 대한 아이디어를 얻고 싶다고 가정해 보겠습니다. 제가 할 수 있는 일은 그것을 오버레이에 표시하고 아이디어를 얻는 것입니다. 두 배로 늘어나는 시간이 증가하고 있습니다. 이는 타당합니다. 전략 1은 두 배로 늘어나는 시간을 낮게 유지하는 것입니다. 우리가 원하는 것이 바로 그것입니다. 이것이 그래프 빌더 부분인데, 꽤 흥미롭습니다.
다른 기능도 많이 있습니다. 다음 섹션으로 넘어가기 전에 몇 가지 기능을 간략하게 보여드리겠습니다. 그중 하나는 사이클 분석입니다. 이 버튼을 클릭하면 현재 가지고 있는 모든 배치(batch)를 읽어줍니다. 이 구절 번호를 입력하면 체크박스가 생성됩니다.
이 모든 항목을 선택하겠습니다. n에서 1을 뺀 값, n에서 2를 뺀 값은 스케일업된 값입니다. 이 분석에는 포함시키고 싶지 않습니다. 원하는 항목을 선택하고 확인을 클릭합니다. 그러면 이변량 적합 결과 중 일부가 팝업으로 표시되고, 추세를 확인할 수 있습니다. 보시다시피, 현재 상황을 정량화하고 데이터를 추출하여 추세 분석을 보고 테이블에 직접 추가합니다. 이 모든 작업은 스크립팅을 통해 자동으로 수행됩니다. 수동으로 작업할 필요가 없습니다. 데이터를 빠르게 추출할 수 있습니다.
추세 분석이 여기 있습니다. 이제 그래프를 통해 기울기가 어떻게 되는지, 시간 경과에 따른 기울기가 어떻게 되는지 확인할 수 있습니다. 다시 한번, 변수를 가져와서 살펴볼 수 있습니다. 여기에 색깔을 칠해 보겠습니다. 다시 한번, 데이터를 활용하고 분석하는 매우 쉬운 방법을 살펴보겠습니다.
마지막으로 소개해 드릴 기능은 운영자 중심 도구입니다. 예를 들어, 피드나 광고를 받고 싶은데, 운영자가 "오늘 이 원자로들을 어떻게 관리해야 할까요?"라고 바로 묻고 싶어 한다면, "좋아요, 하루 정도 시간을 내서 봅시다."라고 말할 수 있습니다.
예를 들어, 2019년 8월 24일에 이 작업을 하고 싶다고 가정해 보겠습니다. 날짜가 바로 그 날짜죠. 제가 할 일은 이 스크립트를 실행해서 2019년 8월 24일이라고 하겠습니다. '19년'일 수도 있고요. 작은 반응기를 작동시키고 있다고 가정해 보겠습니다. 225ml 정도의 작동 용량을 가지고 있고, 2%만 공급한다고 가정해 보겠습니다. '확인' 버튼을 누르면 각 반응기에 얼마나 공급될지, 그리고 특정 추가 공급이 필요한지 여부를 알려주는 표가 자동으로 생성됩니다.
이 경우 기본적으로 모든 것에 글루타민과 포도당이 모두 필요하지만, 만약 이 날 모든 물질이 광고 게재 기준치 이하로 공급되지 않았다면, 여기서 몇 가지 거절을 받을 수도 있습니다. 이러한 반응기들을 어떻게 처리해야 하는지 아주 빠르게 파악할 수 있습니다. 이것이 대본의 핵심입니다. 몇 가지를 마무리하고 프레젠테이션으로 돌아가겠습니다.
JMP를 처음 사용하는 초보자라면 특히 어떻게 해야 하는지 자세히 알아보겠습니다. 어떻게 해야 할까요? 먼저, 이 악명 높은 계산, 즉 자기 특정 소비량 계산에 대한 사례 연구부터 시작해 보겠습니다. 제가 다룰 네 단계는 표준화된 샘플 명명 시스템 개발, 데이터 연결 설정, 데이터 자동 구성, 정리, 정렬, 그리고 마지막으로 이 매개변수를 계산하는 수식 열을 만드는 것입니다.
바로 본론으로 들어가겠습니다. 먼저, 여기서 논의되는 논점이나 과제를 구체화하기 위해 먼저 학교 관련 내용을 좀 살펴봐야겠습니다. 여기서 잠깐 강의를 해야 할 것 같습니다. 세포 특정 소비량이 무엇이고, 왜 계산하기가 그렇게 어려운지에 대해 이야기해 보겠습니다. 세포 특정 소비량은 세포 마력과 비슷하다고 생각해 볼 수 있습니다. 모든 세포는 일정량의 영양소를 소비해야 하는데, 이는 매일, 즉 단위 시간당 에너지와 같습니다.
따라서 소비량 Q는 델타 C를 델타 iVCD로 나눈 값입니다. 보시다시피, 이는 생존 가능한 세포 밀도입니다. 이는 기본적으로 세포 수를 나타냅니다. 이는 생물 공정에서 매우 중요한 요소입니다. 마찬가지로, 용액 내 영양소의 양을 측정할 수 있습니다. 이는 유가식 생물 공정의 좋은 예가 될 수 있는 전형적인 곡선입니다. 이 매개변수를 정의하기 위해 관심 있는 시점과 이전 시점, 두 시점을 살펴보겠습니다.
그 사이에는 시간이 있습니다. 여기 델타 T 그래프에서 확인할 수 있습니다. 곡선 아래의 면적이 왜 중요할까요? VCD 대신 iVCD라고 말씀드렸습니다. 생존 세포 밀도 그래프에 대해 이야기하고 있었지만, 우리가 정말 관심 있는 것은 그 적분입니다. 이것이 중요한 이유는 이 배양 주기 초기에 살아있는 세포, 예를 들어 4일 정도 되는 세포가 바로 이곳에서 분열하여 수확되기 전 단 하루만 존재했던 딸세포보다 약 4배 많은 양의 영양분을 섭취하기 때문입니다.
우리가 할 수 있는 것은 그것을 근사하는 것입니다. 약간의 경험적 수학과 사다리꼴 법칙을 적용하여 계산할 수 있습니다. 이것이 분모의 부분입니다. 농도 변화도 필요하지만, 겉보기보다 조금 더 복잡합니다.
세포 소비로 인한 농도 변화를 알고 싶으므로, 섭취한 양을 빼야 합니다. 일반적으로는 무엇을 더하는지 알고 있기 때문에 이 값을 측정하지 않습니다. 일반적으로 이 값이 어떻게 증가했다가 다시 감소하는지 보여주는 측정 데이터 포인트가 없지만, 정확한 소비율을 얻으려면 이 값을 고려해야 합니다.
그들이 먹은 양이 있는데, 다음 날 실제로 다시 측정해 보니 여기 델타뿐만 아니라 여기 델타의 양까지 먹었습니다. 즉, 그 추가된 양을 빼야 한다는 뜻입니다. 결국 이 어려운 공식이 나오는데, 여기에는 서로 조건적으로 연관된 많은 매개변수가 있습니다. 바로 이것이 문제의 핵심이며, 이러한 계산 중 일부를 자동화하기 어렵게 만드는 요인입니다.
어쨌든 그 방법에 대해 이야기해 보겠습니다. 첫 번째는 표준화된 샘플 명명법을 개발하는 것입니다. 이는 여기서 사용한 자동화 전략의 핵심입니다. 예시 샘플 문자열을 사용하여 몇 가지 부분을 나누어 보겠습니다. 각 부분은 자동화를 지원하고 데이터 처리, 정리, 계산 등의 작업을 자동으로 처리하는 데 중요한 역할을 합니다.
예를 들어 그룹 ID가 있습니다. 날짜 코드, 실험 번호, 그리고 시각적으로 좀 더 보기 좋게 구분하기 위한 밑줄이 있습니다. 배치 또는 사이클, 복제 핸들, 그리고 조건 또는 반응기 코드가 있습니다. 이 긴 문자열은 다소 어렵게 보일 수 있지만, 일반적으로 순차적이고 숫자로 구성됩니다.
특히 일부 운영자들이 이 기능이 불편할 것이라고 생각한다면, 보통 하루에 한 번만 입력하면 되고, 많은 분석 도구에서 자동 계산 기능을 사용하면 목록을 클릭만 하면 자동으로 채워집니다. 실제로 이러한 매개변수 중 일부를 자동화하고 자동 계산하려고 시도하면 이 기능이 큰 도움이 됩니다.
이 접근 방식을 적용하기 위한 제 조언은 팀에서 데이터를 조작하고 표시하는 데 사용하는 항목을 파악한 다음, 필요한 최소한의 부분만 통합하고 체계화하는 것입니다. 이 과정은 최대한 단순하게 유지하는 것이 좋습니다. 특정 실험이나 데이터 조작에 실제로 필요한 것들과는 별개로 꼭 필요하고 독립적으로 처리되는 것들이 있습니다.
나중에 언제든지 추가 기능을 추가할 수 있습니다. 예를 들어, 여기에는 몇 가지 선택 기능이 있는데, 마지막에 추가할 수 있는 계측기 오류 대체 기능입니다. 제가 말씀드린 피드처럼 의도적인 리샘플링을 할 수도 있습니다. 만약 측정하고 원하는 결과인지 확인하고 싶다면 말이죠. 다른 부가 기능도 내장할 수 있지만, 기본 분석에는 모두가 사용할 수 있도록 매우 엄격한 명명 체계가 필요합니다.
두 번째 단계는 무엇인가요? 이 데이터에 접근해야 합니다. 저희는 개방형 데이터베이스 연결을 통해 접근했습니다. 바로 여기에 JMP가 있고, 여기에 데이터를 입력하려고 합니다. 데이터 팀과 IT 팀과 협력하여 기기가 실행되자마자 CSV 파일을 내보낼 수 있도록 설정했습니다. 그런 다음 이 파일들이 데이터베이스에 업로드됩니다. 예를 들어 세포 계수기와 화학 분석 결과가 모두 이 데이터베이스에 업로드되는 것을 볼 수 있습니다.
ODBC는 연결입니다. 여기 이 부분이 데이터베이스를 JMP 프로그램에 연결하는 부분입니다. 애플리케이션 프로그래밍 인터페이스(API)이며, SQL(Structured Query Language)을 사용합니다. 데모에서 보셨듯이, 애플리케이션이나 JMP에 메타데이터를 직접 추가하거나 데이터베이스를 통해 입력할 수도 있습니다. 두 가지 모두 작동합니다.
실제로 어떻게 하나요? JMP에는 SQL 쿼리 기능이 있습니다. 직접 살펴볼 수도 있고, 원하는 항목을 선택할 수 있는 편리한 사용자 인터페이스가 있습니다. 오픈 데이터베이스 연결을 설정한 후에는 쿼리를 작성할 수 있는데, 제가 추천하는 Workflow Builder라는 멋진 기능과 함께 사용할 수 있습니다. 이 기능은 진행 중인 모든 단계를 추적하고 해당 작업에 필요한 JSL 코드를 작성해 줍니다.
이제 좀 더 고급 스크립팅을 할 때는 이 스캐폴드를 수정해야 할 것입니다. 이 스캐폴드는 구문 예시를 보여주고, 특히 초보자, 특히 컴퓨터 과학에 대한 전문적인 교육을 받지 않은 사람들에게 코딩 속도를 높여줍니다. 정말 강력한 도구라서 꼭 알아두셨으면 합니다.
이 코드는 실제 코드가 어떻게 보일지 보여주는 스니펫입니다. 연결이 완료되었습니다. 이 경우에는 해당 사용자 인터페이스를 사용하여 ELN을 추가합니다. 나중에 추가해야 할 몇 가지 유용한 기능입니다. 이 코드를 통해 작업하고 테스트할 수 있는 시작점을 제공하고, 이를 바탕으로 반복 작업을 시작할 수 있습니다.
좋아요, 3단계입니다. 데이터를 정리하고 정렬해야 합니다. 이는 중요한 단계입니다. 특정 포도당 섭취량을 계산할 때 많은 사람들이 데이터를 Excel로 가져오는 경우가 많기 때문입니다. 즉, 데이터를 수동으로 이동하고, 정리하고, 삭제하고, 여러 셀을 참조하는 것입니다. 정확한 결과를 얻으려면 데이터를 자동으로 정리하고 결합하는 것이 매우 중요합니다.
처음 두 가지 영역에 대해 설명드리겠습니다. 조인 및 정렬 작업입니다. 사용자 인터페이스의 테이블 탭에 있으며, 워크플로 빌더와 마찬가지로 결합할 수 있습니다. 이는 화학 분석 물질과 세포 수를 가져와 테이블을 결합하는 조인 함수의 예입니다. 다음으로, 데이터가 모두 정리되고 함수에서 예상하는 순서대로 정렬되도록 매개변수별로 정렬합니다.
마지막으로, 모든 종류의 정리 작업을 수행할 수 있습니다. 이 작업은 조금 더 복잡하지만, 논리식을 사용하면 비교적 쉽게 수행할 수 있습니다. 여기서 사용하는 예시는 기본적으로 계측 오류에서 중복 행을 삭제하는 것입니다. 앞서 언급했던 R 매개변수의 밑줄이 바로 그것입니다.
여기서 우리가 하는 일은 중복된 것과 그렇지 않은 것을 검토하고 분류하는 것입니다. 그런 다음 최신 샘플이 아닌 모든 항목을 가져와 숨기고 제외합니다. 다시 말하지만, 이 스크립트는 정리 작업에 많은 기능을 내장하여 데이터를 바로 사용할 수 있는 상태로, 즉 최적의 시간대에 사용할 수 있도록 합니다.
좋아요, 이제 마지막 섹션으로 넘어가 보겠습니다. 이 매개변수를 계산하는 주요 함수가 포함된 열을 실제로 어떻게 만들까요? 엉뚱한 방정식이 있습니다. 꽤 잔혹하죠. 첫 번째 단계는 if 및 is missing과 같은 함수를 사용하여 사용 가능한 매개변수에 따라 계산이 달라지도록 하는 것입니다.
이 예시 창에서는, 이 중 일부에 대해 포도당 추가량이 있다고 말할 수 있습니다. 바로 우리가 이야기했던 공급 매개변수입니다. 하지만 일부에는 그렇지 않습니다. 이 값이 있으면 계산하고, 없으면 계산하지 않는 방정식을 설정하는 방법이 필요합니다. 바로 if 및 is missing 함수를 사용하는 것입니다.
또 다른 문제가 있습니다. 이 계산에 필요한 값들이 서로 다른 행에 나타납니다. 데이터 관리에 유리한 열 기반 형식에서는 같은 행 밖에 있는 값을 참조하기가 더 어렵습니다. 수식은 같은 행에 있는 값을 참조하는 방식으로 구성되어 있습니다. 여기서 제가 언급하고 싶은 매우 강력한 함수인 lag 함수를 활용할 수 있습니다.
데이터가 적절하게 정렬되고 구성되면 같은 행에 없는 데이터를 정말 정확하게 참조할 수 있습니다.여기에는 C of T가 있고 lag 함수를 사용하여 참조할 수 있는 C of T에서 1을 뺀 값이 있습니다.코드는 다음과 같습니다.새 열이 생성됩니다.수식을 만듭니다.기본적으로 동일한지 확인하는 if 문이 있습니다.두 개의 다른 배치를 비교하지 않습니다.이 고유 ID 핸들을 사용하여 동일한 배치 내에만 있습니다.광고 백이 발생하는지 여부를 확인하고 계산을 수행합니다.iVCD, 다른 청크는 다른 열에서 발생하지만 매우 유사하게 작동합니다.
이제 JMP로 돌아가서 실제로 작동하는 모습을 보여드리겠습니다. 좋습니다. 이제 또 다른 정규화된 데이터 세트가 있습니다. 보시다시피 여기에는 샘플, 고유 ID, 포도당 값, 그리고 광고 백이 있습니다. 이 중 일부는 실제로 발생합니다. 어떤 경우에는 값이 다르고 간격이 고르지 않습니다. 이를 계산하는 방법을 파악하고 매번 정확하게 처리할 수 있는 스마트한 도구가 필요합니다.
여기서 할 일은 하단에 보여드린 스크립트를 실행하는 것입니다. 이 스크립트를 실행하여 특정 포도당 소비량을 계산할 새 열을 만들고, 선택한 열을 스크롤하지 않고도 볼 수 있도록 이동할 것입니다. 스크립트의 이 작은 발췌 부분을 실행해 보겠습니다.
강조 표시된 부분만 아니라 전체를 실행해야 합니다. 실행해 보니 여기에 새 열이 추가되어 계산이 진행되는 것을 볼 수 있습니다. 원하는 대로 계산이 중단되고, 원하는 대로 크기가 조정된 정확한 값이 나옵니다.
공식을 살펴보면, 이미 만들어진 공식이 있습니다. 이 공식은 조건부 논리를 거치면서 원하는 대로 계산이 진행됩니다. 여기서 데이터를 미리 볼 수 있습니다. 각 부분이 어떻게 합산되는지 확인하고 문제를 해결할 수 있습니다. 이렇게 해서 정확하고 고급 계산을 자동화할 수 있습니다.
좋아요. 이제 강연은 여기까지입니다. 간단히 마무리하고 인사드리고 싶습니다. UPSIDE Foods의 모든 직원들, 특히 메건과 줄리아가 이 일에 참여했습니다. 탑 셰프 경연 대회를 진행했을 때 팀원들과 회사 전체, 생산 시설, 그리고 일부 제품들을 보여드리겠습니다.
특히 오픈 데이터베이스 연결과 관련된 어려운 작업을 맡아주시고, 저와 함께 시스템 문제 해결을 도와주신 IT 팀과 데이터 팀에 감사드립니다. 그리고 JMP를 처음 소개해 주시고, 얼마나 강력한 도구인지 보여주신 저의 매니저 캐머런에게도 감사드립니다. 감사합니다. 이제 발표를 마치겠습니다.