2025 신약개발 경진대회 'Boost up AI 2025' 출품작입니다.
이 프로젝트는 화합물의 2D 구조 정보(SMILES)로부터 인체 내 주요 약물 대사 효소인 CYP3A4의 저해율을 예측하는 머신러닝 파이프라인을 포함합니다.
본 모델은 "더 풍부한 분자 표현형이 더 나은 예측을 만든다"(Domain Generalization) 는 가설 아래, 다음과 같은 전략을 채택했습니다.
-
다각적 피처 생성 (Molecular Representation):
- 분자의 국소적 구조(Morgan FP), 약물유사체 패턴(Avalon FP), 물리화학적 특성(RDKit Descriptors), 그리고 사전 훈련된 GNN의 잠재 표현(GIN Pre-trained)을 조합하여 분자를 다각적으로 표현했습니다.
- 피처 생성 과정에서
features.py를 참고하세요.
-
가벼운 모델링(Light Modeling) 및 실험 기반 최적화:
- 고차원 데이터에 강하고 성능이 입증된 CatBoost 모델 하나만을 사용해 다각적 피처의 생성이 기여한 성능 향상을 강조합니다.
- 실험을 통해 피처 선택이나 타겟 로그 변환과 같은 전처리 단계를 생략하고, 모델이 데이터의 복잡성을 직접 학습하도록 하는 것이 최적의 성능을 냄을 확인했습니다.
.
├── cache/ # 피처 캐시 폴더 (자동 생성)
├── data/ # 데이터 폴더
│ ├── train.csv
│ ├── test.csv
│ └── sample_submission.csv
├── models/ # 모델 가중치 폴더 (train.py 실행 시 자동 생성)
├── submission/ # 결과 파일 폴더 (predict.py 또는 main.py 실행 시 자동 생성)
├── features.py # 분자 피처 생성 스크립트
├── utils.py # 유틸리티 함수 (평가 지표, 스케일러)
├── train.py # 모델 학습 및 가중치 저장 스크립트
├── predict.py # 저장된 가중치로 추론 및 제출 파일 생성 스크립트
├── main.py # 학습과 추론을 한번에 실행하는 통합 스크립트
└── requirements.txt # 프로젝트 의존성 패키지 목록
본 프로젝트는 아래 환경에서 개발 및 테스트되었습니다.
- OS: Ubuntu 22.04 LTS
- Python: 3.10.18 (Mamba로 구성)
- GPU: NVIDIA GeForce GTX 5090
- CUDA Version: 12.8 nightly
이 가이드는 Mamba를 사용하여 프로젝트 실행 환경을 구성하는 방법을 안내합니다.
시작하기 전, Miniforge 또는 Mambaforge를 설치해주세요.
터미널에서 아래 명령어를 실행하여 boostup25라는 이름의 가상환경을 생성하고 활성화합니다.
# 'boostup25'라는 이름의 Python 3.10 환경 생성
mamba create -n boostup25 python=3.10 -y
# 생성된 환경 활성화
mamba activate boostup25requirements.txt 파일에 명시된 모든 의존성 패키지를 설치합니다. conda-forge 채널을 함께 사용하면 rdkit과 같이 복잡한 패키지도 안정적으로 설치할 수 있습니다.
mamba install --file requirements.txt -c conda-forge -y[선택] GPU 사용자 PyTorch/DGL 설치
GPU 가속을 사용하려면, 위 requirements.txt 설치 후 시스템의 CUDA 버전에 맞는 PyTorch와 DGL을 설치해야 합니다.
(참고: requirements.txt에는 CPU 버전의 PyTorch와 DGL이 포함되어 있어, 이 단계는 GPU 사용을 위한 재설치 과정입니다.)
예시 (CUDA 11.8 환경):
mamba install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia -y
mamba install dgl -c dglteam -y실행은 학습과 추론의 두 단계로 나뉩니다.
data 폴더에 train.csv, test.csv, sample_submission.csv 파일을 위치시킵니다.
(참고: data 폴더는 public 데이터이므로, 이 저장소를 clone하면 바로 사용할 수 있습니다.)
train.py는 K-Fold 교차 검증으로 모델을 학습시키고, 각 Fold의 모델 가중치를 models/ 폴더에 저장합니다.
최고 성능 옵션으로 학습 실행:
python train.py --use_gin_features --no_log_transformGPU를 사용하여 학습 속도 향상:
python train.py --use_gin_features --no_log_transform --use_gpupredict.py는 models/ 폴더에 저장된 가중치들을 불러와 테스트 데이터에 대한 예측을 수행하고, 최종 submission.csv 파일을 submission/ 폴더에 생성합니다.
저장된 모델로 추론 실행:
python predict.py --use_gin_features- 주의:
predict.py의 옵션(--use_gin_features등)은train.py실행 시 사용했던 옵션과 반드시 일치해야 합니다.
본 연구에 사용된 데이터는 과학기술정보통신부의 후원으로 한국화학연구원, 한국생명공학연구원이 주최하고 한국화합물은행, 국가생명연구자원정보센터(KOBIC)가 주관한 '2025 신약개발 경진대회'를 통해 제공받았습니다. 대회 운영을 맡아주신 데이콘에 감사드립니다.
- Stavropoulou, E., et al. (2018). The Role of Cytochromes P450 in Infection. Frontiers in Immunology. https://doi.org/10.3389/fimmu.2018.00089
- Zhang, L., et al. (2021). Nanoparticulate Drug Delivery Strategies to Address Intestinal Cytochrome P450 CYP3A4 Metabolism towards Personalized Medicine. Pharmaceutics. https://doi.org/10.3390/pharmaceutics13081261
- Notwell, J. H., & Wood, M. W. (2023). ADMET property prediction through combinations of molecular fingerprints. arXiv. https://doi.org/10.48550/arXiv.2310.00174
- Fabian, B., et al. (2020). Molecular representation learning with language models and domain-relevant auxiliary tasks. arXiv. https://doi.org/10.48550/arXiv.2011.13230
- Hu, W., et al. (2020). STRATEGIES FOR PRE-TRAINING GRAPH NEURAL NETWORKS. ICLR 2020. https://doi.org/10.48550/arXiv.1905.12265
- Bento, A. P. G., et al. (2020). An open source chemical structure curation pipeline using RDKit. Journal of Cheminformatics. https://doi.org/10.1186/s13321-020-00456-1
- Prokhorenkova, L., et al. (2018). CatBoost: unbiased boosting with categorical features. NeurIPS 2018. https://doi.org/10.48550/arXiv.1706.09516
- Prusty, K. B., et al. (2022). SKCV: Stratified K-fold cross-validation on ML classifiers for predicting cervical cancer. Biomedical Nanotechnology. https://doi.org/10.3389/fnano.2022.972421
이 프로젝트는 Apache License 2.0을 따릅니다. 자세한 내용은 LICENSE 파일을 참고하십시오.