이제 RoseTTAFold라는 박스 안을 좀 들여다볼 차례예요. MSA가 들어가서 3D 좌표가 나오기까지, 중간에 어떤 일이 벌어지는지. 딥러닝 수식 같은 건 하나도 안 나옵니다. 정보가 어떤 형태로, 어떻게 흘러가는지만 그림으로 잡고 가요.
큰 그림 한 장
1D Track — "각 잔기는 어떤 아미노산?"
1D 트랙은 시퀀스 자체를 다루는 곳이에요. 길이 N의 단백질이면 N개 아미노산 정보를 가지고 있고, 거기에 MSA 정보까지 같이 들어갑니다.
정확히는 1D 트랙이 다루는 표가 N행 × K열이에요. N은 단백질 길이, K는 MSA로 찾은 비슷한 시퀀스 개수. 즉 "1번 위치에서 사람은 M, 고래는 M, 말도 M, 쥐도 M…"이라는 식의 정보가 표로 들어갑니다.
모델은 이 표에서 "어떤 위치가 보존되어 있나", "어떤 위치가 자유롭게 바뀌나"를 학습해요. 보존된 위치는 보통 단백질 코어, 자유로운 위치는 보통 단백질 표면입니다.
2D Track — "두 잔기 사이 거리는 얼마?"
이게 진짜 핵심이에요. 2D 트랙은 N×N 행렬을 다룹니다. 각 칸 (i, j)에 들어가는 정보는:
- i번째 잔기와 j번째 잔기가 얼마나 가까운가? (예: 4Å 이하면 직접 접촉)
- 두 잔기 사이 거리의 확률 분포는?
- 각도는 어떻게 되는가?
이 N×N 행렬을 contact map(접촉 지도)이라고도 부릅니다. 단백질이 3D로 어떻게 접혔는지의 2D 청사진이에요.
공진화 패턴(이전 챕터 참고)이 바로 이 2D 트랙에 직접 영향을 줍니다. "잔기 15와 잔기 42가 같이 변하더라" → "그러니까 2D 행렬에서 (15, 42) 위치는 가까운 확률이 높다" 이런 식으로 변환되는 거죠.
3D Track — "각 원자는 어디에 있나?"
드디어 진짜 좌표. 3D 트랙은 모든 잔기의 x, y, z 위치를 직접 다룹니다. 초기엔 무작위 위치에서 시작해서, 점점 다듬어져 가요.
2D 트랙에서 "잔기 15와 42가 가깝다"고 알려주면, 3D 트랙은 그 둘의 좌표를 점점 가까워지게 옮깁니다. 반대로 3D 트랙에서 "이 단백질이 이런 모양이 됐다"고 보고하면, 2D 트랙도 "그럼 다른 쌍들의 거리도 다시 계산하자"라며 업데이트합니다.
핵심 아이디어: 세 트랙이 서로 회의함
🧠 회의실 비유
세 명의 동료가 같이 일하는 그림이에요.
- 1D 박사: "내가 보기엔 이 잔기들이 중요해. MSA에서 보존도가 높아."
- 2D 박사: "내 거리 행렬로는 잔기 15와 42, 23과 78이 가까이 있어야 해."
- 3D 박사: "그럼 좌표를 이렇게 배치하면 어떨까?"
그러고 나면 다시 1D 박사가 "그 좌표로 보면 보존도가 이상한데?"하고 의문을 던지고, 2D 박사가 "거리 행렬 다시 계산해볼게"라며 응답하고… 이걸 수십~수백 번 반복합니다. 매번 셋이 합의에 가까워지면서, 최종적으로 매우 정확한 3D 구조에 도달해요.
알파폴드2와 다른 점
알파폴드2는 사실 1D + 2D 두 트랙 위주(Evoformer)이고, 3D 좌표는 마지막에 한 번에 만듭니다(Structure module). 로제타폴드는 처음부터 1D + 2D + 3D 셋이 동시에 돌아가요. 그래서 3-track입니다.
이 차이가 만드는 효과가 있어요. 로제타폴드는 메모리 사용량이 적고, 단백질 디자인 같은 응용에서 유리합니다. "3D 좌표를 처음부터 고려"하니까 좌표 자체에 제약을 걸기 쉽거든요.
출력: PDB 파일 + pLDDT
모델이 답을 내면 두 가지가 나옵니다.
1. PDB 파일 — 실제 좌표
모든 원자의 (x, y, z) 좌표가 적힌 텍스트 파일이에요. 다음 차수에서 PDB 포맷을 자세히 봅니다.
2. pLDDT — "이 잔기 위치, 얼마나 자신 있어?"
잔기마다 점수가 다릅니다. 단백질의 코어(내부)는 pLDDT 90+ 같이 매우 자신 있게 예측하고, 유연한 loop 영역은 pLDDT 50 정도로 자신감이 떨어지기도 해요.
한 번 체크하고 가요
로제타폴드의 3개 트랙 사이의 정보 흐름은 어떻게 작동할까요?
2D 트랙이 다루는 핵심 정보는?
로제타폴드의 출력은 무엇일까요?