Search

ProteinMPNN 논문 리뷰

Robust deep learning–based protein sequence design using ProteinMPNN

들어가며

단백질 설계를 이야기할 때 가장 먼저 눈에 들어오는 것은 보통 구조입니다. 어떤 fold를 만들 것인지, 어떤 motif를 고정할 것인지, target protein의 어느 surface에 binder를 붙일 것인지 같은 문제들이 먼저 떠오릅니다. RFDiffusion 같은 backbone generation 모델이 주목받는 것도 이 때문입니다. 모델이 새로운 backbone을 만들어낸다는 것은 직관적으로 꽤 그럴듯한 “설계”처럼 보입니다.
하지만 실제로는 backbone을 만들었다고 protein을 만든 것은 아닙니다. 실험실에서 합성하고 발현하는 것은 3차원 좌표가 아니라 amino acid sequence입니다. 아무리 멋진 backbone을 만들더라도, 그 구조로 안정적으로 접힐 수 있는 sequence가 없으면 설계는 거기서 멈춥니다.
ProteinMPNN은 바로 이 간극을 다루는 논문입니다. 2022년 Science에 발표된 “Robust deep learning–based protein sequence design using ProteinMPNN”은 주어진 protein backbone 또는 multichain assembly geometry를 보고, 그 구조로 접힐 가능성이 높은 amino acid sequence를 설계하는 모델을 제안합니다.
겉으로 보면 RFDiffusion이나 AlphaProteo처럼 화려한 generator 논문은 아닙니다. 새로운 backbone을 만들지도 않고, target에 맞는 binder를 end-to-end로 생성하지도 않습니다. 대신 이미 주어진 구조를 sequence로 구현하는 inverse folding 문제를 빠르고 robust하게 풀려고 합니다. 그런데 실제 protein design pipeline에서는 이 단계가 매우 중요합니다. RFDiffusion 이후 대부분의 backbone generation pipeline에서 ProteinMPNN이 거의 기본 부품처럼 등장하는 이유도 여기에 있습니다.

배경: sequence design은 왜 어려운가

단백질 sequence design의 목표는 간단해 보입니다. 원하는 backbone structure가 주어졌을 때, 그 구조로 잘 접히는 amino acid sequence를 찾으면 됩니다. 하지만 이 문제는 생각보다 어렵습니다.
전통적으로는 Rosetta fixed-backbone design 같은 물리 기반 방법이 많이 사용되었습니다. 주어진 backbone 위에서 side-chain packing과 energy minimization을 수행하고, 낮은 energy를 갖는 sequence를 찾는 방식입니다. 이 접근은 강력하지만 계산 비용이 크고, system마다 expert customization이 필요한 경우가 많습니다. 표면 hydrophobicity를 어떻게 조절할지, interface packing을 어떻게 다룰지, symmetry나 multistate constraint를 어떻게 넣을지 같은 세부 설정이 성능을 크게 좌우합니다.
또 하나의 문제는 목적 함수입니다. 우리가 정말 원하는 것은 “이 backbone에서 낮은 energy를 갖는 sequence”라기보다 “실제로 그 backbone으로 접히는 sequence”입니다. 두 문제는 비슷하지만 같지는 않습니다. 물리 기반 score가 낮아도 실제 발현이나 folding이 실패할 수 있고, 반대로 자연 단백질은 안정성뿐 아니라 function, regulation, evolutionary history 같은 여러 제약을 함께 반영합니다.
ProteinMPNN은 이 문제를 data-driven inverse folding으로 접근합니다. 자연 단백질 구조와 sequence 쌍을 학습해서, 구조가 주어졌을 때 어떤 amino acid가 올 가능성이 높은지 직접 모델링합니다. 물리 법칙을 명시적으로 쓰기보다는, PDB에 축적된 structure-sequence 통계에서 “이런 geometry에는 이런 residue가 어울린다”는 패턴을 배우는 방식입니다.

ProteinMPNN의 핵심 아이디어

[Figure 1]
ProteinMPNN은 protein backbone을 graph로 보고, amino acid sequence를 autoregressive하게 생성하는 message-passing neural network입니다. Residue는 node가 되고, residue 사이의 3차원 geometry는 edge feature로 들어갑니다.
초기 모델들은 Cα-Cα distance, relative frame orientation, backbone dihedral 같은 feature를 사용했지만, 최종 ProteinMPNN은 N, Cα, C, O, virtual Cβ 사이의 inter-residue distance를 edge feature로 사용합니다. 논문에서는 이 atom-distance feature를 넣었을 때 sequence recovery가 41.2%에서 49.0%로 올라갔다고 보고합니다. 여기에 encoder edge update를 추가하면 50.5%, random decoding까지 넣으면 50.8%가 됩니다.
이 결과는 사소한 architecture ablation처럼 보일 수 있지만, sequence design 문제의 성격을 잘 보여줍니다. 어떤 residue identity가 적합한지는 주변 backbone atom들의 local geometry에 강하게 좌우됩니다. 논문에서도 nearest-neighbor graph가 32–48개 이웃 정도에서 성능이 포화된다고 보고합니다. Structure prediction에서는 long-range coevolution이 중요하지만, fixed-backbone sequence design에서는 가까운 3D 환경이 큰 정보를 담고 있는 셈입니다.

순서 무관 autoregressive decoding

ProteinMPNN의 중요한 설계 중 하나는 random decoding order입니다. 단백질 sequence는 N-terminus에서 C-terminus 방향으로 쓰이지만, 설계 문제에서 항상 그 순서대로 residue를 정해야 하는 것은 아닙니다.
예를 들어 functional motif를 고정한 채 주변 scaffold sequence를 설계해야 한다고 생각해봅시다. 또는 target protein chain은 고정해두고 binder chain만 설계해야 할 수도 있습니다. 일반적인 left-to-right autoregressive model이라면, 아직 생성되지 않은 뒤쪽 residue나 고정된 motif 정보를 앞쪽 residue 설계에 충분히 활용하기 어렵습니다.
ProteinMPNN은 학습 중 decoding order를 무작위로 바꿉니다. 덕분에 inference 때 특정 residue나 chain을 이미 알려진 context로 넣고, 나머지 위치를 설계할 수 있습니다. 이 특징은 fixed motif, multichain complex, binder redesign, partial sequence design에서 매우 유용합니다.

Symmetry와 tied positions

[Figure 1]
Protein design에서는 같은 sequence를 가져야 하는 위치들이 자주 등장합니다. Homooligomer의 여러 chain, repeat protein의 반복 단위, cyclic symmetric assembly가 대표적입니다. 이런 경우 각 위치를 독립적으로 sampling하면 symmetry가 깨질 수 있습니다.
ProteinMPNN은 tied positions라는 방식으로 이 문제를 처리합니다. 같은 amino acid를 가져야 하는 위치들의 unnormalized probabilities 또는 logits를 결합한 뒤, 하나의 amino acid를 sampling합니다. 이렇게 하면 C3, C4 같은 symmetric oligomer나 repeat protein을 설계할 때 대응 residue가 같은 sequence를 갖도록 강제할 수 있습니다.
이 기능은 단순한 convenience가 아닙니다. 실제 design pipeline에서는 symmetry constraint를 만족하는 sequence를 빠르게 많이 뽑을 수 있어야 합니다. Rosetta 기반 workflow에서는 이런 부분에 manual intervention이 많이 들어갔는데, ProteinMPNN은 이를 model-level sampling 문제로 다룹니다.

Training noise가 중요한 이유

[Figure 2]
ProteinMPNN 논문에서 특히 실용적인 부분은 backbone noise입니다. PDB crystal structure에 작은 Gaussian noise를 넣어 학습하면, native PDB sequence recovery는 약간 떨어질 수 있습니다. 하지만 design backbone이나 AlphaFold-predicted backbone처럼 완벽한 실험 구조가 아닌 입력에서는 오히려 더 robust해집니다.
저자들은 crystal refinement 과정에서 amino acid identity의 local memory가 backbone coordinate에 남아 있을 수 있다고 해석합니다. 노이즈 없이 학습한 모델은 이런 미세한 신호를 읽어 native sequence recovery를 높일 수 있지만, 실제 design에서는 그런 신호가 없습니다. 따라서 noise training은 PDB benchmark 숫자를 조금 희생하더라도, design setting에서 더 유용한 모델을 만드는 방향으로 작동합니다.
이 지점은 ProteinMPNN을 단순 benchmark 모델이 아니라 실전 설계 도구로 읽게 만듭니다. 중요한 것은 native sequence를 얼마나 잘 맞히느냐만이 아니라, 모델링된 backbone이나 generated backbone을 실제 sequence로 얼마나 잘 구현하느냐입니다.

결과 1: Rosetta보다 빠르고 정확한 sequence design

[Figure 2]
논문의 기본 benchmark는 native sequence recovery입니다. 402개 monomer test set에서 ProteinMPNN의 평균 sequence recovery는 52.4%였고, Rosetta fixed-backbone design은 32.9%였습니다. 속도 차이는 더 큽니다. 100 residue protein에 대해 100개 sequence를 설계하는 데 ProteinMPNN은 1.2초, Rosetta는 258.8초가 걸렸다고 보고됩니다.
Recovery는 residue burial과 강하게 관련됩니다. Deep core residue에서는 90–95% 수준으로 native residue를 잘 맞히지만, surface residue에서는 약 35% 수준으로 떨어집니다. 이것은 자연스러운 결과입니다. Core residue는 packing과 hydrophobicity constraint가 강하지만, surface residue는 function, solubility, crystal contact, evolutionary history 등 여러 요인의 영향을 받기 때문입니다.
다만 native sequence recovery는 design success와 같은 말이 아닙니다. 자연 sequence를 잘 맞힌다는 것은 모델이 structure-sequence 통계를 잘 배웠다는 뜻이지만, 새 backbone에 대해 실제로 잘 접히는 sequence를 만든다는 뜻은 아닙니다. 논문도 ultimate test는 experimental characterization이라고 분명히 말합니다.

결과 2: AlphaFold recapitulation과 designability

[Figure 2]
ProteinMPNN의 실용성을 보여주는 중요한 결과는 AlphaFold recapitulation입니다. ProteinMPNN으로 native backbone을 redesign한 sequence를 single-sequence AlphaFold prediction에 넣으면, original native sequence보다 target structure를 더 confidently, 더 accurately recapitulate하는 경우가 많았습니다.
처음에는 이상하게 들릴 수 있습니다. 자연 sequence보다 redesigned sequence가 AlphaFold에서 더 잘 접힌다는 뜻이기 때문입니다. 저자들의 해석은 이렇습니다. 자연 sequence는 단순히 안정성만을 최적화한 결과가 아닙니다. Function, regulation, evolutionary constraint가 함께 들어 있습니다. 반면 ProteinMPNN은 구조적 적합성에 집중해 sequence를 만듭니다. 그래서 AlphaFold 입장에서는 오히려 ProteinMPNN sequence가 target backbone에 더 “깔끔하게” 맞는 signal을 줄 수 있습니다.
De novo ligand-binding pocket scaffold set에서는 이 차이가 더 크게 나타납니다. Rosetta-designed original sequences 중 target structure로 confidently predicted to fold된 비율은 2.7%였지만, ProteinMPNN redesign 후에는 54.1%로 올라갔다고 보고됩니다. 이 결과는 ProteinMPNN이 기존 design backbone을 sequence 차원에서 rescue할 수 있음을 보여줍니다.
물론 이것도 wet-lab validation은 아닙니다. AlphaFold recapitulation은 structural plausibility proxy입니다. 하지만 RFdiffusion 같은 backbone generator 이후에 ProteinMPNN과 AF2/ESMFold filtering이 붙는 이유를 설명해주는 중요한 결과입니다.

결과 3: 실패한 monomer와 oligomer design rescue

[Figure 3]
이 논문에서 가장 설득력 있는 부분은 실험적 rescue 결과입니다. 저자들은 AlphaFold hallucination으로 만든 monomer와 oligomer backbone 중 기존 sequence가 잘 작동하지 않았던 사례들을 ProteinMPNN으로 redesign했습니다.
원래 AlphaFold-generated sequences 150개는 대체로 insoluble했고, median soluble yield가 9 mg/L였습니다. ProteinMPNN으로 redesign한 96개 중 73개는 E. coli에서 soluble expression이 되었고, median soluble yield는 247 mg/L로 올라갔습니다. 그중 50개는 SEC 기준 target monomeric 또는 oligomeric state를 보였습니다.
구조 검증도 포함되어 있습니다. 한 monomer design은 crystal structure가 design target backbone과 2.35 Å RMSD over 130 residues로 맞았고, 여러 cyclic homo-oligomer에서도 crystal/cryo-EM structure가 target backbone과 가깝게 확인되었습니다.
이 결과는 ProteinMPNN이 단순히 sequence recovery benchmark를 잘하는 모델이 아니라, 실제로 failed design을 살릴 수 있는 sequence design tool임을 보여줍니다. Protein design pipeline에서 “backbone은 있는데 sequence가 문제인” 상황이 얼마나 자주 생기는지 생각하면, 이 rescue 성능은 꽤 중요합니다.

결과 4: Repeat, symmetric oligomer, nanoparticle design

[Figure 3]
ProteinMPNN의 tied-position 기능은 repeat protein과 symmetric oligomer design에서 시험되었습니다. Rosetta-designed set에서는 C5/C6 symmetric oligomer 10개 중 4개만 soluble했고, correct oligomeric state를 보인 것은 없었습니다. 반면 ProteinMPNN set에서는 18개 중 16개가 soluble했고, 5개가 correct oligomeric state를 보였습니다.
Two-component tetrahedral nanoparticle design에서도 차이가 큽니다. 기존 Rosetta procedure는 manual intervention과 surface hydrophobicity/interface packing 조정에 1주 이상 걸렸던 workflow였는데, ProteinMPNN은 27개 backbone에서 76개 sequence를 빠르게 생성했습니다. 이 중 13 designs가 expected molecular weight 약 1 MDa assembly로 eluted했고, 하나의 crystal structure는 design model과 1.2 Å Cα RMSD over two subunits로 가까웠습니다.
이 결과는 ProteinMPNN의 실용적 가치를 잘 보여줍니다. 속도가 빠르다는 것은 단순히 편리하다는 뜻이 아닙니다. 여러 sequence를 많이 뽑고, score와 structure prediction으로 rank하고, 실험 후보를 고르는 pipeline이 가능해진다는 뜻입니다.

결과 5: SH3 binder motif scaffold rescue

[Figure 4]
마지막으로 논문은 functional design 사례를 보여줍니다. Grb2 SH3 domain이 인식하는 polyproline II helix motif를 scaffold하는 문제입니다. Rosetta remodel로 PPPRPPK motif를 scaffold하는 backbone을 만들고 Rosetta sequence design을 했지만, original designs는 Grb2 binding을 보이지 않았습니다.
ProteinMPNN은 core SH3-binding motif sequence를 고정한 채 같은 backbone의 나머지 sequence를 redesign했습니다. 그 결과 BLI에서 Grb2 SH3 domain에 강한 binding signal이 관찰되었습니다. Binding-disrupting point mutation을 넣으면 signal이 사라졌습니다. 따라서 관찰된 binding이 단순한 nonspecific interaction이 아니라, 설계된 motif/interface에 의존한다는 점을 확인한 셈입니다.
다만 이 결과는 조심해서 읽어야 합니다. Supplement를 보면, 한 original Rosetta design에서 16개 ProteinMPNN sequence를 만들고, AF2 prediction 80개를 돌린 뒤 average pLDDT로 3개 sequence를 골랐으며, 그중 1개가 작동했습니다. 추가로 4개 old designs에서 64개 ProteinMPNN designs를 만들고 AF2로 8개를 골랐지만 yeast display에서는 binding signal이 없었습니다.
이 caveat가 중요합니다. ProteinMPNN은 fixed motif scaffold의 sequence realization을 크게 개선할 수 있지만, ProteinMPNN과 AF2 pLDDT만으로 binding success가 보장되지는 않습니다. Binder design에서는 interface geometry, target context, specificity, assay 조건이 따로 문제로 남습니다.

한계점

ProteinMPNN은 backbone generator가 아닙니다. 주어진 backbone을 sequence로 구현하는 모델입니다. 따라서 upstream backbone quality에 크게 의존합니다. Backbone 자체가 물리적으로 무리하거나, 원하는 function을 만들기에 부적절하다면 ProteinMPNN이 좋은 sequence를 제안해도 성공하기 어렵습니다.
또 하나의 한계는 평가 지표입니다. Native sequence recovery, ProteinMPNN log probability, AlphaFold recapitulation은 모두 useful proxy지만 wet-lab success와 같지 않습니다. 특히 binder나 enzyme design에서는 foldability만으로는 부족합니다. Target binding, specificity, activity, expression, solubility, developability가 모두 별도 문제입니다.
ProteinMPNN은 ligand나 metal 같은 non-protein atomic context를 직접 보지 못한다는 한계도 있습니다. Small-molecule binder, enzyme active site, protein-DNA interface처럼 residue identity가 ligand/base/metal context에 의해 강하게 결정되는 문제에서는 backbone-only inverse folding이 충분하지 않을 수 있습니다. 이후 LigandMPNN이 나온 이유도 여기에 있습니다. LigandMPNN은 ProteinMPNN의 graph에 ligand, nucleotide, metal, fixed sidechain atom context를 추가해 context-aware sequence design을 수행합니다.
마지막으로 antibody/VHH 설계와도 구분해야 합니다. ProteinMPNN은 general backbone-conditioned sequence design 모델입니다. Antibody CDR loop, paired heavy/light chain context, framework compatibility, developability constraint는 별도의 modality-specific 문제가 됩니다. 따라서 ProteinMPNN을 antibody/VHH binder design의 완전한 해법처럼 읽으면 안 됩니다.

평가

ProteinMPNN은 화려한 생성 모델은 아니지만, 현대 protein design pipeline에서 매우 중요한 위치를 차지합니다. Backbone generation이 구조적 search space를 열어준다면, ProteinMPNN은 그 구조를 실제 sequence로 구현하는 단계입니다. 이 단계가 없으면 generated backbone은 실험 가능한 molecule이 되기 어렵습니다.
개인적으로 이 논문의 가장 중요한 메시지는 “좋은 backbone을 만드는 것”과 “그 backbone으로 접힐 sequence를 찾는 것”이 별개의 문제라는 점을 선명하게 보여준 데 있다고 봅니다. RFDiffusion 리뷰에서도 보았듯이, backbone generator의 성능은 ProteinMPNN sequence design과 AF2/ESMFold filtering을 포함한 pipeline 안에서 평가되는 경우가 많습니다. ProteinMPNN은 그 pipeline의 조용하지만 핵심적인 workhorse입니다.
동시에 ProteinMPNN을 성공 보증 장치처럼 쓰면 안 됩니다. 특히 binder design에서는 sequence realization이 성공했다고 해서 binding이나 function이 보장되지 않습니다. SH3 binder supplement는 이 점을 솔직하게 보여줍니다. ProteinMPNN은 실패한 설계를 rescue할 수 있지만, 어떤 후보가 실제로 작동할지는 여전히 filtering과 wet-lab validation이 결정합니다.
그래서 ProteinMPNN은 “단백질을 생성하는 모델”이라기보다 “생성된 구조를 실험 가능한 sequence 후보로 바꾸는 모델”로 보는 편이 정확합니다. RFdiffusion, BindCraft, LigandMPNN, AlphaProteo 같은 후속 흐름을 이해하려면 이 위치를 먼저 잡아두는 것이 좋습니다. 구조를 만드는 AI와 실제 protein molecule을 만드는 pipeline 사이에는 sequence design이라는 좁지만 중요한 다리가 있고, ProteinMPNN은 그 다리를 실용적인 수준으로 만든 논문입니다.

참고

ProteinMPNN 논문은 아래 링크에서 확인하실 수 있습니다.
https://doi.org/10.1126/science.add2187
Code
https://github.com/dauparas/ProteinMPNN