Drug/Computer-Aided Drug Discovery

fragment 기반 약물 가상탐색

Novelism 2022. 2. 3. 23:42

 

이번 글에선 제가 사용하고 있는 fragment 기반 혹은 substructure 기반 약물 가상탐색에 대해 이야기하겠습니다. 

 

최근 몇 년 동안, docking을 이용한 대규모 가상 스크리닝 (virtual-highthroughput screening, VHTS) 연구들이 상위 IF 저널인 nature 저널 및 그 자매지에 출판되고 있습니다. 
Ultra-large library docking for discovering new chemotypes | Nature
An open-source drug discovery platform enables ultra-large virtual screens - PubMed (nih.gov)

A practical guide to large-scale docking | Nature Protocols

A virtual drug-screening approach to conquer huge chemical libraries (nature.com)
Artificial intelligence–enabled virtual screening of ultra-large chemical libraries with deep docking | Nature Protocols

 

10억 개의 분자를 docking 한다는 것은 그 숫자만으로도 상당한 임팩트가 있습니다. 

 실험적으로 스크리닝을 할 때는 10만 개 정도만 해도 많은 편이니까요. 그것의 1000배라면, 당연히 놀라운 것입니다. 

 10억 개를 도킹하는 것이 현실적으로 가능한가에 대해서, 가능할 뿐만 아니라, 충분히 경제적이고, 좋은 약물 후보를 발견하였다는 것은 고무적인 일입니다. 

제가 해본 바로는, qvina02로 1억 원 정도의 장비 (1024 스레드)로 docking을 최소 옵션으로 돌리면, 하루에 1000만 개 정도의 분자에 대해 스크리닝이 가능합니다. 100일이면 10억 개 도킹이 가능하죠. 아니면 장비에 10억을 투자하면, 10일이면 됩니다. 단지 보여주기 위해서 가성비 안 따지고 진행하는 게 아니라, 충분히 합리적인 가성비로  할 수 있다는 의미입니다.

 하지만 굳이 10억 개의 분자에 대해서 전부 도킹할 필요가 있는가?라고 의문을 던져볼 수 있습니다. 할 순 있지만, 더 좋은 방법이 있다면 굳이 할 필요는 없습니다.

 물론 저는 제가 생각하기에 더 가성비가 좋다고 느끼는 방법을 사용하고 있습니다.

 Enamine REAL database를 보다 보면 자연스럽게 떠오르는 접근방법으로, fragment 기반 가상탐색입니다.

 데이터가 어떻게 만들어져 있는지, 데이터의 분포가 어떻게 되는지를 이해한다면 fragment 기반 가상탐색이 효율적이라는 것을 이해할 수 있습니다.

 Enamine REAL는, 서로 반응할 수 있는 building block 들을 조합해서 가상적으로 생성물들을 만들어둔 데이터베이스입니다. 같은 buidling block에서 유래한 분자들은 구조가 반 정도 비슷하기에, 당연히 서로 유사한 분자들이 많이 있습니다. 클러스터링을 해서 대표 분자에 대해서만 docking을 한 후, 좋은 클러스터를 찾고 그 클러스터에 속하는 분자들에 대해서 docking을 하면 전체에 대해 docking 하는 것보다 훨씬 효율적으로 탐색이 가능할 것 같다고 생각할 수 있습니다.

 기본적으로는 분자 구조가 유사하면 활성이 유사하니까요. 하지만 구조가 약간 다를 때 활성이 크게 달라질 수도 있습니다. 즉, 운이 나쁘게도 클러스터 대표가 잘못 걸리면 그 클러스터가 통째로 선택되지 못할 수도 있습니다. 그것을 감안해도 나쁘지 않은 방법입니다. 저도 처음에는 이렇게 하려 하였지만, 그 후에 정작 진행하다 보니 방향을 조금 바꿨습니다.

 ChEMBL에 있는 분자들을 보다 보면, 공통 구조를 가지는 분자들이 많은 것을 알 수 있습니다.

 약물과 결합하는 분자에는 결합에서 중요하게 작용하는 core 구조가 있습니다. 예를 들자면 kinase의 경우는 hinge binder가 있습니다. ATP binding site에 결합하다 보니, 아데닌과 유사하게 생겼거나, 유사한 결합을 하는 구조들이고, 유형은 10가지 정도가 있습니다. kinase의 경우 대해서 core 구조의 다양성이 떨어지다 보니, 다른 타깃에 비해서 특허 적용 범위가 좁고, 마쿠시 구조가 잘 인정되지 않는다고 합니다. 금속이온과 결합하는 효소의 경우, 금속이온과 강하게 결합하는 결합기를 가지고 있는 경우가 있습니다. 황을 포함한 티올기나, 카르복실기가 이에 해당됩니다. 공유결합을 하는 약물의 경우는 공유결합이 가능한 결합기가 있습니다. 이들을 war head라고도 부릅니다. 

 효율적인 약물 탐색을 위해 이런 정보들을 활용할 수 있습니다. core fragment를 먼저 찾고, 이 fragment를 포함하는 약물을 스크리닝 하는 것입니다. 
 core에 추가로 building block 이 붙어도, core의 결합 구조는 크게 달라지지 않을 것이라 가정할 수 있습니다. 

 즉, core의 결합구조를 안다면, core에 side chain이 붙은 구조를 도킹했을 때, core가 크게 틀어지지 않아야 한다고 생각할 수 있습니다. (물론 항상 그런 것은 아닙니다만, 그건 이미 설계가 다른 약물이라 해야 할 것입니다.) docking 시뮬레이션에서 포즈가 정확한지는 항상 미심쩍은 것인데, 적어도 core의 구조에 대한 확신이 있다면, 도킹 시뮬레이션 결과에 대해서 판단할 수 있는 근거를 마련할 수 있습니다. 

 

 fragment 기반 스크리닝은, 먼저 fragment를 찾고 (혹은 결합구조가 알려진 PDB에서 core에 해당하는 sub-structure만 가져올 수도 있고, family나 super family에 대한 결합구조에서 힌트를 얻을 수도 있습니다.) 이 fragment를 가지고 있는 분자를 빠르게 선별해낸 후, 선별된 분자를 도킹하는 방식으로 진행합니다. core 구조의 pose에 대한 신뢰도가 높다면, tether docking을 사용할 수도 있습니다. rdock이라는 도킹 툴이 이런 기능을 제공합니다. vina에서도 tether docking을 흉내 낼 방법은 있습니다. rdkit에서 3D 좌표를 생성할 때, core 구조를 reference로 사용하여 잔뜩 생성한 후, 생성된 구조들을 local optimize 하면 됩니다. 굳이 tether docking을 하지 않아도, 나온 pose에서 reference와 유사한 것만을 선택하는 방법도 있습니다. 

 

 이러면 10억 개 도킹하는 대신, fragment당 수십만 개 정도를 도킹하는 정도로 끝나고, docking pose에 대해서도 더 높은 신뢰도를 가질 수 있습니다. 이 정도 계산이면 도킹 탐색을 더 강화해도 하루면 충분합니다. 이것도 다 리사 수 여사님 덕분이죠. 

 

 fragment 접근방법과는 조금 다르지만, pharmacophore model과 docking을 결합할 수도 있습니다. 

docking 결과를 그대로 신뢰하기 어려우니, 포즈를 다시 분석해서 성능을 올리는 편이 좋은데, 그중 속도가 빠르면서도 성능도 높은 것이 pharmacophore model이죠. 

 아마도 docking과 pharmacophore model을 사용한 VHTS 가 조만간 네이처에 나오지 않을까요?

 

그리고, docking과 ML을 결합한 논문도 이미 나왔었죠. 

대량의 데이터셋에 대해서, 1%의 분자에 대해서만 미리 docking을 하고, 나머지는 머신으로 예측한 후, 분자를 선별하고 다시 소수의 분자에 대해서만 도킹 시뮬레이션을 하는 것입니다. ML로 분자의 활성 예측이 어렵다고 하는 것은, 미리 실험된 분자 데이터의 수량과 다양성이 부족하기 때문인데, 이렇게 100만~1000만개 단위로 도킹 결과를 가지고 있다면 데이터 부족 문제를 고민할 필요는 없을 것입니다. 물론 도킹 시뮬레이션이 항상 같은 결과가 나오지 않는다는 점이나, 정확도도 떨어진다는 문제는 있지만, 일단 정확도 문제는 어차피 정확한 activity를 예측하는 게 아니라 도킹 스코어를 예측하는 것이라 생각하면 될 것입니다. 

 사실 저도 한때 이 방향으로 진행을 하다가, 같이 하려던 사람이 다른 프로젝트에 참여하는 바람에 그냥 준비만 해놓고 접어버렸습니다. 그리고 생각해보니 1%에 대해서만 미리 도킹했으면, 그중에서 상위 분자들 찾아다가 analog search만 해도 별로 나쁘지 않겠다는 생각도 들었고요. 그게 더 쉽기도 하죠.