<p align="center">
<a href="https://www.nature.com/articles/s42256-025-01082-y"><img src="https://img.shields.io/badge/Article-%40NMI-0096BB"/></a>
<a href="https://huggingface.co/spaces/HUBioDataLab/DrugGEN"><img src="https://img.shields.io/badge/model-HuggingFace-yellow?labelColor=gray&color=yellow"/></a>
<a href="http://www.gnu.org/licenses/"><img src="https://img.shields.io/badge/License-GPLv3-blue.svg"/></a>
</p>
게재된 논문 (2025.10.15)
논문을 여기서 확인하세요: NMI journal article link
전체 텍스트 온라인 읽기 버전: link
<details open>
<summary><h2>초록 (Abstract)</h2></summary>
새로운 약물 후보 분자를 발견하는 것은 약물 개발의 근본적인 단계입니다. 생성적 딥러닝 모델은 학습된 확률 분포로부터 새로운 분자 구조를 샘플링할 수 있지만, 실제로 약물 발견에 활용되기 위해서는 특정 표적 분자에 맞게 설계된 화합물을 생성하는 것이 중요합니다. 본 논문에서는 선택된 단백질과 상호작용하는 약물 후보 분자의 신규 설계를 위한 엔드투엔드(end-to-end) 생성 시스템인 DrugGEN을 소개합니다. 제안된 방법은 분자를 그래프로 표현하고, 그래프 트랜스포머 레이어(graph transformer layers)를 포함하는 생성적 적대 신경망(Generative Adversarial Network, GAN)을 사용하여 처리합니다. 약물 유사 화합물 및 표적 특이적 생체 활성 분자의 대규모 데이터셋으로 훈련된 DrugGEN은 여러 암종에서 중요한 키나아제인 AKT1에 대한 후보 저해제를 설계했습니다. 도킹(Docking) 및 분자 동역학 시뮬레이션(molecular dynamics simulations) 결과, 생성된 화합물들이 AKT1에 효과적으로 결합함을 시사하며, 어텐션 맵(attention maps)은 모델의 추론 과정에 대한 통찰력을 제공합니다. 나아가, 선택된 신규 분자들은 합성되었으며, 시험관 내 효소 분석(in vitro enzymatic assays) 환경에서 낮은 마이크로몰 농도에서 AKT1을 저해하는 것으로 나타났습니다.
</details>
이 결과들은 DrugGEN이 표적 특이적 분자(target-specific molecules)를 설계하는 데 잠재력이 있음을 보여줍니다. 오픈 액세스 DrugGEN 코드베이스를 사용하면, 알려진 생물활성 분자(bioactive molecules) 데이터셋이 제공되는 경우 연구원들은 다른 약물화 가능한 단백질(druggable proteins)을 위해 모델을 재훈련할 수 있습니다.
</details>
<!--아래 논문에서 더 자세한 내용을 확인하세요-->
<p>
[**DrugGEN: 그래프 생성 심층 적대 네트워크를 이용한 표적 중심 신규 약물 후보 분자 설계 (Target Centric De Novo Design of Drug Candidate Molecules with Graph Generative Deep Adversarial Networks)**](link here),
[Atabey Ünlü](https://tr.linkedin.com/in/atabeyunlu), [Elif Çevrim](https://www.linkedin.com/in/elifcevrim/?locale=en_US), [Ahmet Sarıgün](https://asarigun.github.io/), [Heval Ataş](https://www.linkedin.com/in/heval-atas/), [Altay Koyaş](https://www.linkedin.com/in/altay-koya%C5%9F-8a6118a1/?originalSubdomain=tr), [Hayriye Çelikbilek](https://www.linkedin.com/in/hayriye-celikbilek/?originalSubdomain=tr), [Deniz Cansen Kahraman](https://www.linkedin.com/in/deniz-cansen-kahraman-6153894b/?originalSubdomain=tr), [Abdurrahman Olğaç](https://www.linkedin.com/in/aolgac/?originalSubdomain=tr), [Ahmet S. Rifaioğlu](https://saezlab.org/person/ahmet-sureyya-rifaioglu/), [Tunca Doğan](https://yunus.hacettepe.edu.tr/~tuncadogan/)
*Arxiv, 2020*</p>
<!--DRUGGEN 모델의 애니메이션 GIF 버전 (Figure 1)을 삽입하세요-->
<p float="center">
<img src="https://raw.githubusercontent.com/HUBioDataLab/DrugGEN/HEAD/assets/DrugGEN_Figure.png" width="100%" />
</p>
그림 1. 생성기(generator)와 판별기(discriminator) 네트워크 모두에 강력한 그래프 트랜스포머 인코더 모듈을 갖춘 DrugGEN 모델의 아키텍처 개략도. 생성기 모듈은 주어진 입력을 새로운 분자 표현으로 변환합니다. 판별기는 생성된 de novo 분자를 주어진 표적 단백질의 알려진 억제제와 비교하여, 해당 분자가 "실제(real)" 및 "가짜(fake)" 분자 클래스에 속할 확률을 점수화합니다 (약어: MLP: 다층 퍼셉트론(multi-layered perceptron), Norm: 정규화(normalisation), Concat: 연결(concatenation), MatMul: 행렬 곱셈(matrix multiplication), ElementMul: 요소별 곱셈(element-wise multiplication), Mol. adj: 분자 인접 텐서(molecule adjacency tensor), Mol. Anno: 분자 주석 행렬(molecule annotation matrix), Upd: 업데이트됨(updated)).
<details open>
<summary><h2 style="font-size:1.5em;">트랜스포머 모듈 (Transformer Module)</h2></summary>
임의의 분자 z가 주어졌을 때, 생성기 G (아래 참조)는 가상의 분자에 대한 주석 및 인접 행렬을 생성합니다. G는 다층 퍼셉트론(MLP)을 통과시키면서 입력을 처리합니다. 이후 입력은 그래프 트랜스포머 인코더 모듈로 공급됩니다. 그래프 트랜스포머 설정에서, Q, K, 그리고 V는 분자의 주석 행렬을 나타내는 변수입니다. 어텐션 메커니즘에서 최종 결과물이 생성된 후, 주석 및 인접 행렬 모두 레이어 정규화(layer normalization)를 거쳐 초기 행렬과 합산되어 잔차 연결(residual connection)을 만듭니다. 이 행렬들은 별도의 피드포워드 계층(feedforward layers)으로 공급되며, 최종적으로 실제 분자들과 함께 판별기 네트워크 D에 전달됩니다.
</details>
<!-- |------------------------------------------------------------------------------------------------------------|
<!-- |
 |
-->
<img src="https://raw.githubusercontent.com/HUBioDataLab/DrugGEN/HEAD/assets/druggen_transformer_module.gif" width="60%" height="60%"/>
</details>
<details open>
<summary><h2>모델 변형 (Model Variations)</h2></summary>
- DrugGEN은 기본 모델입니다. 생성기(generator)의 입력으로는 실제 분자 데이터셋인 ChEMBL이 사용되며(학습 과정 용이화), 판별기(discriminator)는 생성된 분자를 주어진 표적 단백질의 실제 저해제와 비교합니다.
- DrugGEN-NoTarget은 DrugGEN의 비표적 특이 버전입니다. 이 모델은 ChEMBL 학습 데이터셋으로부터 화학적 속성 학습에만 집중합니다.
</details>
<details open>
<summary><h2>파일 및 폴더 (Files & Folders)</h2></summary>
The DrugGEN 저장소는 다음과 같이 구성되어 있습니다:
data/
- 모델 학습을 위한 원시 데이터셋 파일과 처리된 그래프 데이터를 포함합니다.
encoders/ - 분자 표현을 위한 인코더 파일을 포함합니다.
decoders/ - 분자 표현을 위한 디코더 파일을 포함합니다.
- 원시 데이터셋 파일 형식은 SMILES 문자열만 포함하는 텍스트 파일이어야 합니다.
src/
DrugGEN 프레임워크의 핵심 구현:
data/ - 데이터 처리 유틸리티
dataset.py - 데이터셋 생성 및 로딩을 담당합니다.
utils.py - 데이터 처리 보조 함수입니다.
model/ - 모델 아키텍처 구성 요소
models.py - Generator와 Discriminator 네트워크 구현체입니다.
layers.py - 트랜스포머 인코더 구현체를 포함합니다.
loss.py - 모델 학습을 위한 손실 함수(Loss functions)입니다.
util/ - 유틸리티 함수
utils.py - 성능 지표 및 보조 함수입니다.
smiles_cor.py - SMILES 처리 유틸리티입니다.
assets/
- 문서에 사용되는 그래픽 및 그림 자료입니다.
- 모델 아키텍처 다이어그램과 시각화 리소스를 포함합니다.
- 생성된 분자의 이미지와 모델 애니메이션이 포함됩니다.
results/
- 평가 결과 및 생성된 분자 저장소
generated_molecules/ - 모델이 생성한 분자를 저장하는 공간
docking/ - 분자 도킹(molecular docking) 분석 결과
evaluate.py - 모델 성능 평가 스크립트
experiments/
- 실험 아티팩트를 저장하는 디렉토리
logs/ - 모델 훈련 로그 및 성능 지표
models/ - 저장된 모델 체크포인트 및 가중치(weights)
samples/ - 훈련 중 생성된 분자 샘플
inference/ - 추론 모드에서 생성된 분자
results/ - 실험 결과 및 분석 자료
스크립트:
train.py - DrugGEN 모델 훈련을 위한 메인 스크립트
inference.py - 훈련된 모델을 사용하여 분자를 생성하는 스크립트
setup.sh - 필수 리소스를 다운로드하고 설정하는 스크립트
environment.yml - Conda 환경 사양(specification)
<details open>
<summary><h2>데이터셋 (Datasets)</h2></summary>
DrugGEN 모델은 훈련을 위해 두 가지 유형의 데이터, 즉 일반 화합물 데이터와 표적 특이적 생체 활성 데이터를 필요로 합니다. 두 데이터셋 모두 고품질 훈련을 보장하기 위해 신중하게 큐레이션되었습니다.
화합물 데이터 (Compound Data)
일반 화합물 데이터셋은 모델에게 유효한 분자 구조와 약물 유사 특성(drug-like properties)에 대한 지식을 제공합니다:
- 출처: ChEMBL v29 화합물 데이터셋
- 크기: 1,588,865개의 안정적인 유기 분자
- 구성: 최대 45개 원자를 가진 분자
- 원자 유형: C, O, N, F, Ca, K, Br, B, S, P, Cl, As
- 목적: GAN 모듈에게 유효한 화학 공간(chemical space)과 분자 구조에 대해 학습시킵니다.
생체 활성 데이터 (Bioactivity Data)
표적 특이적 데이터셋은 모델이 선택된 단백질 표적과 상호작용하는 분자의 특징을 학습할 수 있도록 합니다:
⚠️ [IMG:N]
데이터 처리 (Data Processing)
두 데이터셋 모두 SMILES 문자열을 모델에 적합한 그래프 표현으로 변환하기 위해 광범위한 전처리 과정을 거쳤습니다. 여기에는 다음이 포함됩니다:
- 분자 그래프로의 변환
- 특징 추출 및 정규화
- 원자 및 결합 유형 인코딩
- 크기 표준화
데이터셋 구성 및 전처리 방법론에 대한 자세한 내용은 저희 논문을 참고해 주십시오.
</details>
<details open>
<summary><h2>시작하기 (Getting Started)</h2></summary>
시스템 요구 사항 (System Requirements)
- 운영 체제(Operating System): Ubuntu 20.04 또는 호환되는 Linux 배포판
- Python: 버전 3.9 이상
- 하드웨어(Hardware):
- CPU: CPU 전용 작동 지원
- GPU: 더 빠른 학습 및 추론을 위해 권장됨 (CUDA 호환)
- RAM: 최소 8GB, 대규모 데이터셋의 경우 16GB 이상 권장
설치 (Installation)
- 저장소 복제(Clone the repository):
git clone https://github.com/HUBioDataLab/DrugGEN.git
cd DrugGEN
2. **환경 설정 및 활성화(Set up and activate the environment)**:
```bash
conda env create -f environment.yml
conda activate druggen
- 설정 스크립트 실행(Run the setup script):
bash setup.sh
이 스크립트는 다음 작업을 수행합니다:
- Google Drive 저장소에서 필요한 모든 리소스를 다운로드합니다.
- 존재하지 않는 경우 필수 디렉토리를 생성합니다.
- 다운로드된 파일을 적절한 위치에 정리합니다:
- 데이터셋 파일 및 SMILES 파일 → `data/`
- 인코더/디코더 파일 → `data/encoders/` 및 `data/decoders/`
- 모델 가중치(Model weights) → `experiments/models/`
- SMILES 수정 파일 → `data/`
이제 분자 생성이나 모델 학습을 위해 DrugGEN 사용 준비가 완료되었습니다. 구체적인 사용 지침은 다음 섹션을 참조하십시오.
</details>
<details open>
<summary><h2>학습(Training)</h2></summary>
> **참고**: 학습 또는 추론을 처음 실행할 경우, 시스템이 데이터셋 파일을 생성하고 처리하는 데 시간이 예상보다 오래 걸릴 수 있습니다. 이후 실행은 캐시된 처리 데이터를 사용하므로 더 빠릅니다.
다음 명령어를 사용하여 DrugGEN 모델의 다양한 변형(variants)을 학습할 수 있습니다. 목표 단백질 또는 사용 사례에 맞는 적절한 예제를 선택하십시오:
<table >
<tr>
<td>
<details open>
<summary><b>일반 예제(Generic Example)</b></summary>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28