JMP는 대규모 데이터 세트를 분석할 때 매우 강력한 도구입니다. 본 사례 연구에서는 계측 장비 고장의 근본 원인을 파악하기 위한 조사가 진행되었습니다. 조사팀은 JMP를 활용하여 특정 항목을 조사 대상에서 제외하고, 추세를 분석하고, 데이터를 시각화할 수 있었습니다. 그 결과, 조사가 성공적으로 해결되었고 근본 원인을 규명할 수 있었습니다.
본 프레젠테이션에는 조사 내용과 함께, Graph Builder의 96개 유정 지도 기능을 계측 장비에 대한 지식과 결합하여 근본 원인을 파악한 방법에 대한 간략한 시연이 포함되어 있습니다.
안녕하세요, 여러분. 저는 Exact Sciences의 애플리케이션 과학자 겸 관리자인 Holly Oxley입니다. 오늘 저는 JMP를 사용하여 근본 원인을 파악한 조사 사례를 여러분과 공유하고자 합니다.
저희 팀이 하는 일의 상당 부분은 조사입니다. 조사라는 것은 마치 완성되지 않은 퍼즐과 같다고 생각합니다. 여러 구성 요소로 이루어져 있다는 뜻이죠.
데이터 아트는 복잡성이 다양하며, 작은 요소와 큰 요소를 모두 살펴봐야 합니다. 일반적으로 요소들을 그룹화하고 연관시켜 추가 정보를 도출할 수 있으며, 발견 가능한 패턴이 존재하기도 합니다. 또한 거의 항상 일정 수준의 실험이 필요합니다. 최종적으로 이러한 작업물은 데이터 아트의 결과물이 됩니다.
이 특정 시나리오를 통해, 이러한 퍼즐 조각들이 어떻게 맞춰지는지, 그리고 JMP가 어떻게 상황을 이해하고 근본적인 원인을 찾아내는 데 도움을 주었는지 설명하겠습니다.
첫째, 구성 요소와 그 복잡성이 다양하며, 저는 이를 퍼즐 조각의 개수에 비유합니다. 조사에 필요한 데이터는 연구실 내 수많은 출처에서 나오는데, 여기에는 시약 데이터, 기기 데이터, 환경 데이터, 작업자 관찰 결과, 추세 데이터 등이 포함될 수 있습니다.
이러한 데이터 세트와 조사 자체의 복잡성도 다양합니다. 저희 팀은 JMP를 사용하여 단일 실행 결과부터 200개 이상의 열과 5백만 줄이 넘는 데이터에 이르기까지 다양한 규모의 결과를 출력합니다. JMP 가져오기 기능은 단일 파일 가져오기부터 데이터베이스에 직접 연결된 전체 SQL 쿼리 파일 가져오기까지 폭넓게 사용됩니다.
이번 사례 연구는 규모는 작지만, 무효 샘플링 비율 증가 사례를 다루고 있습니다. 이러한 크고 작은 요소들을 살펴보면, 형태가 다양한 조각들이 존재함을 알 수 있습니다.
작은 요소에는 특정 날짜 범위, 실행 데이터, 시약 정보 등이 포함되고, 더 큰 요소에는 여러 연구실에서 실험을 진행하는 경우 사이트 비교, 조직 내 또는 현재 조사에서 발생하는 다른 문제에 대한 정보, 과거 추세 분석 등이 포함됩니다. 특히 과거 추세 분석은 매우 중요하며, 저희에게는 방대한 데이터가 있기 때문에 더욱 중요합니다. 또한 장비와 전반적인 샘플 영향도 고려해야 합니다.
JMP를 이용한 데이터 분석에는 여러 파일 가져오기, 분포 분석, 표 작성, Y축과 X축의 관계식 작성, 변동성 차트 생성, 그래프 작성, 코드 재작성, 시간 및 날짜 수정, 수식 생성 등이 포함되지만 이에 국한되지는 않습니다. 또한, 업무 및 데이터 분석 효율성을 극대화하기 위해 가능한 모든 곳에서 스크립팅을 활용합니다.
이 경우, 실험실에서는 분석 초기 단계에서 시료 품질이 불충분하여 유효하지 않은 결과가 나오는 시료가 증가하는 문제를 보고했습니다. 우리는 이 문제를 종합적으로 분석하여 조사에 도움이 될 만한 추가 정보를 파악하고자 합니다.
그러한 분석을 진행하면서, 저희는 제어 데이터, 교정 데이터, 계측 데이터 등 여러 가지 요소를 종합적으로 검토했고, 그 결과 특정 요소 중 어느 것도 현재 문제의 원인이 아니라는 결론에 도달했습니다.
이러한 요소들이 배제되자, 우리는 다른 조사에서 확인했던 소모품 관련 문제의 급증과 같은 다른 잠재적 연관성을 평가할 수 있게 되었고, 따라서 사용된 곳을 파악하기 위해 제조 번호 추적과 같은 작업을 시작할 수 있었습니다.
계측기 유지보수 작업이 진행되었음에도 불구하고, 해당 계측기에서 최초 유지보수 작업 완료 직후 얼마 지나지 않아 또 다른 문제가 발생하는 경우가 있었습니다. 따라서 계측기가 문제의 원인이 될 수는 있지만 근본적인 원인은 아닐 가능성이 높다고 판단할 수 있었습니다.
교정 및 관리, 실패 데이터 또는 시약 실패 정보와 같은 세부적인 요소들을 평가했을 때, 우리가 보유한 데이터의 추세를 보면 단일 실행으로 인한 무효율 증가는 나타나지 않았습니다. 오히려 개별 샘플 수준에서의 증가가 두드러졌습니다.
시약 정보를 확인한 결과, 한 곳에서 사용 중인 특정 시약에는 변경 사항이 없었으며, 서로 다른 시약 세트를 사용하는 두 곳에서 문제가 발생하고 있음을 알 수 있었습니다.
그 시점에 이르자 계측 장비 관련 문제를 배제하는 과정에서 뚜렷한 패턴이 나타났습니다. 즉, 이 문제로 인해 많은 계측 장비가 일시적으로 사용 중지되었지만, 수리 후에도 이전보다 성능이 향상되지 않고 있다는 점이었습니다.
이를 계기로 패턴을 더 자세히 살펴보게 되었습니다. JMP 그래프 빌더와 맵 도형 기능을 활용하여 유효하지 않은 샘플이 발생하는 위치를 시각화할 수 있었습니다. 이 작은 그림에서 96웰 플레이트의 각 웰 내부에 빨간색과 파란색 점들이 있는 것을 확인할 수 있습니다.
보시다시피 일정한 패턴이 있습니다. 빨간색 점은 유효한 샘플이고 파란색 점은 유효하지 않은 샘플입니다. 오른쪽 부분을 보면 파란색 점이 빨간색 점보다 훨씬 많다는 것을 알 수 있습니다. 또한 특정 열을 따라 분포하는 경향도 보입니다. 행뿐만 아니라 열도 마찬가지입니다. 저희 팀은 다음으로 유효하지 않은 샘플 수가 많은 경우가 발생하면 즉시 보고해 달라고 요청했습니다.
계측 장비에 대한 지식과 이러한 데이터 패턴을 결합하여 소모품 로트 추세를 파악할 수 있었고, 이미 진행 중이던 다른 조사에 따라 로트 추적을 시작한 상태였습니다. 물론, 항상 어느 정도의 시행착오가 필요합니다.
이 경우, 조사팀 측에서 제공한 재료로는 문제를 재현할 수 없었기 때문에, 실험실에서 문제를 재현해 보기 위해 단 하나의 기기만을 선택했습니다. 우리는 그들의 재료를 사용하기 위해 실험실에 갔습니다.
문제의 간헐적인 발생 양상은 문제가 제기된 소모품 약 20개에서 재현될 수 있었습니다. 실험 결과, 해당 소모품을 기기에 장착하는 과정에서 시각적으로 명확하게 식별 가능한 원인이 있음을 확인했습니다. 이후 문제 해결 과정에서 해당 플레이트에 대해 수행한 데이터 분석을 통해 이를 재확인했습니다.
이 모든 과정을 거친 후, 우리는 최종적으로 딥웰 플레이트가 우리가 목격했던 무효율 증가의 진짜 원인임을 밝혀낼 수 있었습니다. 제조업체는 이후 우리가 이 조사 과정에서 확보하고 보관했던 플레이트가 공급업체가 정의한 규격 허용 오차 범위를 벗어난 제품임을 확인해 주었습니다. 이로 인해 실험실 파트너들이 플레이트에 시료를 부적절하게 주입하게 되었고, 결과적으로 시료들이 한곳에 모여 무효 결과를 생성했던 것입니다.
전반적으로 단순함의 미학은 복잡함의 퍼즐과 같으며, 바로 이 특정 상황에서 우리가 목격한 바입니다. JMP를 활용하여 이 조사를 진행했기에, 우리가 발견한 내용과 이 도구를 어떻게 활용할 수 있었는지에 대한 몇 가지 팁을 공유하고자 합니다. JMP 커뮤니티에는 다양한 맵 유형이 있으며, 직접 만들 수도 있습니다. 레이아웃을 직접 만드는 방법에 대한 게시물을 여기에 첨부했습니다.
두 번째 게시물은 실제로 이번 조사를 위해 사용했던 웰(Well) 형식입니다. 아래 링크에서 찾을 수 있는 Plate96Welsl-Name.jmp 파일입니다.
이것으로 슬라이드쇼는 끝났습니다. 이제 실제 시연에 필요한 자료들을 빠르게 가져오겠습니다. 제가 실제로 이 분석을 수행할 때 어떻게 사용했는지 보여드리겠습니다. 이것은 제가 지도를 이용해 이러한 결론을 도출하는 데 사용한 예시 데이터 세트입니다.
여기에는 플레이트 ID, 웰 번호, 그리고 '웰'이라는 특정 열, 샘플 상태, 설정 일련 번호가 있습니다. 설정 일련 번호는 장비 자체와 연결되어 있습니다. 샘플 상태는 결과가 유효한지 또는 유효하지 않은지를 명확하게 보여줍니다.
그런 다음, 저희 소프트웨어 설정 방식 때문에 원하는 지도 기능을 사용하려면 유정 번호를 위한 새 열을 만들어야 했습니다. 그렇게 하면서 96개 유정 목록에서 저희 유정의 순서를 표시하고, 해당 유정 열에 A1부터 H12까지의 번호를 부여했습니다. 이것이 실제 지도에서 사용하기 위해 필요한 번호입니다.
그런 다음… 아, 죄송합니다. 특정 열에 들어가서 정보를 생성한 후에는 열 정보로 이동할 수 있습니다. 제 예시에서는 모델링이 문자형이고 명목형으로 되어 있지만, 열 속성 드롭다운 메뉴에서 '역할 매핑'을 선택하면 됩니다.
여기서 모양, 이름, 용도 또는 모양, 이름, 정의 중에서 선택할 수 있습니다. 저는 모양, 이름, 용도를 선택하고, 데이터를 가져올 특정 파일을 찾겠습니다. 음, 잠깐만요, 96 Well Plate네요. 그런 다음, 제가 'Well'이라고 이름 붙인 열을 이 지도 모양을 적용할 특정 열로 정의합니다. 마지막으로 확인을 클릭합니다.
그다음에는 그래프 빌더로 이동하여 방금 모양을 지정한 새 열을 지도 모양으로 드래그합니다. 이제 96개 웰 레이아웃이 표시된 것을 볼 수 있습니다. 여기에서 이 특정 분석에 대해 샘플 상태를 색상으로, 일련 번호 또는 설정된 일련 번호를 페이지로 드래그했습니다. 이제 이 특정 일련 번호에서 나온 실행 횟수에 따라 유효 또는 무효 결과가 다르게 표시되는 것을 확인할 수 있습니다.
그다음에는 실행별로 살펴보고 싶었습니다. 로컬 데이터 필터를 적용했는데, 이 필터에는 샘플 설정, 또는 상태라고 하는 것이 더 정확하겠지만, 제가 정말로 보고 싶었던 두 가지 항목만 선택했습니다.
그런 다음 지도 자체 내에서 지도 도형으로 이동하여 점으로 변경했습니다. 이렇게 하면 특정 장비에서 여러 번 실행된 데이터가 있을 때 해당 테이블에 표시된 모든 대표 데이터를 볼 수 있습니다.
위쪽에서 보시는 것처럼, 이것은 단일 실행 결과이며, 무효 데이터의 패턴을 확인할 수 있습니다. 두 번째 예시에서는 무효 데이터의 패턴이 다르고, 역시 여러 번 실행한 결과입니다. 이는 문제가 있음을 알고 있는 상황에서 유지보수 전에 테스트를 진행하고, 유지보수 후에 다시 테스트를 진행한 사전 및 사후 테스트의 예시입니다.
보시다시피 개체군의 위치는 크게 변하지 않았습니다. 약간의 움직임은 있었지만, 두 가지 시나리오 모두 플레이트가 어떻게 놓였는지에 대한 두 가지 사실을 보여줍니다. 이 시나리오에서는 플레이트 소모품의 오른쪽 부분이 기울어진 상태로 기기에 놓였을 가능성이 높으며, 이로 인해 특정 오류가 발생했습니다.
두 번째 예시에서는 유지보수 전후를 비교해 보면 큰 변화는 없지만, 플레이트 배치 위치가 매우 중요했음을 다시 한번 확인할 수 있습니다. 유지보수 후에도 동일한 유형의 영역에서 유정이 다시 생성되는 것을 볼 수 있습니다.
이 문제를 정확히 파악하고 해당 소모품의 근본 원인을 찾아낸 후에야 공급업체에 연락하여 논의할 수 있었고, 그 결과 마지막 슬라이드에서 말씀드린 것처럼 제품의 규격이 맞지 않는다는 정보를 얻을 수 있었습니다. 제가 말씀드릴 내용은 여기까지입니다. 그래프 빌더를 함께 활용해 주셔서 감사합니다. 이 내용이 도움이 되었기를 바랍니다.