AutoDock Vina 변종 위주로 사용하다가 기능적으로 만족스럽지 않은 부분이 있어서 다른 도킹 프로그램을 찾아봤는데, 그중 무료로 사용할 수 있는 성능이 좋아 보이는 프로그램으로 rdock이 있습니다. rdock의 차별점이라 할만한 주요 기능은 tether docking, pharmacophore docking입니다. 논문은 다음 주소에 있습니다.
https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1003571
docking을 하다 보면 대충 분자가 단백질에 어떤 포즈로 들어와야 하는지 보이는 경우가 있습니다.
kinase protein의 hinge 영역처럼 특정 영역에 결합하는 분자에 몇 가지 패턴이 정해져 있는 경우도 있고,
단백질의 특정 residue와 결합이 알려진 fragment에 다른 부분을 추가로 붙이면서 결합력의 변화를 볼 수도 있습니다.
분자를 최적화할 때는 기본적으로 한 부분씩 치환을 합니다. 치환되는 부분을 제외하면 결합 포즈는 크게 달라지지 않을 것이라는 가정에서부터 출발합니다. 이에 대한 예외로 분자에서 2 부분을 각각 치환하면 결합력이 낮아지지만, 둘을 동시에 치환하면 오히려 결합력이 올라가는 사례도 있습니다. 이것은 아예 결합 포즈가 바뀌었기 때문으로 추정할 수 있습니다.
단백질 구조 예측에서 template based modeling을 할 때, 원자 간 결합 거리를 어느 정도 추정할 경우 restraint을 걸어주는 것처럼, rdock 사용하면 단백질과 약물 결합에서도 restraint를 사용할 수 있습니다. 그리고 특정 파마코 포어 인터렉션에 대해서 결합력에 가중치를 주는 것도 가능합니다.
rdock도 나온 지 오래되었는데, rdock의 개발 진행이 더 이상 진행되지 않아서 포크 버전인 rxdock을 사용하는 편이 좋습니다.
rxdock의 매뉴얼이나 웹 설명이 좀 보기 불편한 점이 있던데 옵션명이 조금 바뀐 것 이외엔 rdock과 거의 유사하니까 어느 쪽을 봐도 큰 문제는 없습니다.
기본 사용법 설명은 여기에 있습니다. rdock 홈페이지에 여러 예제에 대한 튜토리얼이 있습니다.
http://rdock.sourceforge.net/docking-in-3-steps/
AutoDock처럼 미리 단백질의 빈 공간에 대해서 그리드를 만들어서 에너지를 계산해두는 과정이 있습니다.
도킹 탐색할 공간은 유저가 직접 정할 수도 있고, reference ligand의 좌표로부터 적당한 거리로 만들 수도 있습니다.
rdock과 rxdock의 제일 큰 단점이라면, 병렬화를 잘 지원하지 않는다는 점입니다.
vina나 rdock이나 탐색 강도를 유저가 정할 수 있는데, vina 같은 경우는 탐색 강도를 올린 만큼 cpu core를 더 투입해서 병렬화할 수 있는 반면에, rdock은 탐색 강도는 올릴 수 있어도 core는 1개만 사용이 가능합니다.
그리고 rdock의 경우 입력 파일에 분자 구조를 여러 개를 넣어줄 수 있는데, 여러 구조를 넣어줄 경우 모든 구조에 대해서 순차적으로 도킹을 합니다. 여러 분자에 대한 스크리닝을 할 때 편리하긴 한데, 이때 병렬화를 하고 싶으면 입력 파일을 쪼개서 잡을 여러 개 실행하는 식으로 병렬화가 가능합니다.
pharmacophoric restraints 도킹에 대한 설명입니다.
http://rdock.sourceforge.net/pharmacophoric-restraints/
수소결합 donor, acceptor, cation, anion등에 대해 특정 좌표 근처에 오도록 restraint 에너지 텀을 사용합니다.
tethered scaffold docking 설명입니다.
https://www.rxdock.org/documentation/devel/html/user-guide/docking-strategies.html#tethered-scaffold-docking
이 부분만 봐서는 따라하기 좀 어려워 보이네요. reference 파일 하고 query 파일 하고 obabel을 사용해서 서로 정렬해서 MCS (maximum common subgraph) 찾고, 해당 원자와 좌표를 입력에 넣어주는 코드가 있는데, 매뉴얼 다운로드하면 그런 내용이 적혀있습니다.
tethered scaffold docking과 restraint docking의 차이는, restraint docking은 임의의 donor, acceptor, cation, anion 등... 에 대해서 에너지가 부가되지만, tethered docking은 특정 원자를 지정해서 restraint를 걸어준다는 차이가 있습니다.
이미 단백질에 결합포즈가 알려진 분자 (ref)가 있고, 그 분자에서 작용기 하나를 바꿔서 새로운 분자를 만들었고, 이 새로운 분자를 도킹할 때, ref와 일치하는 영역의 원자들에 대해서 좌표를 가져와서 그 좌표에서 벗어나면 페널티를 가하도록 하는 경우에 사용합니다.
informatics를 최대한 활용하는 방식이라 (논문에 나와있는 결과는) 일반 도킹할 경우보다 성능이 상당히 높습니다. 파마코 포어 모델과 docking을 결합해서 사용했다는 것이죠. 당연히 장단점이 있습니다. 일단 레퍼런스로 사용하는 분자를 잘 정해야 합니다. 하나의 포켓에 하나의 파마코 포어 모델만 가능한 것이 아니니까요. active일 수 있는 분자들에 대해서 레퍼런스 파마코 포어와 다르다는 이유로 배재할 가능성도 있습니다. 그리고 논문에서 보여주는 성능은, 이미 알려진 분자들에 대한 벤치마킹입니다. 이것은 단순히 과적합 문제를 이야기하는 것만은 아닙니다. 왜 데이터에 바이어스가 있는지 생각을 해봅시다. ChEMBL에서 알려진 분자는 스크리닝을 통해서 다양하게 탐색했다기보다는, 누군가가 디자인해서 만든 경우가 많습니다. 한 사람이나 그룹이 하나의 스케폴드를 가지고 수십 개의 분자를 디자인할 수도 있습니다. 그러다 보니 서로 유사한 분자들이 많이 포함되어있습니다. 어떤 단백질의 경우는 알려진 모든 분자가 같은 fragment를 가집니다. 그런데 과연 그 단백질에 대해서 그 fragment 만 가능한가 라고 질문하면 아닐 수도 있습니다. 공통 fragment를 가지는 분자를 탐색하면 비교적 결합 가능성이 높지만, 신규성이 부족할 수 있습니다. 신규성으로 치자면, tethered scaffold docking (fragment 공유할 때 사용) 보다는 pharmacopohre restrint docking이 좀 더 신규성이 높은 분자를 탐색할 수 있습니다.
informatics를 사용하는 것에 장단점이 있으니 내가 하려는 일에 적합한가 먼저 확인을 하고 사용해야 합니다.
'Drug > Computer-Aided Drug Discovery' 카테고리의 다른 글
단백질 구조 기반 약물 가상 탐색: 2. ACE 억제제 (0) | 2021.10.22 |
---|---|
단백질 구조 기반 약물 가상 탐색: 1. 서론 (0) | 2021.10.14 |
분자 SMARTS 문법 및 rdkit에서 SMARTS 탐색 (0) | 2021.09.23 |
분자 SMILES 문법 및 변환 (0) | 2021.09.23 |
단백질 구조예측과 약물 결합 예측 (0) | 2021.09.16 |