```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
```