Physics and Informatics

Protein bioinformatics: 구조-기능-진화와 머신 러닝

Novelism 2023. 2. 9. 00:41

저는 조금 다양한 분야를 연구한 것 같습니다. 

그중에서도 저에게 가장 흥미 있는 분야는 생물정보학이라고 생각합니다. 

 

오늘은 단백질 생물정보학과 머신러닝의 관계에 대해 이야기하겠습니다. 

저는 단백질 생물정보학에서 처음 머신러닝을 접하였습니다. 

 

머신러닝에서 중요한 주제 중 하나는 데이터의 분포와 매니폴드입니다.

 예를 들어 28*28 픽셀의 그림에서, 오직 흑과 백 두 가지 경우만 존재한다고 생각해 봅시다.

이때, 이 픽셀에 흰점과 검은 점을 조합할 수 있는 총경우의 수는 2^(28*28) 가지입니다.

이 그림 파일의 각 가능한 조합의 경우를 28*28 bit로 표현할 수 있을 것입니다. 

 그런데, 대부분의 조합들은 아마도 우리가 신호 없는 모니터에서 보는 흑백이 랜덤 하게 뿌려진 노이즈에 해당할 것입니다.

 질서를 이루고 있거나, 어떤 유의미한 정보 같은 것을 담은 조합의 수는, 랜덤에 비해 극도로 적습니다.

 극단적인 경우로, 모든 픽셀이 0 이거나 모든 픽셀이 1인 경우는 모든 조합 중에 단 한 가지일 뿐입니다.

 이 그림들이 어떤 숫자 (예를 들어 1이나 7 같은) 일 경우의 수도, 전체 조합 공간에 비하면 극단적으로 좁습니다. 

이런 유의미한 영역들이 공간적으로 가까이에 오도록 공간변환된 것이 매니폴드입니다. 

 

단백질은 아미노산 서열로 이루어져 있습니다. 아미노산들이 팹티드 결합으로 붙어있는 사슬이 3차원 공간상에서 접혀있는 형태가 단백질의 고유 구조 (native structure)입니다. 

그리고 단백질은 부분적으로 2차 구조라고 하는 일종의 패턴들을 가지고 있습니다. 

(3D 공간상에서의 사슬이 접힌 구조는 3차 구조라고 부릅니다.)

주기적으로 나선 같은 모양을 가지는 helix(나선구조, H), 직선에 가깝게 뻗어있는 strand (E), 그리고 이 둘에 비해 정형화되지 않은 구조의 coil (혹은 loop, C)  이 있습니다. 

 사실 세부적으로 가면 더 다양한 구조들이 있습니다만...

 

 이 구조들은 단백질의 지역(local) 구조들이라고 생각할 수 있습니다.

아마도 지역적인(9~15 - mer) 아미노산 서열 조합이, 이런 구조를 결정한다고 추측할 수 있을 것입니다.

 

 만약 하나의 단백질 사슬이 문장이라면, 이런 local 서열조합들은 단어라고 생각할 수 있습니다.

 각 단어들이 의미 (고유의 구조)를 가지고, 이것들의 조합이 문장 (단백질 3차 구조)를 만든다고 할 수 있습니다.

 단백질 2차 구조 예측은 조금 오래된 주제이고, 2000년 근방에 인공신경망을 사용한 예측 모델이 등장하였습니다.

 그중 하나가 PSIpred인데, 불과 몇 년 전까지 state of the arts로 인정받고 있었습니다. 

 

저도 2차 구조 예측을 예제로 머신러닝을 공부하였습니다. 

 머신러닝도 일종의 통계 분석입니다. 기본 개념을 생각해 보면, 특정한 길이의 (예를 들어 9-mer) 단백질 서열의 조합들에 대해서, 그 정중앙의 residue의 이차구조를 통계적으로 분석한다고 생각해 봅시다. 

PDB에서 단백질들을 전부 가져다가, 각 residue의 이차구조를 할당합니다. (보통 DSSP를 사용합니다.)

그리고 단백질 서열을 한 칸씩 이동하며 9-mer의 조각들로 쪼갭니다.

 12345, 23456, 34567, 45678.... 같은 식으로요. 

pdb의 단백질 체인의 길이가 평균적으로 300이라고 가정하면, pdb 구조 하나당, 거의 300개에 가까운 fragment를 얻을 수 있을 것입니다. 

 그러면 동일한 아미노산 조합들을 가지는 residue들을 모아서, 이것들의 2차 구조가 H, E, C인 비율을 계산합니다. 러프하게 생각하면, 이 비율이 그 fragment의 2차 구조의 확률이라 할 수 있을 것입니다. 

 통계적으로 유의미하려면, fragment 하나당 데이터가 1개 정도밖에 없으면 안 되고 어느 정도 수가 있어야겠죠.  

 그런데... 데이터가 충분할까요? 아미노산은 20종이니, 9-mer의 서열 조합은 20^9 ~ 1000000000입니다. 

 

pdb 구조는 대략 10만 개 단위이고, 하나당 300개 fragment가 나온다면 , 총데이터의 수는 ~30000000 정도입니다. 

가능한 조합에 비해 데이터의 수가 부족합니다. 이러면 데이터로 예측을 할 수 없는 게 아닌가?라는 의문이 듭니다. 

 

 하지만 위에서 데이터의 확률분포에 대해서 이야기했습니다. 전체 가능한 아미노산 조합들 중 상당수는, 현실의 단백질에서 나타나지 않고, 특정 fragment들만이 많이 나타날 것이라 생각할 수 있습니다.

 

 자연어로 비유를 해보면, apple 은 사전에 있지만, 문자를 임의로 5개 선택한 aasdf 나 awpew, rjoff, 같은 것들 중 의미 있는 단어는 극소수입니다.

단백질의 fragment도 어떠한 단어 같은 것이 존재할 가능성이 있다고 생각할 수 있습니다. 뭐 사실 데이터를 분석하면 확인해 볼 수도 있긴 하겠죠. 

 그래서 가능한 조합의 총 수에 비해서 데이터가 극단적으로 적더라도, 예측 모델은 성립합니다. 

 또한, 완전히 일치하는 것들은 많지 않겠지만, 서로 유사한 서열 조합은 많이 있을 것입니다. 

 그럼 유사한 서열은 유사한 구조를 가지는가?라는 질문을 던질 수 있습니다. 

 

 여기에서 단백질과 인간의 언어에는 차이가 있습니다.

 유사한 단백질 서열은 유사한 구조를 가집니다. 그런데, 인간의 언어에선 꼭 그렇진 않습니다. 가방과 나방과 다방은 다들 비슷하지만, 의미가 전혀 다릅니다. 

 그런데... 유사한 서열은 정말로 유사한 구조를 가질까요? 이것을 조금 더 심층적으로 생각해봐야 합니다. 

 서열 일부를 바꿔서 그 구조를 완전히 파괴해 버리는 것이 가능할 수도 있습니다. 

 실존하는 단백질 서열들은, 그냥 유사한 것만이 아닙니다. 유사한 서열은 서로 진화적인 친족관계에 있습니다.

 그 유사한 서열들은 서로 임의로 변화한 것이 아니라, 진화의 과정을 거치며 살아남은 것들입니다.

 진화를 돌연변이와 자연선택 두 가지로 생각하면, 임의의 서열 변화가 일어났을 때, 그 단백질이 생명체에서 제대로 기능한다면 살아남을 것이고, 그렇지 않다면 그런 변이는 도태될 것입니다. 그런데... 생명체에 있는 단백질은 다들 고유의 기능을 하는데, 그것들이 변이에 의해 구조가 크게 변한다면, 그것들이 기능을 하지 못할 것입니다. 즉, 변이가 일어난다 할지라도, 어느 정도 구조 유사성과 기능 유사성이 유지된 것들이 살아남을 가능성이 높습니다. 

 이렇듯 단백질에서 구조-기능-진화는 서로 밀접한 관련이 있습니다. 

 

 그래서 실제로 존재하는 서열들 중에서 유사성이 높은 것들은, 구조가 유사할 가능성이 높지만, 임의로 만든 유사성이 높은 두 개의 서열이 서로 구조가 유사할 것이라 장담할 순 없습니다. 

 여기까지 오면, 무엇을 말하고 싶은지 알 수 있을 것입니다.

 단백질을 디자인할 때, bioinformatics 적인 접근이 필요하다는 것입니다. 임의로 아미노산 서열을 만드는 것보다,  homology(친족들)에서 출현빈도가 높은 서열들을 택하여야 합니다. 

특히 서열 정렬을 해보면, 아미노산 서열이 거의 변하지 않는 residue도 있고, 비교적 활발하게 변하는 residue도 있습니다. 그리고 또 재미있는 것 중 하나는, correlated mutation (coevoluation, 공진화)입니다. 두 개의 residue가 서로 함께 변합니다. 이것이 구조적으로 두 residue 사이의 공간적인 거리와 연관이 높다는 것이 이미 잘 알려진 것입니다. 

 

 친족 서열들을 정렬하고, 각 residue마다 어떤 아미노산이 등장할 수 있는가에 대한 확률분포를 추론하는 것이, 단백질 디자인에서 매우 중요합니다. 그런데, 공진화처럼 두 개의 residue가 엮여 있는 것이 중요한 요소라면... 각 residue로, 특정 아미노산이 올 확률만을 보는 마지널라이즈 된 확률분포가 아니라, 조건부 확률 정보가 그대로 살아있어야 합니다.
 i-번째 아미노산 종류를 Ai라고 하면,

P(A1, A2, A3, A4....)와 P(Ai)가 있을 텐데, 후자는 이미 마지널라이즈 된 것입니다. 일반적인 통계분석을 한다면 주로 후자를 볼 것입니다. 이 과정을 거치면 공진화 같은 정보는 날아가겠죠.  P(Ai, Aj) 정도는 봐야 공진화를 파악할 수 있습니다. 아무튼 단백질을 디자인하기 위해선 전자를 바로 유추할 필요가 있습니다. 

이런 일을 가장 잘할 수 있는 방법이 머신러닝... 그중에서도 생성모델입니다. 

결론은 단백질 서열 디자인에 딥러닝이 필요하다는 것입니다. 단지, 디자인한 구조를 예측하기만을 위해서가 아니라요. 

 

 음... 그래도 단백질 디자인은 어려운 문제입니다. 예전부터 필요한 일이라 생각했지만, 너무 어려워서 손대기 겁나는데... 

 하지만, AI기반  저분자 약물 설계 같은 것은 이미 다들 어느 정도 잘하는 일이 돼버려서 차별성을 가지기 어렵습니다.

 결국 실패할지라도 남들이 쉽게 할 수 없는 것을 해야만 자신만의 차별성이 생길 것입니다. 

 

To be or not to be: that is the question

 

하... 언제라도 선택을 강요당할 뿐입니다.

 천천히 몰락하거나, 아니면 자신이 딪고 있는 발판을 박차 버리고 허공으로 뛰어들거나...