--- a +++ b/solutions/hw3/run_experiments.sh @@ -0,0 +1,62 @@ +#!/bin/bash + +# Base command +BASE_CMD="flexynesis --use_gpu --data_path ccle_vs_gdsc --variance_threshold 50 --features_top_percentile 20 --target_variables Erlotinib --early_stop_patience 10 --hpo_iter 20 --outdir output" +# Define options +MODELS=("DirectPred" "supervised_vae" "GNN") +DATA_TYPES=("mutation" "mutation,rna" "mutation,cnv") +FUSION_METHODS=("early" "intermediate") +GNN_CONV_TYPES=("GC" "SAGE") + +# Output log file +LOG_FILE="output/experiment_log.tsv" +echo -e "experiment_id\tmodel\tdata_types\tfusion\tgnn_conv" > "$LOG_FILE" + +# Experiment counter +experiment_counter=1 + +# Loop over models +for model in "${MODELS[@]}"; do + for data_type in "${DATA_TYPES[@]}"; do + if [[ "$model" == "GNN" ]]; then + # GNN only supports early fusion, but we vary the GNN convolution type + for gnn_type in "${GNN_CONV_TYPES[@]}"; do + prefix="experiment${experiment_counter}" + stats_file="output/${prefix}.stats.csv" + + if [[ -f "$stats_file" ]]; then + echo "Skipping $prefix as stats.csv already exists." + else + echo "Running experiment $experiment_counter with $model, $data_type, early, $gnn_type" + $BASE_CMD --data_types "$data_type" --fusion early --model_class "$model" --gnn_conv_type "$gnn_type" --prefix "$prefix" + echo -e "$prefix\t$model\t$data_type\tearly\t$gnn_type" >> "$LOG_FILE" + fi + ((experiment_counter++)) + done + else + # Skip intermediate fusion for single data type + if [[ "$data_type" == *","* ]]; then + fusion_methods=("early" "intermediate") + else + fusion_methods=("early") + fi + + for fusion in "${fusion_methods[@]}"; do + prefix="experiment${experiment_counter}" + stats_file="output/${prefix}.stats.csv" + + if [[ -f "$stats_file" ]]; then + echo "Skipping $prefix as stats.csv already exists." + else + echo "Running experiment $experiment_counter with $model, $data_type, $fusion" + $BASE_CMD --data_types "$data_type" --fusion "$fusion" --model_class "$model" --prefix "$prefix" + echo -e "$prefix\t$model\t$data_type\t$fusion\tNA" >> "$LOG_FILE" + fi + ((experiment_counter++)) + done + fi + done +done + +echo "All experiments completed. Log saved to $LOG_FILE." +