안녕하세요, 저와 엘리엇을 대신하여 인사드립니다. 이번 발표에서는 일루미나에서 JMP를 활용한 데이터 처리 자동화를 통해 제품 개발 파이프라인을 가속화하는 방법을 보여드리겠습니다. 먼저 일루미나의 제품 개발 파이프라인, 저희 회사 소개, 그리고 제품 개발 방식에 대해 간략히 설명드리겠습니다. 그다음 자동화된 데이터 처리가 이 파이프라인에 어떻게 적용되는지, 일반적인 워크플로우 예시를 보여드리고, 마지막으로 핵심 메시지를 전달하며 마무리하겠습니다.
일루미나는 일반적으로 유전체학용 장비를 개발 및 제조하는 회사로 알려져 있습니다. 현재는 오믹스, 유전체학, 전사체학, 단백체학 등 다양한 분야의 솔루션과 플랫폼을 제공하는 기업으로 정의할 수 있습니다. 당사의 대표적인 고처리량 분석 장비는 2023년에 출시된 NovaSeq X 시리즈입니다. NovaSeq X 시리즈의 핵심 기술은 XLEAP 기술입니다.
XLEAP 기술의 핵심 특징 중 하나는 이전 버전의 고처리량 장비에서 고처리량 장비를 가동하는 데 필요했던 시약 용량과 관련하여, 이 기술 덕분에 포장 크기와 고객 측의 관리 및 보관 노력 측면에서 약 90%의 절감을 달성했다는 것입니다.
이것이 가능한 이유는 여기에서는 시약을 드라이아이스나 아이스팩을 사용하여 배송하지 않기 때문에 시약이 단일 상자에 담겨 운송되므로 고객 측에서 포장재, 드라이아이스 포장재 및 기타 유사한 포장재를 폐기하고 관리해야 하는 번거로움이 없기 때문입니다. 그 상자 안에는 한 번 실행에 약 300 사이클, 사이클당 250억 번의 측정이 가능한 이러한 유형의 플로우 셀이 들어 있습니다.
이러한 장비를 개발하기 위해서는 약 5,000개의 유세포 분석기를 작동시켜야 했다고 추산합니다. 매번 작동시킬 때마다 모든 시약이 들어 있는 카트리지로 장비를 프라이밍해야 하는데, 이 시약은 약 20가지의 서로 다른 시약으로 구성되어 있으며, 각각 분석법과 시퀀싱을 통해 개발되었습니다. 바로 이 부분에서 자동화된 데이터 처리가 중요한 역할을 합니다.
여기서는 시약 개발에 분석법을 사용하는 예를 살펴보았습니다. 아시다시피, 플레이트 기반 분석법에서는 과학자가 실험을 수행하고, 데이터를 추출하고, 데이터 축소 및 처리 분석을 반복하며, 보고서를 작성할 때까지 클릭과 복사 붙여넣기를 계속합니다. 보고서가 완성되면 결론을 도출하고 다음 실험으로 넘어갈 수 있습니다. 이러한 과정을 반복할 수도 있지만, 자바스크립트의 기능을 활용할 수도 있습니다.
데이터 추출, 데이터 축소, 데이터 처리를 자동화하는 스크립트를 생성하고, 이를 통해 반복적인 실험에서 이러한 유형의 분석을 점진적으로 수행할 수 있도록 지원합니다. 이는 여러 가지 이점을 제공합니다. 첫째, 실험자의 시간을 절약할 수 있습니다. 둘째, 여러 실험에 걸쳐 이러한 분석을 반복적으로 수행할 수 있으므로 제품 개발 파이프라인을 가속화할 수 있습니다. 또한, 작업자가 직접 클릭하고 복사하여 붙여넣는 작업을 없애므로 오류 발생률을 줄일 수 있습니다. 오류가 줄어들면 절차를 표준화할 수 있습니다.
표준화는 재현 가능하고 견고한 프로세스를 확보하는 데 필수적인 요소입니다. 스크립팅 경험이 많지 않은 과학자들도 JMP의 워크플로 빌더 기능과 JMP 커뮤니티에서 제공하는 정보를 활용할 수 있기 때문에 표준화를 통해 프로세스를 구현할 수 있습니다. 최소한의 코딩 경험만 있으면 됩니다.
GSR에 대한 이해가 거의 필요 없는 워크플로 빌더를 사용하여 재사용 가능한 자동화 데이터 처리 시스템을 구축하는 방법을 예시를 통해 살펴보겠습니다. LUNAR에서는 새로운 시퀀싱 시약을 개발하는 것이 일반적이며, 종종 해당 시약의 활성을 측정하는 테스트를 개발해야 합니다. 예를 들어, 어두운 기질을 사용하여 시약을 통해 형광 생성물로 변환시킨 다음, 플레이트 리더에 올려놓고 시간에 따른 형광 생성물의 반응 변화를 측정하는 테스트가 있다고 가정해 보겠습니다.
일반적으로 이러한 반응은 1차 반응 속도를 따르므로 생성물 P의 형성은 시간에 대한 함수인 다음 방정식으로 설명할 수 있으며, 두 가지 중요한 매개변수가 있습니다. 하나는 시간 경과가 끝날 때 얻는 최대 강도를 나타내는 Pₘₐₓ이고, 다른 하나는 반응 속도 상수 k입니다.
우리가 정말로 관심을 갖는 것은 반응 속도입니다. 어떤 시약이 가장 높은 반응 속도를 보이는지 알아보는 것이죠. 일반적으로 플레이트 리더기에서 소프트웨어로 원시 데이터 파일을 받습니다. 대개 엑셀 파일인데, JMP를 사용해서 데이터 처리를 자동화하려고 합니다. 이 엑셀 데이터를 불러와서 반응 값에서 배경 강도 데이터를 빼야 합니다.
우리는 지수 함수 피팅을 수행하여 반응 속도 상수 k를 구하고, 그 결과를 요약한 JMP 표로 추출하려고 합니다. 이제 JMP를 실행하여 이 작업을 수행하는 방법을 보여드리겠습니다. 먼저 Excel 파일을 열어 보겠습니다. 이 파일은 플레이트 리더 소프트웨어에서 생성되는 일반적인 원시 파일 형식입니다. 보시다시피 소프트웨어에서 자동으로 입력된 실험 정보가 포함되어 있습니다.
플레이트 레이아웃 그림이 있고, 21번째 줄에 이르러서야 실험 데이터가 나옵니다. 이 데이터를 열어서 JMP로 처리하고, 보기 좋게 요약된 결과를 얻고 싶습니다. 만약 이 과정을 자동화된 워크플로로 만들고 싶은데 JSL 코드를 작성하거나 스크립트를 만드는 방법을 모른다면, 워크플로 빌더라는 도구를 사용할 수 있습니다. 모든 예제에서는 JMP 18 기본 버전을 사용합니다. 모든 내용을 정리하고 보기 쉽게 하기 위해 JMP 프로젝트 내에서 예제를 실행하지만, JMP 표준 버전에서도 이러한 작업을 수행할 수 있습니다.
먼저 [새로 만들기]를 선택하고 [새 워크플로]를 선택합니다. 여기가 워크플로 플랫폼인데, 중요한 점은 녹화를 시작하기 전에 이 빨간색 버튼을 클릭해야 한다는 것입니다. 그러면 수행하는 모든 단계가 워크플로로 저장되고, 각 단계에 해당하는 스크립트가 자동으로 생성됩니다. 마지막으로, 이러한 단계들을 연결하여 사용할 수 있는 스크립트를 만들 수 있습니다.
엑셀 파일을 여기에 가져오려고 하니, 이 파일을 열겠습니다. 앞서 보여드린 것처럼 데이터가 첫 번째 줄부터 시작하지 않는데, 여기서는 데이터의 시작과 끝 위치를 지정할 수 있습니다. 이제 가져오기를 클릭하면 이 단계가 워크플로 빌더 탭의 워크플로 단계에 기록됩니다. 데이터는 다음과 같습니다. 시간, 다양한 샘플, 그리고 배경 데이터가 있습니다.
이제 작업을 진행하기 위해 새 열을 추가해야 합니다. 이 열을 '예측(Pred)'이라고 하겠습니다. 슬라이드에서 보여드린 공식을 사용하여 시간에 따른 변화를 예측할 것입니다. 여기에는 두 개의 변수가 있습니다. 초기값을 지정하고 적합 과정을 수행하도록 했습니다.
이제 언제든지 작업을 일시 중지하고 골프를 치거나 탐색하고 싶다면 빨간색 버튼을 다시 클릭하기만 하면 됩니다. 그러면 자유롭게 탐색할 수 있습니다. 어떤 작업을 하든 단계로 추가되지는 않습니다. 예를 들어, 현재 데이터가 어떻게 보이는지 살펴보겠습니다. 그래프 빌더로 이동하여 데이터를 다시 가져오면 현재 원시 형태로 어떻게 표시되는지 확인할 수 있습니다.
보시다시피 배경 신호는 약 1,000 RFU 단위이고, 예측 응답은 0에서 시작합니다. 이제 샘플을 정규화하고 배경 신호를 제거해야 합니다. 먼저 몇 가지 추가 처리를 해야 합니다. 이 버튼들은 매우 유용합니다. 처음으로 돌아가려면 이 재설정 버튼을 클릭하면 됩니다. 그러면 처음 위치로 돌아가고, 재생 버튼을 클릭하면 마지막으로 녹화를 멈췄던 지점으로 돌아갈 수 있습니다.
이제 더 이상의 단계를 기록하기 전에, 녹화 버튼을 다시 클릭해야 합니다. 배경을 빼야 하는데, 가장 좋은 방법은 샘플 열들을 합치는 것입니다. 이 열들을 합친 새로운 표를 만들고, 데이터 열의 이름을 RFU(형광 단위)로, 열 이름을 샘플로 지정하겠습니다.
이제 우리가 해야 할 일은 배경 신호와 샘플 신호의 차이를 구하는 것입니다. 가장 쉬운 방법은 이 두 열을 선택하는 것입니다. 마우스 오른쪽 버튼을 클릭하면 새 수식 열을 만들 수 있습니다. '결합'에서 두 열의 차이를 구할 수 있습니다. 두 가지 옵션이 있는데, '역순으로 차이'와 '차이'가 있습니다. 어떤 옵션을 선택해야 하는지는 시행착오를 통해 알아내는 것이 좋습니다. 만약 잘못된 옵션을 선택하면 음수 값이 나올 것입니다. 보시다시피, 이제 샘플 신호에서 배경 신호를 성공적으로 뺐습니다.
이제 속도 상수를 계산하기 위해 모델 적합을 실행할 수 있습니다. 분석 메뉴에서 특수 모델링을 선택합니다. 비선형 모델을 선택하고, 열에 추가한 예측 공식을 X 예측 공식에 추가합니다. 보시다시피, 열 속성으로 추가한 공식이 적합 모델에 적용되었습니다. 기준선을 뺀 샘플 데이터가 반응 변수가 됩니다. 샘플이 여러 개이므로 샘플별로 적합을 진행해야 합니다.
확인을 클릭하면 비선형 적합 플랫폼이 열립니다. 각 샘플에 대해 서로 다른 적합 결과가 표시되는 것을 볼 수 있습니다. 굵은 검은색 선은 실험 데이터이고, 가는 선은 예측 공식으로, 시작점을 제공합니다. 적합 결과가 나올 때까지 두 변수를 반복적으로 변경해 나갑니다. JMP의 모든 플랫폼과 마찬가지로, Ctrl 키를 누른 상태에서 '이동'을 클릭하면 여러 작업을 동시에 수행할 수 있습니다. 그러면 각 샘플에 대해 예측 공식을 사용하여 응답을 반복적으로 적합시킵니다.
이제 가는 선이 굵은 선 위에 겹쳐진 것을 볼 수 있으며, 적합이 수렴되었음을 알 수 있습니다. 여기에 Pₘₐₓ와 k 변수에 대한 추정치가 있습니다. 이제 이 값들을 요약 표로 만들고 싶습니다. 마우스 오른쪽 버튼을 클릭하고 '통합 데이터 표 만들기'를 선택하면 이러한 적합에서 모든 변수 데이터가 추출됩니다. 우리는 속도 상수만 필요하므로 데이터 처리의 일환으로 이 데이터를 약간 정리해야 합니다.
우리는 Pₘₐₓ에 해당하는 모든 셀을 선택하려고 합니다. Pₘₐₓ에는 관심이 없으므로 해당 행을 제거할 수 있습니다. 마찬가지로 이 표 열은 반드시 필요한 것은 아니며, 매개변수가 k라는 것을 알고 있으므로 닫고 정리할 수 있습니다.
추정치, 비율 상수, 상한 및 하한값, 상한 및 하한 신뢰 구간을 모두 얻었습니다. 시각적 효과를 높이기 위해 추정치를 하한값과 상한값 사이에 배치하여 보기 좋은 요약표를 만들 수 있습니다. 이제 다른 중간 표들이 필요 없다고 가정하고 저장하지 않고 삭제하고 싶다면, 이 모든 단계를 워크플로 빌더에 기록하면 최종 결과물을 얻을 수 있습니다.
이제 녹화를 중지하고 모든 것이 제대로 작동하는지 확인해야 합니다. 각 단계를 하나씩 실행하면서 의도한 대로 작동하는지, 오류가 없는지 확인합니다. 성공적으로 실행될 때마다 초록색 체크 표시가 나타나는 것을 볼 수 있지만, 이제 문제가 발생했습니다. 이는 결합 데이터 테이블을 만들 때 흔히 발생하는 문제입니다. 이 스크립트는 '제목 없음'이라는 이름의 새 테이블을 생성하고 그 안에 숫자를 넣습니다. 이 과정이 반복될 때마다 숫자가 계속해서 늘어납니다. 스크립트는 워크플로 빌더를 사용할 때 지정했던 특정 숫자를 찾고 있는 것입니다.
보시다시피 Untitled 7을 찾을 수 없어서 어떤 것을 사용할지 묻고 있습니다. 이것은 우리가 발견한 문제점을 보여줍니다. 스크립트를 여러 번 실행하려면 약간의 수동 작업이 필요합니다. 아주 간단한 코딩으로 이 문제를 해결할 수 있습니다. 각 단계별 스크립트를 열어 보겠습니다. 성공적으로 실행된 마지막 단계로 돌아가서, Untitled 번호에 의존하지 않도록 이 데이터 테이블을 변수로 정의해야 합니다. 이 변수를 dt라고 하겠습니다.
우리는 dt를 현재 데이터 테이블이라고 정의합니다. 이제 다음 단계로 넘어갈 때마다, 제목 없는 테이블을 참조하는 모든 부분을 우리의 새로운 변수로 바꿔야 합니다. 이런 부분이 여러 번 나올 수 있으므로, 각 단계마다 제목 없는 테이블을 dt로 변경해야 합니다. 이렇게 모두 작성했으니 다시 테스트해서 제대로 작동하는지 확인해 보겠습니다. 이 방법이 가장 세련된 방법은 아닐 수 있지만, 코드를 작성하는 방법을 익히는 데 도움이 되는 자동화 스크립트를 직접 만들 수 있게 해줍니다.
이 과정을 다시 한번 진행해 보면, 이번에는 성공적일까요? Untitled 7님, 제가 한 분을 놓쳤네요. 스크립트를 성공적으로 실행했고, 이제 요약표를 얻었습니다. 이제 이 워크플로를 저장하거나, 빨간색 화살표를 클릭하여 내보내기, 스크립트 창에 저장을 선택할 수 있습니다. 저는 여러 과학자들이 여러 번 사용할 수 있는 일반적인 재사용 가능한 스크립트를 만들고 싶다고 말씀드렸습니다.
현재 이 스크립트는 특정 파일만 열도록 설계되어 있어 다소 제한적입니다. 하지만 코드 한 줄만 추가하면 훨씬 더 일반적인 명령으로 만들 수 있습니다. 변수 F를 정의하고, 간단히 `F = pick file`이라고 입력하겠습니다. 이렇게 하면 특정 파일 경로를 변수 F로 바꾸면 사용할 파일을 선택할 수 있게 됩니다. 이제 스크립트가 제대로 작동하는지 확인해 보겠습니다.
이제 초록색 화살표를 클릭해서 스크립트를 실행해 보겠습니다. 파일을 선택하라는 메시지가 나오는데, 제대로 작동하는지 확인해 보죠. 네, 맞습니다. 너무 빨라서 무슨 일이 일어났는지도 못 보셨을 겁니다. 하지만 빌더와 연동되도록 작성한 모든 단계를 순식간에 처리해서 요약 표를 만들어 줬습니다. 이렇게 재사용 가능한 스크립트를 만들어서 데이터 처리를 자동화할 수 있습니다. 제가 전에 보여드렸던 것처럼 10분이나 걸리던 작업을 단 몇 초 만에 끝냈죠. 이렇게 하면 연구 개발 시간을 상당히 절약할 수 있습니다.
이제 워크플로우를 생성하는 방법을 살펴보았으니, 워크플로우가 데이터를 처리하는 예시를 살펴보겠습니다. 효소 활성 분석의 예시를 보여드리겠습니다. 앞서 말씀드렸듯이, 이러한 효소 활성 분석은 형광 신호를 이용합니다. 과학자의 역할은 이 경우 분석 플레이트를 준비하는 것입니다. 분석 플레이트에는 노란색으로 표시된 여러 샘플이 포함되어 있으며, 각 샘플은 모든 웰에 5개씩 동일한 비율로 반복되어 있습니다.
다음으로 양성 대조군 열이 있는데, 이 정보는 피팅을 위한 Pₘₐₓ 매개변수를 추출하는 데 사용됩니다. 모든 좋은 실험에 있어야 하는 음성 대조군 열과 반응 시작 전 형광 값을 제공하는 dt 열이 있습니다. 이 값을 통해 기준선 노이즈를 평가하고, 이를 빼서 데이터를 y축의 0점에 맞출 수 있습니다. 이 시점에서 사용자는 플레이트를 생성했습니다. 생성된 플레이트는 플레이트 리더기로 전달되어 반응이 진행되고, 플레이트가 처리되어 형광 데이터가 생성되고, 엑셀 파일에 기록됩니다. 그동안 사용자는 각 샘플에 대한 정보를 샘플 ID 테이블에 입력해 두게 됩니다.
이제 자동화된 파이프라인이 작동합니다. 파이프라인은 엑셀 데이터를 가져와 샘플 ID 테이블에 통합하여 각 웰이 올바른 샘플과 연결되도록 합니다. 시간 및 반응 정규화가 수행되어 시간 경과 그래프가 0초에서 시작하고 y축도 0점이 됩니다. 방금 설명한 반응 속도론에 따라 지수 함수로 적합시킵니다. 반응 속도를 추출하고 5회 실행 결과를 평균냅니다. 차이가 나는 실행 결과는 제외하여 최종적으로 N=4가 됩니다.
그런 다음, 예를 들어 이 경우에는 분산 분석(ANOVA)과 같은 통계적 검정을 사용하여 다양한 샘플의 결과를 비교합니다. 추가 기능으로, 프로세스 시작 시 '프로세스 덤프'라는 폴더가 생성됩니다. 이 폴더에는 파이프라인의 모든 중간 단계가 기록됩니다. 이는 자동화된 파이프라인이 제대로 작동하지 않을 경우 연구원이 문제를 해결하는 데 도움이 될 것입니다.
본질적으로 출력은 원시 데이터를 가져와 반복적인 방식으로 이해하기 쉬운 결과(이 예에서는 ANOVA로 표현됨)로 변환하는 것입니다. 실험자가 이 접근 방식을 처음 사용할 때는 데이터 축소 파이프라인을 생성하는 데 약 45분이 소요될 수 있습니다. 하지만 스크립트가 준비되면 데이터 축소 파이프라인은 약 1분 만에 실행될 수 있습니다.
세미나 초반에 보여드린 시약 카트리지에 들어 있는 시약 하나를 개발하는 데 100개 이상의 플레이트가 필요했다고 생각해 보면, XLEAP 기술 개발로 개발 파이프라인에서 최소 75시간을 절약하고 개발 속도를 얼마나 높였는지 쉽게 짐작할 수 있을 것입니다. 이제 JMP로 돌아가서 효소 활성 데이터 파이프라인이 어떻게 작동하는지 보여드리겠습니다. 스크립트를 실행하면 이전처럼 폴더와 파일을 선택하라는 메시지가 나타납니다.
자, 파일이 열리고 내보내졌습니다. 이제 파일에서 추가 데이터가 추출되었습니다. 특히 2열의 데이터가 사용될 것입니다. 이 데이터는 시간 0에서의 형광 강도 값으로, 배경을 생성하고 모든 시계열 데이터를 y축의 0점에 맞추는 데 사용됩니다. 잠시 후 데이터가 내보내지고 정규화되면 정규화된 시계열 데이터가 담긴 표가 생성됩니다. 각 시계열 데이터에 시간 0에서의 신호(약 1%)를 적용한 후, 이제 이 데이터들을 합산할 것입니다.
이제 예측 모델이 추가됩니다. 보시다시피, 이 모델은 플레이트의 모든 시점과 모든 웰을 고려하여 예상되는 형광 값을 예측하고 실제 값과 비교합니다. 잠시 후, 비선형 피팅 인터페이스가 열리고 각 데이터 시계열에 대한 자동 피팅이 활성화됩니다. 엘리엇이 이전에 보여드린 것처럼 다양한 시계열 데이터가 화면에 나타나는 것을 볼 수 있습니다. 이 데이터들은 곧 자동으로 피팅될 것입니다.
반응 속도 상수 k 값이 추출되어 표로 정리될 것입니다. 제공된 모든 시간 경과 데이터에 대한 피팅이 완료되었고, 데이터 추출도 완료되었습니다. 이제 스크립트에서 ANOVA 형식으로 정리된 데이터가 준비되었다고 알려줍니다. 제가 방금 스크립트를 슬로우 모션으로 실행해서 단계별 과정을 보여드린 데에는 약 1분 정도 걸렸습니다. 슬로우 모션 기능을 제거하면 스크립트는 방금 보여드린 것처럼 순식간에 실행되고 데이터가 준비됩니다.
저희 발표의 핵심 메시지는 두 가지입니다. 첫째, 단순히 열심히 일하는 것이 아니라 더 스마트하게 일해야 한다는 것입니다. JMP 스크립트와 자동화된 데이터 처리를 활용하면 연구 개발 생산성을 크게 향상시킬 수 있다는 점을 설득력 있게 전달했기를 바랍니다. 반복적이고 지루한 작업을 자동화함으로써 과학자와 엔지니어들이 결과의 의미를 깊이 생각하고 새로운 제품과 프로세스를 개발하는 데 더 많은 시간을 할애할 수 있습니다. 또한, JMP 스크립트 사용에 필요한 경험이 최소한이라는 점도 설득력 있게 전달했기를 바랍니다.
앞서 보여드린 예시에서처럼, 재사용 가능한 스크립트를 만드는 데 단 두 줄의 JSL 코드만 필요했습니다. JMP 워크플로 빌더는 JSL 코드 전문가가 아니더라도 자신만의 맞춤 스크립트를 작성할 수 있게 해주는 진정한 혁신입니다. 또한, 모든 동료, 특히 화학팀의 스티브 메이슨 씨의 공헌에 감사를 표하며 마무리하겠습니다. 오늘 경청해 주셔서 감사합니다.
감사합니다.