BioPlayground

🧬
목록으로

Boltz-2: 구조와 결합 친화도를 한 번에 예측한다는 것

구조 예측과 결합 친화도(binding affinity) 예측을 하나의 모델로 통합한 Boltz-2의 원리와, 전통적 FEP 계산 대비 무엇이 빨라졌는지 다룹니다.

심화
|
22
|
검증 완료 (2026-07-29)
Boltz-2binding affinityFEPdiffusion model
진행률0/120 (0%)

F06 다음 질문 — 구조를 알아도 "얼마나 세게 붙는지"는 모른다

F03에서 AlphaFold3가 단백질·핵산·소분자를 한 프레임워크로 예측한다고 다뤘고, F06에서는 ESMFold가 MSA 없이 구조만 빠르게 뽑는 법을 봤습니다. 그런데 신약 개발 현장에서 정말 아쉬운 지점은 따로 있습니다. 구조를 정확히 맞혔다고 해서, 그 약물 후보가 표적 단백질에 얼마나 강하게 결합하는지까지 알려주는 건 아니라는 점입니다. AlphaFold3의 confidence 지표들은 "이 구조가 맞을 것 같다"는 신뢰도이지, "이 결합이 실제로 얼마나 강한가"를 뜻하는 결합 친화도(binding affinity)와는 다른 질문입니다.

전통적으로 유사한 화합물 사이의 상대 결합 자유에너지를 정밀하게 비교할 때는 FEP(Free Energy Perturbation, 자유에너지 섭동) 같은 분자동역학 기반 계산을 사용합니다. FEP는 “한 화합물의 절대 친화도를 누르면 나오는 계산”이라기보다, 정의한 alchemical transformation과 thermodynamic cycle을 따라 화합물 A→B의 자유에너지 차이를 추정하는 경우가 대표적입니다.

Boltz-2(MIT Jameel Clinic, 2025)는 구조 예측(co-folding)과 결합 친화도 예측을 하나의 모델 안에서 동시에 수행하도록 설계됐습니다. MIT 라이선스로 공개돼 상업적 이용에도 제약이 없다는 점이 F1.1~F1.2 트랙에서 다룬 다른 파운데이션 모델들과 구분되는 지점입니다.

원리 — 구조 확산모델 위에 친화도 회귀 헤드를 얹는다

F03에서 다룬 확산모델을 다시 불러오기

F03에서 AlphaFold3의 구조 생성부를 확산모델(diffusion model)로 다룬 것을 기억할 겁니다. 확산모델은 순수한 노이즈에서 출발해, 노이즈를 조금씩 제거하는 과정을 반복하며 최종적으로 의미 있는 좌표(여기서는 3차원 원자 좌표)를 만들어냅니다. 각 단계에서 모델이 학습하는 것은 "지금 이 노이즈 낀 상태에서, 노이즈를 어느 방향으로 제거해야 진짜 데이터 분포에 가까워지는가"라는 **스코어(score, 로그 확률밀도의 기울기)**입니다.

sθ(xt,t)xtlogpt(xt)s_\theta(x_t, t) \approx \nabla_{x_t} \log p_t(x_t)

Boltz-2는 이 구조 생성 backbone을 그대로 계승합니다. 단백질과 리간드(소분자·핵산·펩타이드)를 함께 입력하면 복합체 구조를 확산 과정으로 생성한다는 점은 AlphaFold3와 같은 큰 그림입니다.

친화도 헤드: 회귀 문제로 다시 정의하기

Boltz-2가 새로 얹은 것은 친화도 예측 헤드입니다. 구조 생성부가 만든 표현(구조가 수렴한 상태의 잠재 표현)을 입력으로 받아, 결합 자유에너지에 대응하는 스칼라 값을 예측하는 회귀 헤드를 별도로 학습시킵니다.

공개 구현의 정량 출력 affinity_pred_value는 자유에너지 ΔG\Delta GpKdpK_d가 아닙니다. 공식 문서에 따르면 μM 단위 IC50에서 유도한 log10(IC50)\log_{10}(\mathrm{IC}_{50}) 스케일입니다. 별도의 affinity_probability_binary는 0~1의 binder 확률입니다. 두 출력은 주로 서로 다른 supervision으로 학습되어, 전자는 알려진 binder의 hit-to-lead 최적화에, 후자는 decoy 가운데 binder를 가리는 초기 hit discovery에 맞춰 해석해야 합니다.

손 계산 예제: 자유에너지 차이가 결합 상수 비율로 어떻게 번역되는가

두 화합물 A, B의 예측 결합 자유에너지가 각각 ΔGA=10.0 kcal/mol\Delta G_A = -10.0\ \text{kcal/mol}, ΔGB=8.0 kcal/mol\Delta G_B = -8.0\ \text{kcal/mol}이라 해봅시다 (체온 근처 T=298KT=298\text{K}, R=1.987×103 kcal/(mol⋅K)R=1.987\times10^{-3}\ \text{kcal/(mol·K)}).

ΔΔG=ΔGBΔGA=2.0 kcal/mol\Delta\Delta G = \Delta G_B - \Delta G_A = 2.0\ \text{kcal/mol}

Kd,BKd,A=exp(ΔΔGRT)=exp(2.01.987×103×298)exp(3.38)29.4\frac{K_{d,B}}{K_{d,A}} = \exp\left(\frac{\Delta\Delta G}{RT}\right) = \exp\left(\frac{2.0}{1.987\times10^{-3}\times 298}\right) \approx \exp(3.38) \approx 29.4

자유에너지가 겨우 2 kcal/mol 차이 나는 것만으로 결합 상수가 약 29배 벌어집니다. 이는 물리적 자유에너지와 결합 상수의 관계를 설명하는 손 계산이지, Boltz-2의 affinity_pred_valueΔG\Delta G로 변환하는 공식이 아닙니다. 저자들이 보고한 FEP 대비 약 1000배 속도 향상도 특정 벤치마크와 실행 조건의 비교값으로 읽어야 합니다.

실습: Boltz-2로 리간드-단백질 복합체 구조·친화도 예측

bash
# Colab T4에서 실행. Boltz 공식 저장소 설치.
!pip install -q boltz
# 입력 YAML 예시 (protein + ligand SMILES)
cat << 'EOF' > input.yaml
version: 1
sequences:
- protein:
id: A
sequence: "MKTAYIAKQRQISFVKSHFSRQLEERLGLIEVQAPILSRVGDGTQDNLSGAEKAVQVKVKALPDAQFEVVHSLAKWKRQTLGQHDFSAGEGLYTHMKALRPDEDRLSPLHSVYVDQWDWELVMGDGDRQFSTLKSTVEAIWAGIKATEAAVSEEFGLAPFLPDQIHFVHSQELLSRYPDLDAKGRERAIAKDLGAVFLVGIGGKLSDGHRHDVRAPDYDDWSTPSELGHAGLNGDILVWNPVLEDAFELSSMGIRVDADTLKHQLALTGDEDRLELEWHQALLRGEMPQTIGGGIGQSRLTMLLLQLPHIGQVQAGVWPAAVRESVPSLL"
- ligand:
id: B
smiles: "CC(=O)Oc1ccccc1C(=O)O" # 아스피린 예시
properties:
- affinity:
binder: B
EOF
boltz predict input.yaml --out_dir ./boltz_output --diffusion_samples 5 --use_msa_server
# affinity_pred_value: log10(IC50[μM]) 계열의 정량값
# affinity_probability_binary: binder일 확률(0~1)

diffusion_samples를 늘리면 여러 후보 구조를 샘플링해 그중 가장 신뢰도 높은 구조를 고를 수 있습니다. F03에서 다룬 확산모델의 확률적 특성 — 같은 입력이라도 매번 조금씩 다른 샘플이 나온다는 점 — 이 여기서도 그대로 적용됩니다.

CS 매핑

  • 스코어 매칭(Score Matching): F03에서 다룬 확산모델의 핵심 학습 목표를 친화도 예측이라는 별도 태스크의 표현 학습에도 재사용하는 구조입니다.
  • 멀티태스크 학습(Multi-task Learning): 구조 생성과 친화도 회귀라는 서로 다른 두 목표를 하나의 backbone 표현 위에서 함께 학습시키는 것은, 하나의 encoder에 여러 개의 task-specific head를 붙이는 멀티태스크 신경망의 전형적인 설계입니다.
  • 분류/회귀 재정식화(Reformulation): "결합하는가/안 하는가"라는 이진 분류 문제 대신 연속적인 자유에너지 값을 회귀로 예측하게 하면, F05에서 다룬 ipTM 같은 신뢰도 스코어보다 훨씬 정량적인 순위 매김이 가능해집니다.

자주 만나는 결함

  • 출력 단위를 ΔG\Delta G, pKdpK_d, pIC50pIC_{50}로 임의 변환: 공식 출력은 μM IC50에 대한 log10\log_{10} 값으로 정의됩니다. pIC50=log10(IC50[M])pIC_{50}=-\log_{10}(IC_{50}[\mathrm{M}])와는 부호와 단위 기준이 다르므로 이름만 보고 변환하면 크게 어긋납니다.
  • 지원 범위를 넓게 해석: 현재 affinity 모듈은 단백질 표적과 단일 소분자 ligand 조합을 대상으로 합니다. DNA/RNA/cofactor 표적에서도 코드가 멈추지 않을 수 있지만 공식 문서는 그 출력이 신뢰할 수 없다고 경고합니다.
  • FEP를 완전히 대체한다는 오해: Boltz-2는 FEP의 "빠른 스크리닝용 대체재"이지, 정밀도가 요구되는 최종 단계에서 전통적 FEP 계산을 완전히 대체하는 것은 아닙니다. 원 저작자들의 벤치마크도 초기 후보군 압축(triage) 용도로 제시됩니다.
  • SMILES 오류를 구조 오류로 오해: 리간드 입력 SMILES 문법이 조금만 틀려도 모델이 엉뚱한 분자를 그리게 됩니다. 예측 결과가 이상하면 가장 먼저 SMILES 파싱 자체를 검증해야 합니다.

더 깊게 파고 싶다면

본문은 BPD 연구진이 직접 재구성한 서술입니다. 원 논문과 공식 자료로 심화해봅시다.

  • Boltz-2 공식 저장소·기술 보고서: github.com/jwohlwend/boltz (MIT Jameel Clinic) — 정확한 벤치마크 수치와 학습 데이터 구성은 원문을 직접 확인해야 합니다.
  • FEP 방법론 개관: Cournia et al. (2020), Rigorous Free Energy Simulations in Virtual Screening, J. Chem. Inf. Model. — 전통적 FEP가 왜 계산 비용이 큰지에 대한 배경.
  • 자유에너지-결합상수 관계식: 물리화학 교과서의 반데르발스·van 't Hoff 식 파트에서 ΔG=RTlnK\Delta G = RT\ln K 유도를 함께 복습하면 좋습니다.

다음 편 F08에서는 AlphaFold 계열 바깥의 오픈소스 구조 예측·도킹 모델군 — RoseTTAFold2, OpenFold, DiffDock — 을 비교합니다.