```mermaid flowchart TD %% Data Sources subgraph DataSources["데이터 소스"] SMILES["CCLE-GDSC-SMILES.csv"] GEP["GEP_Wilcoxon_Test_Analysis_Log10_P_value_C2_KEGG_MEDICUS.csv"] CNV["CNV_Cardinality_Analysis_of_Variance_C2_KEGG_MEDICUS.csv"] MUT["MUT_Cardinality_Analysis_of_Variance_C2_KEGG_MEDICUS.csv"] DrugSensitivity["MixedSet_train_Fold0.csv"] end %% Data Processing subgraph DataProcessing["데이터 처리"] Dataset["TripleOmics_Drug_dataset"] Collate["custom_collate_fn"] DataLoader["DataLoader"] end %% Model Components subgraph ModelComponents["모델 컴포넌트"] DrugEmbedding["DrugEmbeddingModel"] MoleculeAttention["분자 어텐션 레이어"] GeneAttention["유전자 어텐션 레이어"] CNVAttention["CNV 어텐션 레이어"] MUTAttention["MUT 어텐션 레이어"] DenseLayers["Dense Layers"] end %% Main Model subgraph MainModel["메인 모델 (PASO_GEP_CNV_MUT)"] Forward["forward 메소드"] Loss["loss 메소드"] end %% Prediction & Output subgraph PredictionOutput["예측 및 출력"] RawPrediction["Raw 예측값 (0-1 범위)"] LogIC50["Log IC50 값 변환"] AttentionWeights["어텐션 가중치"] end %% API Layer subgraph APILayer["API 레이어"] FlaskAPI["Flask API (app.py)"] PredictEndpoint["'/predict' 엔드포인트"] end %% Web Application WebApp["웹 애플리케이션"] %% Data Flow Connections SMILES --> Dataset GEP --> Dataset CNV --> Dataset MUT --> Dataset DrugSensitivity --> Dataset Dataset --> DataLoader DataLoader --> Collate Collate --> Forward Forward --> DrugEmbedding Forward --> MoleculeAttention Forward --> GeneAttention Forward --> CNVAttention Forward --> MUTAttention Forward --> DenseLayers DenseLayers --> RawPrediction RawPrediction --> LogIC50 MoleculeAttention & GeneAttention & CNVAttention & MUTAttention --> AttentionWeights %% Log IC50 계산 중요 부분 강조 subgraph LogIC50Calculation["Log IC50 계산 (중요)"] direction LR RawPred["Raw 예측값 (y)"] --> Formula["y * (ic50_max - ic50_min) + ic50_min"] Formula --> FinalLogIC50["-4.924367961788337"] MinMax["ic50_max=100, ic50_min=0"] --> Formula end LogIC50 --> LogIC50Calculation LogIC50 & AttentionWeights --> PredictEndpoint PredictEndpoint --> WebApp %% 학습 흐름 subgraph TrainingFlow["학습 흐름"] Train["train.py"] Validation["검증"] ModelSave["모델 저장"] end DataLoader --> Train Train --> Validation Validation --> ModelSave ModelSave --> FlaskAPI ```