13강 / 20강
msVIPER — 두 무리를 견주다
종양 집단 대 정상 집단, 한 판 승부
VIPER 에는 얼굴이 두 개 있습니다.
| msVIPER | VIPER | |
|---|---|---|
| 묻는 것 | 이 집단이 저 집단과 왜 다른가 | 이 환자 한 명은 어떤 상태인가 |
| 시그니처 | 집단 대 집단 t 통계량 한 벌 | 샘플마다 한 벌씩 |
| 결과 | 마스터 레귤레이터 순위표 하나 | 단백질 × 샘플 활성 행렬 |
| 쓰는 곳 | 기전 연구 · 약물 표적 발굴 | 환자 층화 · 맞춤 치료 |
ms 는 master regulator signature 를 뜻합니다. 먼저 msVIPER 로 큰 그림을 잡고, 그다음 VIPER 로 환자별 지도를 그리는 것이 캘리파노 랩 파이프라인의 표준 순서입니다.
6강부터 11강까지 배운 것을 전부 이어 붙인 완전한 msVIPER 입니다.
Python
브라우저에서 실행
결과를 읽는 법
순위표의 각 줄은 이렇게 읽습니다.
NES = +8.3 — 이 전사인자의 부하들이 MoR 이 시키는 방향으로 강하게 쏠렸습니다. 종양에서 이 단백질이 활성화되어 있습니다.
NES = −6.1 — 부하들이 반대 방향으로 쏠렸습니다. 종양에서 이 단백질이 억제되어 있습니다. 종양 억제 인자가 꺼져 있는 상황이 흔히 이렇게 나옵니다.
NES = +0.4 — 아무 말도 안 합니다. 이 단백질은 두 집단 사이에서 활성이 다르지 않습니다.
주의할 점 — NES 가 음수인 것도 중요한 발견입니다. 순위표를 절대값으로 정렬하는 이유가 그것입니다. 종양을 굴리는 브레이크 고장도 액셀 폭주만큼 중요한 단서니까요.
🎮 집단을 직접 만들어 견주세요
왼쪽에서 종양 샘플의 유전자 발현을 조절하고, 오른쪽에서 순위표가 다시 그려지는 것을 보세요. TF_A 의 부하 중 브레이크 하나(A4)를 반대로 움직여 보면 순위가 어떻게 무너지는지 확인할 수 있습니다.
이 행렬이 VIPER 의 최종 산출물입니다. 발현 행렬을 활성 행렬로 바꿔 놓았습니다.
Python
브라우저에서 실행
🤔 확인 문제
msVIPER 와 (환자별) VIPER 의 알고리즘상 차이는?
해설 둘 다 aREA 로 NES 를 냅니다. 갈리는 지점은 오직 시그니처를 만드는 방식이고, 그 차이가 “순위표 하나”와 “활성 행렬”이라는 다른 결과를 낳습니다.
🤔 확인 문제
msVIPER 결과에서 어떤 전사인자의 NES 가 −7.2 였습니다. 옳은 해석은?
해설 음수 NES 는 “부하들이 MoR 이 시키는 반대로 움직였다” 즉 억제 상태입니다. 종양 억제 인자가 꺼져 있는 상황을 잡아내는 값이라 절대값으로 정렬해 함께 봅니다.
🤔 확인 문제
VIPER 가 만들어 낸 단백질 활성 행렬로 할 수 있는 일로 가장 알맞은 것은?
해설 활성 행렬은 발현 행렬과 같은 모양(행=단백질, 열=샘플)입니다. 그래서 기존 분석 도구를 그대로 쓸 수 있고, 다만 다루는 대상이 “지시서의 양”에서 “일꾼의 활성”으로 바뀝니다.