This lesson is only available in Korean for now.
Lesson 11 of 20

OpenMM — 사진 한 장에서 100나노초짜리 영상으로

제7장 「37도씨, 생리적 조건에서 100나노초. DFG-in 94.3%」

OpenMM — 사진 한 장에서 100나노초짜리 영상으로
AlphaFold 는 정지 사진을 줍니다. 분자동역학은 그 사진을 움직이게 합니다.

여기까지의 결론은 전부 사진 한 장에서 나왔습니다. AlphaFold 가 내놓은 좌표는 움직이지 않습니다.

그런데 단백질은 체온 37 °C 에서 끊임없이 떱니다. 사진에서 열려 있던 루프가, 실제로는 1 나노초 뒤에 도로 닫힐지도 모릅니다.

그걸 확인하는 도구가 분자동역학(Molecular Dynamics, MD) 이고, 이야기에서 쓴 프로그램이 OpenMM 입니다.

MD 가 하는 일은 딱 한 줄이다

F = m a

고등학교 물리 그대로입니다. 원자마다 받는 힘을 계산하고, 그 힘으로 가속도를 얻고, 아주 짧은 시간만큼 움직입니다. 그리고 반복합니다.

단계무엇을 하나
1지금 원자 위치에서 모든 원자쌍의 힘을 계산한다
2F = ma 로 가속도를 얻는다
3Δt 만큼 위치와 속도를 갱신한다
41로 돌아간다

이야기의 코드에서 Δt = 0.004 ps = 4 펨토초 입니다. 100 ns 를 채우려면 25,000,000 걸음이 필요합니다. 코드에 그대로 적혀 있습니다.

simulation.step(25_000_000) # 4fs x 25M steps = 100ns

이야기의 코드를 한 줄씩

코드무슨 뜻
ForceField("amber14-all.xml", ...) 역장(force field). 어떤 원자가 어떤 힘을 주고받는지 적어 놓은 규칙표. 실험과 양자계산으로 맞춰 놓은 근사다
tip3pfb.xml 물 모형. 단백질만 띄워 놓으면 실제와 완전히 다르게 움직인다. 물을 넣어야 한다
nonbondedMethod=app.PME 먼 거리 전기력을 다루는 방법. 없으면 전하가 있는 계에서 결과가 망가진다
nonbondedCutoff=1.0 nm 1 nm 보다 먼 원자끼리는 직접 계산을 생략한다. 안 그러면 계산이 안 끝난다
LangevinMiddleIntegrator(310*kelvin, ...) 310 K = 37 °C. 온도를 유지하면서 무작위 충돌까지 넣는 방식

310 K 라는 숫자가 이 시뮬레이션의 요점입니다. "체온에서도 그러한가" 를 묻는 것이니까요. 0 K 에서라면 아무것도 안 움직입니다.

온도와 시간을 바꿔 보세요. 루프가 얼마나 떨고, DFG-out 이 얼마나 유지되는지 바뀝니다.
Loading…
이야기의 3.2 ± 0.4 Å 도 같은 방식입니다 — 프레임마다 잰 값의 평균과 표준편차입니다.
Python Runs in your browser

그래서 이 시뮬레이션이 무엇을 확인했나

활성화 루프 RMSD 변동: 3.2 +- 0.4 A (WT 대비 지속적 차이 유지) DFG-in 상태 유지율: 94.3% D816V 펩타이드 표면 노출: 평균 RSA 0.79 +- 0.08

세 줄이 각각 앞의 세 강을 다시 확인합니다.

줄확인한 것원래 어디서 나왔나
RMSD 3.2 ± 0.4 Å루프 차이가 정지 구조의 착시가 아니었다8강 (3.87 Å)
DFG-in 94.3%켜진 자세가 계속 유지된다9강 (67.8°)
RSA 0.79 ± 0.08표면 노출이 흔들려도 유지된다10강 (0.83)

여기서 ± 기호가 새로 생긴 것에 주목하세요. 7~10강의 값은 숫자 하나였습니다. MD 를 거치자 숫자와 폭이 되었습니다. 그게 정지 사진과 영상의 차이입니다.

🤔 Check yourself
100 ns 시뮬레이션에서 DFG-in 이 94.3% 유지되었습니다. 이 숫자를 만든 것 중 하나가 아닌 것은?
🤔 Check yourself
MD 시뮬레이션 코드에서 constraints=app.HBonds 를 켜는 실용적 이유는?