15강 / 20강

VIPER — 부하들을 보고 상사의 활동을 읽는다

아라크네 다음에 오는 것

VIPER — 부하들을 보고 상사의 활동을 읽는다
사령관이 보이지 않아도 부대가 움직이는 모양으로 그가 명령을 내렸는지 알 수 있습니다.

아라크네를 왜 돌렸는지 이제 말할 차례입니다. 그물 자체가 목적인 경우는 드물어요. 대부분은 다음 단계의 재료로 씁니다.

가장 널리 쓰이는 다음 단계가 VIPER 입니다.

VIPER = Virtual Inference of Protein activity by Enriched Regulon analysis
regulon 을 써서 단백질의 활동량을 추정한다

왜 필요한가 — 발현량은 활동량이 아니다

"어떤 전사인자가 활발한지 알고 싶으면 그 유전자의 발현량을 보면 되지 않나?" 안타깝게도 안 됩니다. 이유가 여럿이에요.

발현량 (mRNA) 을 보면

단백질이 만들어졌는지 모른다. 만들어졌어도 인산화되어야 일하는 것이 많다. 핵에 들어갔는지, 짝 단백질을 만났는지도 모른다.
게다가 전사인자는 대개 발현량 변화가 작습니다.

부하들을 보면

상사가 일했다면 부하 50명이 한꺼번에 움직입니다. 50개의 작은 변화를 모으면 신호가 √50 배쯤 또렷해집니다.
그가 실제로 명령을 내렸는지를 직접 재는 셈입니다.

이것이 VIPER 의 발상입니다. 보이지 않는 지휘관을, 부대의 움직임으로 읽는다.

DDX54 를 껐더니 그 부하와, 부하의 부하까지 줄줄이 내려갔습니다.
Python 브라우저에서 실행

NES — 부대가 얼마나 한 방향으로 움직였나

이제 regulon 하나를 놓고 묻습니다. "이 부대의 표적들이 한 방향으로 몰려 움직였나?"

NES = Σ wᵢ · modeᵢ · zᵢ / √( Σ wᵢ² )

z — 그 표적이 얼마나 움직였나 (시그니처)

mode — 켜는 표적이면 +1, 끄는 표적이면 −1. 끄는 표적이 내려갔다면 상사가 활발해졌다는 뜻이니 부호를 뒤집어야 합니다.

w — 그 표적을 얼마나 믿나 (MI 로 정한 무게)

√(Σw²) 로 나누기 — 표적 수가 많다고 무조건 커지지 않게 하는 정규화입니다. 표적 50개짜리 regulon 과 10개짜리 regulon 을 같은 자로 비교하려면 필요합니다.

표적들이 제각각으로 움직이면 덧셈에서 서로 지워져 NES 가 0 근처가 됩니다. 한 방향으로 몰릴 때만 커져요.

MYC 가 −11.4 로 가장 크게 내려갔습니다. DDX54 를 껐을 뿐인데요.
Python 브라우저에서 실행

🎮 부대의 움직임을 직접 보기

전사인자를 고르면 그 부대 표적들이 각각 얼마나 움직였는지 막대로 보여 줍니다. 한 방향으로 몰렸는지를 눈으로 확인해 보세요.

VIPER 실험실 — 부하들의 움직임에서 상사의 활동을 읽는다
불러오는 중…
이것이 regulon 을 모아서 보는 힘입니다. 개별 유전자 하나로는 절대 안 보이는 신호가 드러납니다.
Python 브라우저에서 실행
🤔 확인 문제
VIPER 가 전사인자의 발현량 대신 표적들의 움직임을 보는 이유가 아닌 것은?
🤔 확인 문제
NES 식에서 √(Σw²) 로 나누는 이유는?
🤔 확인 문제
어떤 regulon 의 표적 30개가 모두 크게 움직였는데 NES 는 0.3 이었습니다. 무슨 뜻일까요?