diff --git a/.gitattributes b/.gitattributes index dc19e0f3dd0930fe1703ae0b9e6fb227f40c3515..b1f8d2bc607ee6619c187c5b2921c42d5b13b7eb 100644 --- a/.gitattributes +++ b/.gitattributes @@ -50,3 +50,6 @@ /runs/TransformerBasedTMPrediction/Datasets/legacy/training/training_human_PCT_with_danio_no_therm.parquet filter=lfs diff=lfs merge=lfs -text /runs/TransformerBasedTMPrediction/Datasets/legacy/training/training_human_PCT_with_danio_only_human.csv filter=lfs diff=lfs merge=lfs -text /runs/TransformerBasedTMPrediction/Datasets/legacy/training/training_human_PCT_with_danio_only_human.parquet filter=lfs diff=lfs merge=lfs -text +/runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled.csv filter=lfs diff=lfs merge=lfs -text +/runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled.parquet filter=lfs diff=lfs merge=lfs -text +/runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled_10K_dif_growth.parquet filter=lfs diff=lfs merge=lfs -text diff --git a/runs/ResamplingOfTrainingData/training_human_PCT_features_with_danio_sampled.csv b/runs/ResamplingOfTrainingData/legacy/training_human_PCT_features_with_danio_sampled.csv similarity index 100% rename from runs/ResamplingOfTrainingData/training_human_PCT_features_with_danio_sampled.csv rename to runs/ResamplingOfTrainingData/legacy/training_human_PCT_features_with_danio_sampled.csv diff --git a/runs/ResamplingOfTrainingData/training_human_PCT_features_with_danio_sampled.parquet b/runs/ResamplingOfTrainingData/legacy/training_human_PCT_features_with_danio_sampled.parquet similarity index 100% rename from runs/ResamplingOfTrainingData/training_human_PCT_features_with_danio_sampled.parquet rename to runs/ResamplingOfTrainingData/legacy/training_human_PCT_features_with_danio_sampled.parquet diff --git a/runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled.csv b/runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled.csv similarity index 100% rename from runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled.csv rename to runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled.csv diff --git a/runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled.parquet b/runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled.parquet similarity index 100% rename from runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled.parquet rename to runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled.parquet diff --git a/runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled_10K_dif_growth.parquet b/runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled_10K_dif_growth.parquet similarity index 100% rename from runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled_10K_dif_growth.parquet rename to runs/ResamplingOfTrainingData/legacy/training_human_PCT_with_danio_sampled_10K_dif_growth.parquet diff --git a/runs/TransformerBasedTMPrediction/Datasets/legacy/base/README.md b/runs/TransformerBasedTMPrediction/Datasets/legacy/base/README.md index a3dfc501fba740090006e4fab6c08118a14eaf27..9dd2dd6664da66c51e21903586091b9e4548babd 100644 --- a/runs/TransformerBasedTMPrediction/Datasets/legacy/base/README.md +++ b/runs/TransformerBasedTMPrediction/Datasets/legacy/base/README.md @@ -29,6 +29,7 @@ The other file found in workflows/TransformerBasedTMPrediction/ is named tuning. ### Using the datafiles All datafiles that were used to train deepSTABp can be found in the /runs/TransformerBasedTMPrediction/Datasets folder. The folder base has the compelete dataset, the folder training, testing, and validation have the sampled datasets that emerged from the base dataset. The datasets are availabe in csv and parqut format. +The resampled training dataset can be found in /runs/ResamplingOfTrainingData. # ARCs diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_2e_d01.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_2e_d01.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_2e_d01.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_2e_d01.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/Full_dataset/full_dataset_difference.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/Full_dataset/full_dataset_difference.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/Full_dataset/full_dataset_difference.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/Full_dataset/full_dataset_difference.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/Full_dataset/full_dataset_metrics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/Full_dataset/full_dataset_metrics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/Full_dataset/full_dataset_metrics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/Full_dataset/full_dataset_metrics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/Full_dataset/full_dataset_pred_seqeuence.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/Full_dataset/full_dataset_pred_seqeuence.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/Full_dataset/full_dataset_pred_seqeuence.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/Full_dataset/full_dataset_pred_seqeuence.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/prostab_comparison/baseline_prostab_comparison.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/prostab_comparison/baseline_prostab_comparison.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/prostab_comparison/baseline_prostab_comparison.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/prostab_comparison/baseline_prostab_comparison.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/prostab_comparison/baseline_prostab_comparison_metrics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/prostab_comparison/baseline_prostab_comparison_metrics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/prostab_comparison/baseline_prostab_comparison_metrics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/prostab_comparison/baseline_prostab_comparison_metrics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/prostab_comparison/baseline_prostab_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/prostab_comparison/baseline_prostab_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Baseline/prostab_comparison/baseline_prostab_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Baseline/prostab_comparison/baseline_prostab_pred.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Meltome_human/Full_dataset/full_dataset_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Meltome_human/Full_dataset/full_dataset_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Meltome_human/Full_dataset/full_dataset_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Meltome_human/Full_dataset/full_dataset_pred.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Meltome_human/protstab_comparison/human_meltome_prostab_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Meltome_human/protstab_comparison/human_meltome_prostab_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Meltome_human/protstab_comparison/human_meltome_prostab_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Meltome_human/protstab_comparison/human_meltome_prostab_pred.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_difference.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_difference.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_difference.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_difference.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_metrics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_metrics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_metrics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_metrics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_1e_d01.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_1e_d01.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_1e_d01.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k_tuned_1e_d01.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_2.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_2.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_2.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_2.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_5.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_5.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_5.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_tuned_5.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_no_therm.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_no_therm.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_no_therm.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_no_therm.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_old_achri.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_old_achri.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_old_achri.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_old_achri.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human_new_arch.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human_new_arch.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human_new_arch.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_only_human_new_arch.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_sampled_new_arch.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_sampled_new_arch.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_sampled_new_arch.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_sampled_new_arch.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/only_non_training_proteins.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/only_non_training_proteins.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/only_non_training_proteins.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/only_non_training_proteins.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/test_pred_new_arch_train_sample_tuned_5.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/test_pred_new_arch_train_sample_tuned_5.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/test_pred_new_arch_train_sample_tuned_5.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/Full_dataset/test_pred_new_arch_train_sample_tuned_5.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_Notsampled_b25.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_Notsampled_b25.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_Notsampled_b25.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_Notsampled_b25.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b16_lrAuto.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b16_lrAuto.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b16_lrAuto.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b16_lrAuto.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b32.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b32.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b32.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_b32.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_onlyNormfstLayer.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_onlyNormfstLayer.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_onlyNormfstLayer.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10K_onlyNormfstLayer.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_1e_d01_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_2e_d01_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e1_01d.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e1_01d.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e1_01d.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e1_01d.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e2_01d.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e2_01d.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e2_01d.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e2_01d.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_1e_d01_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e1_01d.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e1_01d.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e1_01d.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e1_01d.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e2_01d.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e2_01d.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e2_01d.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e2_01d.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d02.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d02.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d02.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d02.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned_20.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned_20.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned_20.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_tuned_20.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison_metrics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison_metrics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison_metrics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_comparison_metrics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/Thermal_prox_coagg_human/ProTstab2_comparison/human_tpc_prostab_pred.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_dif_train_sample.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_dif_train_sample.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_dif_train_sample.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_dif_train_sample.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_metrics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_metrics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_metrics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_metrics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_train_sample_metrics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_train_sample_metrics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_full_train_sample_metrics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_full_train_sample_metrics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_prostab.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_prostab.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_prostab.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_prostab.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_prostab_dif.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_prostab_dif.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_prostab_dif.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_prostab_dif.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_prostab_mertics.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_prostab_mertics.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/growth/growth_pred_prostab_mertics.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/growth/growth_pred_prostab_mertics.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/light_attention/e30_prostab_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/light_attention/e30_prostab_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/light_attention/e30_prostab_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/light_attention/e30_prostab_pred.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/light_attention/prostab_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/light_attention/prostab_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/light_attention/prostab_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/light_attention/prostab_pred.csv diff --git a/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/new_archi/full_dataset_pred.csv b/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/new_archi/full_dataset_pred.csv similarity index 100% rename from runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/new_archi/full_dataset_pred.csv rename to runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/legacy/new_archi/full_dataset_pred.csv diff --git a/runs/growth_temperature/fig_rainbow_v3.svg b/runs/growth_temperature/fig_rainbow_v3.svg index 4c29323a87960660d8ce1a2983dadde07bd7bc34..3d36cc76c6b787e3fd393c78479a2f639c5397de 100644 --- a/runs/growth_temperature/fig_rainbow_v3.svg +++ b/runs/growth_temperature/fig_rainbow_v3.svg @@ -1 +1 @@ -<svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="1000" style="" viewBox="0 0 1000 1000"><rect x="0" y="0" width="1000" height="1000" style="fill: rgb(0, 0, 0); fill-opacity: 0;"/><defs id="defs-c3d04e"><g class="clips"><clipPath id="clipc3d04exyplot" class="plotclip"><rect width="807" height="267.9936"/></clipPath><clipPath id="clipc3d04ex2y2plot" class="plotclip"><rect width="807" height="114.85439999999997"/></clipPath><clipPath id="clipc3d04ex3y3plot" class="plotclip"><rect width="807" height="267.9936"/></clipPath><clipPath id="clipc3d04ex4y4plot" class="plotclip"><rect width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clipc3d04ex"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clipc3d04ey"><rect x="0" y="100.00000000000009" width="1000" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04exy"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ey2"><rect x="0" y="368.76160000000004" width="1000" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clipc3d04exy2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clipc3d04ey3"><rect x="0" y="484.384" width="1000" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04exy3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ey4"><rect x="0" y="753.1456000000001" width="1000" height="114.8544"/></clipPath><clipPath class="axesclip" id="clipc3d04exy4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clipc3d04ex2"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clipc3d04ex2y"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ex2y2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clipc3d04ex2y3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ex2y4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clipc3d04ex3"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clipc3d04ex3y"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ex3y2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clipc3d04ex3y3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ex3y4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clipc3d04ex4"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clipc3d04ex4y"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ex4y2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clipc3d04ex4y3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clipc3d04ex4y4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath></g><g class="gradients"/><g class="patterns"/></defs><g class="bglayer"><rect class="bg" x="113" y="100.00000000000009" width="807" height="267.9936" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/><rect class="bg" x="113" y="368.76160000000004" width="807" height="114.85439999999997" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/><rect class="bg" x="113" y="484.384" width="807" height="267.9936" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/><rect class="bg" x="113" y="753.1456000000001" width="807" height="114.8544" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/></g><g class="layer-below"><g class="imagelayer"/><g class="shapelayer"/></g><g class="cartesianlayer"><g class="subplot xy"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x"/><g class="y"/></g><g class="gridlayer"><g class="x"/><g class="y"><path class="ygrid crisp" transform="translate(0,329.7100000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,291.4200000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,253.14000000000007)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,214.85000000000008)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,176.57000000000008)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,138.2800000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g></g><g class="zerolinelayer"><path class="yzl zl crisp" transform="translate(0,367.9900000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,100.00000000000009)" clip-path="url(#clipc3d04exyplot)"><g class="barlayer mlayer"><g class="trace bars" shape-rendering="crispEdges" style="opacity: 1;"><g class="points"><g class="point"><path d="M-13.45,267.99V267.23H0V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M40.35,267.99V267.23H53.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M80.7,267.99V267.23H94.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M121.05,267.99V267.23H134.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M134.5,267.99V264.93H147.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M147.95,267.99V265.7H161.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M161.4,267.99V264.17H174.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M174.85,267.99V261.1H188.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M188.3,267.99V261.1H201.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M201.75,267.99V253.45H215.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M215.2,267.99V252.68H228.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M228.65,267.99V253.45H242.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M242.1,267.99V242.73H255.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M255.55,267.99V222.82H269V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M269,267.99V215.16H282.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M282.45,267.99V200.61H295.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M295.9,267.99V191.42H309.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M309.35,267.99V185.3H322.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M322.8,267.99V155.44H336.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M336.25,267.99V159.26H349.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M349.7,267.99V130.93H363.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M363.15,267.99V122.51H376.6V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M376.6,267.99V137.06H390.05V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M390.05,267.99V116.39H403.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M403.5,267.99V98.01H416.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M416.95,267.99V118.68H430.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M430.4,267.99V131.7H443.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M443.85,267.99V143.19H457.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M457.3,267.99V173.81H470.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M470.75,267.99V202.14H484.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M484.2,267.99V204.44H497.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M497.65,267.99V224.35H511.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M511.1,267.99V220.52H524.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M524.55,267.99V226.65H538V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M538,267.99V245.79H551.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M551.45,267.99V251.15H564.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M564.9,267.99V255.74H578.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M578.35,267.99V257.27H591.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M591.8,267.99V258.04H605.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M605.25,267.99V261.1H618.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M618.7,267.99V264.17H632.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M632.15,267.99V263.4H645.6V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M645.6,267.99V264.93H659.05V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M659.05,267.99V266.46H672.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M672.5,267.99V266.46H685.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M685.95,267.99V267.23H699.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M699.4,267.99V267.23H712.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M712.85,267.99V264.93H726.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M726.3,267.99V266.46H739.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M739.75,267.99V266.46H753.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M753.2,267.99V267.23H766.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M807,267.99V267.23H820.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M860.8,267.99V267.23H874.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="M0,0" style="fill: none;"/><path class="ylines-above crisp" d="" style="fill: none; stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 0;"/><g class="overlines-above"/><g class="xaxislayer-above"/><g class="yaxislayer-above"><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,329.7100000000001)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,291.4200000000001)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,253.14000000000007)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,214.85000000000008)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,176.57000000000008)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,138.2800000000001)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><g class="ytick"><text text-anchor="end" x="112" y="10.5" transform="translate(0,367.9900000000001)" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;">0</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,329.7100000000001)">50</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,291.4200000000001)">100</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,253.14000000000007)">150</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,214.85000000000008)">200</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,176.57000000000008)">250</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,138.2800000000001)">300</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,100.00000000000009)">350</text></g></g><g class="overaxes-above"/></g><g class="subplot x2y2"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x2"/><g class="y2"/></g><g class="gridlayer"><g class="x2"><path class="x2grid crisp" transform="translate(247.5,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x2grid crisp" transform="translate(382,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x2grid crisp" transform="translate(651,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x2grid crisp" transform="translate(785.5,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g><g class="y2"/></g><g class="zerolinelayer"><path class="x2zl zl crisp" transform="translate(516.5,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,368.76160000000004)" clip-path="url(#clipc3d04ex2y2plot)"><g class="boxlayer mlayer"><g class="trace boxes" style="opacity: 1;"><path class="box" d="M395.45,85.57V29.29M338.84,85.57V29.29H446.66V85.57ZM338.84,57.43H178.12M446.66,57.43H608.09M178.12,71.5V43.36M608.09,71.5V43.36" style="vector-effect: non-scaling-stroke; stroke-width: 2px; stroke: rgb(80, 114, 137); stroke-opacity: 1; fill: rgb(80, 114, 137); fill-opacity: 0.5;"/><g class="points"><path class="point" transform="translate(-5.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(48.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(82.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(123.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(137.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(137.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(139.33,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(140.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(151.29,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(153.79,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(158.7,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(164.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(166.65,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(167.81,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(171.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(171.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(176.59,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(608.86,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(611.46,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(614.76,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(617.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(620.08,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(623.31,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(628.05,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(630.83,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(630.83,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(635.52,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(642.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(642.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(644.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(644.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(644.45,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(647.13,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(649.78,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(651.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(652.53,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(665.27,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(668.82,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(672.73,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(677.8,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(689.99,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(705.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(714.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(714.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(715.14,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(722.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(730.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(730.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(744.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(752.27,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(760.93,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(815.23,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(864.44,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="M0,0" style="fill: none;"/><path class="ylines-above crisp" d="M0,0" style="fill: none;"/><g class="overlines-above"/><g class="xaxislayer-above"/><g class="yaxislayer-above"/><g class="overaxes-above"/></g><g class="subplot x3y3"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x3"/><g class="y3"/></g><g class="gridlayer"><g class="x3"/><g class="y3"><path class="y3grid crisp" transform="translate(0,714.094)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,675.804)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,637.524)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,599.234)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,560.954)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,522.664)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g></g><g class="zerolinelayer"><path class="y3zl zl crisp" transform="translate(0,752.374)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,484.384)" clip-path="url(#clipc3d04ex3y3plot)"><g class="barlayer mlayer"><g class="trace bars" shape-rendering="crispEdges" style="opacity: 1;"><g class="points"><g class="point"><path d="M80.7,267.99V267.23H94.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M134.5,267.99V267.23H147.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M174.85,267.99V267.23H188.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M188.3,267.99V267.23H201.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M201.75,267.99V266.46H215.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M215.2,267.99V264.93H228.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M228.65,267.99V265.7H242.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M242.1,267.99V259.57H255.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M255.55,267.99V258.81H269V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M269,267.99V263.4H282.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M282.45,267.99V241.96H295.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M295.9,267.99V241.96H309.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M309.35,267.99V216.69H322.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M322.8,267.99V187.6H336.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M336.25,267.99V182.24H349.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M349.7,267.99V105.67H363.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M363.15,267.99V66.62H376.6V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M376.6,267.99V19.91H390.05V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M390.05,267.99V35.99H403.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M403.5,267.99V16.08H416.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M416.95,267.99V62.02H430.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M430.4,267.99V94.95H443.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M443.85,267.99V137.83H457.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M457.3,267.99V179.94H470.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M470.75,267.99V205.21H484.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M484.2,267.99V222.82H497.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M497.65,267.99V228.94H511.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M511.1,267.99V237.37H524.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M524.55,267.99V247.32H538V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M538,267.99V248.85H551.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M551.45,267.99V258.81H564.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M564.9,267.99V258.81H578.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M578.35,267.99V261.87H591.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M591.8,267.99V264.17H605.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M605.25,267.99V263.4H618.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M618.7,267.99V266.46H632.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="M0,0" style="fill: none;"/><path class="ylines-above crisp" d="" style="fill: none; stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 0;"/><g class="overlines-above"/><g class="xaxislayer-above"/><g class="yaxislayer-above"><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,714.094)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,675.804)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,637.524)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,599.234)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,560.954)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,522.664)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><g class="y3tick"><text text-anchor="end" x="112" y="10.5" transform="translate(0,752.374)" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;">0</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,714.094)">50</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,675.804)">100</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,637.524)">150</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,599.234)">200</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,560.954)">250</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,522.664)">300</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,484.384)">350</text></g></g><g class="overaxes-above"/></g><g class="subplot x4y4"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x4"/><g class="y4"/></g><g class="gridlayer"><g class="x4"><path class="x4grid crisp" transform="translate(247.5,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4grid crisp" transform="translate(382,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4grid crisp" transform="translate(651,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4grid crisp" transform="translate(785.5,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g><g class="y4"/></g><g class="zerolinelayer"><path class="x4zl zl crisp" transform="translate(516.5,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,753.1456000000001)" clip-path="url(#clipc3d04ex4y4plot)"><g class="boxlayer mlayer"><g class="trace boxes" style="opacity: 1;"><path class="box" d="M402.19,85.57V29.29M370.08,85.57V29.29H436.39V85.57ZM370.08,57.43H273.82M436.39,57.43H535.73M273.82,71.5V43.36M535.73,71.5V43.36" style="vector-effect: non-scaling-stroke; stroke-width: 2px; stroke: rgb(227, 27, 76); stroke-opacity: 1; fill: rgb(227, 27, 76); fill-opacity: 0.5;"/><g class="points"><path class="point" transform="translate(85.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(146.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(179,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(189.85,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(204.74,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(212.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(221.1,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(224.84,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(226.08,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(226.7,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(229.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(238.74,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(240.76,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(242.95,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(243.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(244.23,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(244.78,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(246.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(247.32,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(247.79,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(248.28,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(251,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(252.41,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(255.12,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(257.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(259.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(260.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(260.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(261.72,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(263.26,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(265.1,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(265.65,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(266.91,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(267.1,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(268.66,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(268.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(269.52,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.51,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.59,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.83,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(538.49,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(538.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(539.24,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(539.69,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(539.8,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(541.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.31,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.59,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.74,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(544.72,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(544.86,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(544.88,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(545.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.23,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.53,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.62,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.81,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(547.5,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(547.66,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(550,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(550.21,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.07,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.61,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.97,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(552.06,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(556.01,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(556.11,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(557.38,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(558.48,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(559.32,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(559.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(559.9,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(561.01,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(564.54,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(565.07,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(565.39,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(565.45,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(566.69,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(566.97,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(568.38,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(569.39,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(570.29,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(574.41,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(576.05,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(577.31,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(577.57,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(578.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(580.87,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(580.95,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(581,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(582.52,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(583.15,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(585.24,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(588.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(594.2,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(599.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(599.27,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(602.87,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(603.51,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(605.63,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(608.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(609.75,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(611.46,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(614.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(615.17,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(621.08,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(626.76,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="" style="fill: none; stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 0;"/><path class="ylines-above crisp" d="M0,0" style="fill: none;"/><g class="overlines-above"/><g class="xaxislayer-above"><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(247.5,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(382,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(516.5,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(651,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(785.5,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><g class="x4tick"><text text-anchor="middle" x="0" y="899" transform="translate(113,0)" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;">−30</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(247.5,0)">−20</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(382,0)">−10</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(516.5,0)">0</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(651,0)">10</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(785.5,0)">20</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(920,0)">30</text></g></g><g class="yaxislayer-above"/><g class="overaxes-above"/></g></g><g class="polarlayer"/><g class="smithlayer"/><g class="ternarylayer"/><g class="geolayer"/><g class="funnelarealayer"/><g class="pielayer"/><g class="iciclelayer"/><g class="treemaplayer"/><g class="sunburstlayer"/><g class="glimages"/><defs id="topdefs-c3d04e"><g class="clips"/><clipPath id="legendc3d04e"><rect width="485" height="57" x="0" y="0"/></clipPath></defs><g class="layer-above"><g class="imagelayer"/><g class="shapelayer"><path data-index="0" fill-rule="evenodd" d="M113,868H920V100H113Z" style="opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 1px;"/></g></g><g class="infolayer"><g class="legend" pointer-events="all" transform="translate(313.94999999999993,100)"><rect class="bg" shape-rendering="crispEdges" style="stroke: rgb(68, 68, 68); stroke-opacity: 1; fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0px;" width="485" height="57" x="0" y="0"/><g class="scrollbox" transform="" clip-path="url(#legendc3d04e)"><g class="groups"><g class="traces" transform="translate(0,28.275000000000002)" style="opacity: 1;"><text class="legendtext" text-anchor="start" x="40" y="13.065000000000001" style="font-family: Arial; font-size: 33.5px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">deepSTABp</text><g class="layers" style="opacity: 1;"><g class="legendfill"/><g class="legendlines"/><g class="legendsymbols"><g class="legendpoints"><path class="legendundefined" d="M6,6H-6V-6H6Z" transform="translate(20,0)" style="stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g></g></g><rect class="legendtoggle" x="0" y="-23.275000000000002" width="242.1" height="46.550000000000004" style="fill: rgb(0, 0, 0); fill-opacity: 0;"/></g><g class="traces" transform="translate(242.1,28.275000000000002)" style="opacity: 1;"><text class="legendtext" text-anchor="start" x="40" y="13.065000000000001" style="font-family: Arial; font-size: 33.5px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">ProTstab2</text><g class="layers" style="opacity: 1;"><g class="legendfill"/><g class="legendlines"/><g class="legendsymbols"><g class="legendpoints"><path class="legendundefined" d="M6,6H-6V-6H6Z" transform="translate(20,0)" style="stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g></g></g><rect class="legendtoggle" x="0" y="-23.275000000000002" width="242.1" height="46.550000000000004" style="fill: rgb(0, 0, 0); fill-opacity: 0;"/></g></g></g><rect class="scrollbar" rx="20" ry="3" width="0" height="0" style="fill: rgb(128, 139, 164); fill-opacity: 1;" x="0" y="0"/></g><g class="g-gtitle"/><g class="g-xtitle" transform="translate(0,-38.55610000000024)"><text class="xtitle" x="516.5" y="987.9936000000001" text-anchor="middle" style="font-family: Arial; font-size: 33.5px; fill: rgb(0, 0, 0); opacity: 1; font-weight: normal; white-space: pre;"><tspan class="line" dy="0em" x="516.5" y="987.9936000000001"><tspan style="font-weight:bold">difference between predicted and experimentally </tspan></tspan><tspan class="line" dy="1.3em" x="516.5" y="987.9936000000001"><tspan style="font-weight:bold"> determined melting temperature (°C)<tspan style="font-weight:bold"></tspan></tspan></tspan></text></g><g class="g-x2title"/><g class="g-x3title"/><g class="g-x4title"/><g class="g-ytitle" transform="translate(21.275390625,0)"><text class="ytitle" transform="rotate(-90,11.737499999999997,233.9968000000001)" x="11.737499999999997" y="233.9968000000001" text-anchor="middle" style="font-family: Arial; font-size: 36px; fill: rgb(0, 0, 0); opacity: 1; font-weight: normal; white-space: pre;"><tspan style="font-weight:bold">number of proteins<tspan style="font-weight:bold"></tspan></tspan></text></g><g class="g-y2title"/><g class="g-y3title" transform="translate(21.2685546875,0)"><text class="y3title" transform="rotate(-90,11.737499999999997,618.3808)" x="11.737499999999997" y="618.3808" text-anchor="middle" style="font-family: Arial; font-size: 36px; fill: rgb(0, 0, 0); opacity: 1; font-weight: normal; white-space: pre;"><tspan style="font-weight:bold">number of proteins<tspan style="font-weight:bold"></tspan></tspan></text></g><g class="g-y4title"/></g></svg> \ No newline at end of file +<svg class="main-svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="1000" style="" viewBox="0 0 1000 1000"><rect x="0" y="0" width="1000" height="1000" style="fill: rgb(0, 0, 0); fill-opacity: 0;"/><defs id="defs-72c844"><g class="clips"><clipPath id="clip72c844xyplot" class="plotclip"><rect width="807" height="267.9936"/></clipPath><clipPath id="clip72c844x2y2plot" class="plotclip"><rect width="807" height="114.85439999999997"/></clipPath><clipPath id="clip72c844x3y3plot" class="plotclip"><rect width="807" height="267.9936"/></clipPath><clipPath id="clip72c844x4y4plot" class="plotclip"><rect width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clip72c844x"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clip72c844y"><rect x="0" y="100.00000000000009" width="1000" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844xy"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844y2"><rect x="0" y="368.76160000000004" width="1000" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clip72c844xy2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clip72c844y3"><rect x="0" y="484.384" width="1000" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844xy3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844y4"><rect x="0" y="753.1456000000001" width="1000" height="114.8544"/></clipPath><clipPath class="axesclip" id="clip72c844xy4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clip72c844x2"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clip72c844x2y"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844x2y2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clip72c844x2y3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844x2y4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clip72c844x3"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clip72c844x3y"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844x3y2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clip72c844x3y3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844x3y4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath><clipPath class="axesclip" id="clip72c844x4"><rect x="113" y="0" width="807" height="1000"/></clipPath><clipPath class="axesclip" id="clip72c844x4y"><rect x="113" y="100.00000000000009" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844x4y2"><rect x="113" y="368.76160000000004" width="807" height="114.85439999999997"/></clipPath><clipPath class="axesclip" id="clip72c844x4y3"><rect x="113" y="484.384" width="807" height="267.9936"/></clipPath><clipPath class="axesclip" id="clip72c844x4y4"><rect x="113" y="753.1456000000001" width="807" height="114.8544"/></clipPath></g><g class="gradients"/><g class="patterns"/></defs><g class="bglayer"><rect class="bg" x="113" y="100.00000000000009" width="807" height="267.9936" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/><rect class="bg" x="113" y="368.76160000000004" width="807" height="114.85439999999997" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/><rect class="bg" x="113" y="484.384" width="807" height="267.9936" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/><rect class="bg" x="113" y="753.1456000000001" width="807" height="114.8544" style="fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0;"/></g><g class="layer-below"><g class="imagelayer"/><g class="shapelayer"/></g><g class="cartesianlayer"><g class="subplot xy"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x"/><g class="y"/></g><g class="gridlayer"><g class="x"/><g class="y"><path class="ygrid crisp" transform="translate(0,329.7100000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,291.4200000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,253.14000000000007)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,214.85000000000008)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,176.57000000000008)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="ygrid crisp" transform="translate(0,138.2800000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g></g><g class="zerolinelayer"><path class="yzl zl crisp" transform="translate(0,367.9900000000001)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,100.00000000000009)" clip-path="url(#clip72c844xyplot)"><g class="barlayer mlayer"><g class="trace bars" shape-rendering="crispEdges" style="opacity: 1;"><g class="points"><g class="point"><path d="M-13.45,267.99V267.23H0V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M40.35,267.99V267.23H53.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M80.7,267.99V267.23H94.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M121.05,267.99V267.23H134.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M134.5,267.99V264.93H147.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M147.95,267.99V265.7H161.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M161.4,267.99V264.17H174.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M174.85,267.99V261.1H188.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M188.3,267.99V261.1H201.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M201.75,267.99V253.45H215.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M215.2,267.99V252.68H228.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M228.65,267.99V253.45H242.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M242.1,267.99V242.73H255.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M255.55,267.99V222.82H269V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M269,267.99V215.16H282.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M282.45,267.99V200.61H295.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M295.9,267.99V191.42H309.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M309.35,267.99V185.3H322.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M322.8,267.99V155.44H336.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M336.25,267.99V159.26H349.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M349.7,267.99V130.93H363.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M363.15,267.99V122.51H376.6V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M376.6,267.99V137.06H390.05V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M390.05,267.99V116.39H403.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M403.5,267.99V98.01H416.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M416.95,267.99V118.68H430.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M430.4,267.99V131.7H443.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M443.85,267.99V143.19H457.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M457.3,267.99V173.81H470.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M470.75,267.99V202.14H484.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M484.2,267.99V204.44H497.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M497.65,267.99V224.35H511.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M511.1,267.99V220.52H524.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M524.55,267.99V226.65H538V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M538,267.99V245.79H551.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M551.45,267.99V251.15H564.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M564.9,267.99V255.74H578.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M578.35,267.99V257.27H591.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M591.8,267.99V258.04H605.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M605.25,267.99V261.1H618.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M618.7,267.99V264.17H632.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M632.15,267.99V263.4H645.6V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M645.6,267.99V264.93H659.05V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M659.05,267.99V266.46H672.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M672.5,267.99V266.46H685.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M685.95,267.99V267.23H699.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M699.4,267.99V267.23H712.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M712.85,267.99V264.93H726.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M726.3,267.99V266.46H739.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M739.75,267.99V266.46H753.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M753.2,267.99V267.23H766.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M807,267.99V267.23H820.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g><g class="point"><path d="M860.8,267.99V267.23H874.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="M0,0" style="fill: none;"/><path class="ylines-above crisp" d="" style="fill: none; stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 0;"/><g class="overlines-above"/><g class="xaxislayer-above"/><g class="yaxislayer-above"><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,329.7100000000001)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,291.4200000000001)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,253.14000000000007)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,214.85000000000008)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,176.57000000000008)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="ytick ticks crisp" d="M113,0h10" transform="translate(0,138.2800000000001)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><g class="ytick"><text text-anchor="end" x="112" y="10.5" transform="translate(0,367.9900000000001)" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;">0</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,329.7100000000001)">50</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,291.4200000000001)">100</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,253.14000000000007)">150</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,214.85000000000008)">200</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,176.57000000000008)">250</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,138.2800000000001)">300</text></g><g class="ytick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,100.00000000000009)">350</text></g></g><g class="overaxes-above"/></g><g class="subplot x2y2"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x2"/><g class="y2"/></g><g class="gridlayer"><g class="x2"><path class="x2grid crisp" transform="translate(247.5,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x2grid crisp" transform="translate(382,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x2grid crisp" transform="translate(651,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x2grid crisp" transform="translate(785.5,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g><g class="y2"/></g><g class="zerolinelayer"><path class="x2zl zl crisp" transform="translate(516.5,0)" d="M0,368.76160000000004v114.85439999999997" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,368.76160000000004)" clip-path="url(#clip72c844x2y2plot)"><g class="boxlayer mlayer"><g class="trace boxes" style="opacity: 1;"><path class="box" d="M395.45,85.57V29.29M338.84,85.57V29.29H446.66V85.57ZM338.84,57.43H178.12M446.66,57.43H608.09M178.12,71.5V43.36M608.09,71.5V43.36" style="vector-effect: non-scaling-stroke; stroke-width: 2px; stroke: rgb(80, 114, 137); stroke-opacity: 1; fill: rgb(80, 114, 137); fill-opacity: 0.5;"/><g class="points"><path class="point" transform="translate(-5.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(48.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(82.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(123.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(137.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(137.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(139.33,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(140.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(151.29,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(153.79,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(158.7,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(164.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(166.65,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(167.81,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(171.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(171.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(176.59,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(608.86,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(611.46,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(614.76,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(617.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(620.08,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(623.31,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(628.05,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(630.83,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(630.83,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(635.52,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(642.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(642.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(644.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(644.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(644.45,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(647.13,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(649.78,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(651.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(652.53,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(665.27,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(668.82,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(672.73,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(677.8,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(689.99,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(705.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(714.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(714.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(715.14,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(722.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(730.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(730.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(744.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(752.27,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(760.93,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(815.23,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/><path class="point" transform="translate(864.44,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="M0,0" style="fill: none;"/><path class="ylines-above crisp" d="M0,0" style="fill: none;"/><g class="overlines-above"/><g class="xaxislayer-above"/><g class="yaxislayer-above"/><g class="overaxes-above"/></g><g class="subplot x3y3"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x3"/><g class="y3"/></g><g class="gridlayer"><g class="x3"/><g class="y3"><path class="y3grid crisp" transform="translate(0,714.094)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,675.804)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,637.524)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,599.234)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,560.954)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3grid crisp" transform="translate(0,522.664)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g></g><g class="zerolinelayer"><path class="y3zl zl crisp" transform="translate(0,752.374)" d="M113,0h807" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,484.384)" clip-path="url(#clip72c844x3y3plot)"><g class="barlayer mlayer"><g class="trace bars" shape-rendering="crispEdges" style="opacity: 1;"><g class="points"><g class="point"><path d="M80.7,267.99V267.23H94.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M134.5,267.99V267.23H147.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M0,0Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M174.85,267.99V267.23H188.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M188.3,267.99V267.23H201.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M201.75,267.99V266.46H215.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M215.2,267.99V264.93H228.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M228.65,267.99V265.7H242.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M242.1,267.99V259.57H255.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M255.55,267.99V258.81H269V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M269,267.99V263.4H282.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M282.45,267.99V241.96H295.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M295.9,267.99V241.96H309.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M309.35,267.99V216.69H322.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M322.8,267.99V187.6H336.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M336.25,267.99V182.24H349.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M349.7,267.99V105.67H363.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M363.15,267.99V66.62H376.6V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M376.6,267.99V19.91H390.05V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M390.05,267.99V35.99H403.5V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M403.5,267.99V16.08H416.95V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M416.95,267.99V62.02H430.4V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M430.4,267.99V94.95H443.85V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M443.85,267.99V137.83H457.3V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M457.3,267.99V179.94H470.75V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M470.75,267.99V205.21H484.2V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M484.2,267.99V222.82H497.65V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M497.65,267.99V228.94H511.1V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M511.1,267.99V237.37H524.55V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M524.55,267.99V247.32H538V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M538,267.99V248.85H551.45V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M551.45,267.99V258.81H564.9V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M564.9,267.99V258.81H578.35V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M578.35,267.99V261.87H591.8V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M591.8,267.99V264.17H605.25V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M605.25,267.99V263.4H618.7V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g><g class="point"><path d="M618.7,267.99V266.46H632.15V267.99Z" style="vector-effect: non-scaling-stroke; opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="M0,0" style="fill: none;"/><path class="ylines-above crisp" d="" style="fill: none; stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 0;"/><g class="overlines-above"/><g class="xaxislayer-above"/><g class="yaxislayer-above"><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,714.094)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,675.804)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,637.524)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,599.234)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,560.954)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="y3tick ticks crisp" d="M113,0h10" transform="translate(0,522.664)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><g class="y3tick"><text text-anchor="end" x="112" y="10.5" transform="translate(0,752.374)" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;">0</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,714.094)">50</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,675.804)">100</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,637.524)">150</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,599.234)">200</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,560.954)">250</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,522.664)">300</text></g><g class="y3tick"><text text-anchor="end" x="112" y="10.5" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(0,484.384)">350</text></g></g><g class="overaxes-above"/></g><g class="subplot x4y4"><g class="layer-subplot"><g class="shapelayer"/><g class="imagelayer"/></g><g class="minor-gridlayer"><g class="x4"/><g class="y4"/></g><g class="gridlayer"><g class="x4"><path class="x4grid crisp" transform="translate(247.5,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4grid crisp" transform="translate(382,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4grid crisp" transform="translate(651,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4grid crisp" transform="translate(785.5,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 1px;"/></g><g class="y4"/></g><g class="zerolinelayer"><path class="x4zl zl crisp" transform="translate(516.5,0)" d="M0,753.1456000000001v114.8544" style="stroke: rgb(255, 255, 255); stroke-opacity: 1; stroke-width: 2px;"/></g><path class="xlines-below"/><path class="ylines-below"/><g class="overlines-below"/><g class="xaxislayer-below"/><g class="yaxislayer-below"/><g class="overaxes-below"/><g class="plot" transform="translate(113,753.1456000000001)" clip-path="url(#clip72c844x4y4plot)"><g class="boxlayer mlayer"><g class="trace boxes" style="opacity: 1;"><path class="box" d="M402.19,85.57V29.29M370.08,85.57V29.29H436.39V85.57ZM370.08,57.43H273.82M436.39,57.43H535.73M273.82,71.5V43.36M535.73,71.5V43.36" style="vector-effect: non-scaling-stroke; stroke-width: 2px; stroke: rgb(227, 27, 76); stroke-opacity: 1; fill: rgb(227, 27, 76); fill-opacity: 0.5;"/><g class="points"><path class="point" transform="translate(85.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(146.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(179,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(189.85,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(204.74,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(212.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(221.1,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(224.84,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(226.08,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(226.7,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(229.34,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(238.74,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(240.76,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(242.95,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(243.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(244.23,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(244.78,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(246.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(247.32,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(247.79,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(248.28,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(251,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(252.41,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(255.12,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(257.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(259.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(260.36,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(260.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(261.72,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(263.26,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(265.1,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(265.65,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(266.91,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(267.1,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(268.66,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(268.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(269.52,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.51,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.59,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(537.83,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(538.49,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(538.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(539.24,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(539.69,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(539.8,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(541.96,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.25,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.31,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.59,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(542.74,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(544.72,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(544.86,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(544.88,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(545.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.23,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.53,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.62,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.71,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(546.81,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(547.5,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(547.66,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(550,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(550.21,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.07,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.4,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.61,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(551.97,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(552.06,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(556.01,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(556.11,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(557.38,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(558.48,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(559.32,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(559.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(559.9,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(561.01,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(564.54,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(565.07,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(565.39,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(565.45,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(566.69,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(566.97,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(568.38,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(569.39,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(570.29,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(574.41,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(576.05,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(577.31,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(577.57,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(578.64,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(580.87,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(580.95,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(581,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(582.52,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(583.15,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(585.24,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(588.43,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(594.2,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(599.09,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(599.27,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(602.87,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(603.51,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(605.63,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(608.03,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(609.75,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(611.46,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(614.18,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(615.17,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(621.08,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/><path class="point" transform="translate(626.76,57.43)" d="M3,0A3,3 0 1,1 0,-3A3,3 0 0,1 3,0Z" style="opacity: 1; stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g></g></g></g><g class="overplot"/><path class="xlines-above crisp" d="" style="fill: none; stroke-width: 1px; stroke: rgb(0, 0, 0); stroke-opacity: 0;"/><path class="ylines-above crisp" d="M0,0" style="fill: none;"/><g class="overlines-above"/><g class="xaxislayer-above"><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(247.5,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(382,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(516.5,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(651,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><path class="x4tick ticks crisp" d="M0,868v-10" transform="translate(785.5,0)" style="stroke: rgb(0, 0, 0); stroke-opacity: 1; stroke-width: 1px;"/><g class="x4tick"><text text-anchor="middle" x="0" y="899" transform="translate(113,0)" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;">−30</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(247.5,0)">−20</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(382,0)">−10</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(516.5,0)">0</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(651,0)">10</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(785.5,0)">20</text></g><g class="x4tick"><text text-anchor="middle" x="0" y="899" style="font-family: Arial; font-size: 30px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre; opacity: 1;" transform="translate(920,0)">30</text></g></g><g class="yaxislayer-above"/><g class="overaxes-above"/></g></g><g class="polarlayer"/><g class="smithlayer"/><g class="ternarylayer"/><g class="geolayer"/><g class="funnelarealayer"/><g class="pielayer"/><g class="iciclelayer"/><g class="treemaplayer"/><g class="sunburstlayer"/><g class="glimages"/><defs id="topdefs-72c844"><g class="clips"/><clipPath id="legend72c844"><rect width="485" height="57" x="0" y="0"/></clipPath></defs><g class="layer-above"><g class="imagelayer"/><g class="shapelayer"><path data-index="0" fill-rule="evenodd" d="M113,868H920V100H113Z" style="opacity: 1; stroke: rgb(0, 0, 0); stroke-opacity: 1; fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 1px;"/></g></g><g class="infolayer"><g class="legend" pointer-events="all" transform="translate(313.94999999999993,100)"><rect class="bg" shape-rendering="crispEdges" style="stroke: rgb(68, 68, 68); stroke-opacity: 1; fill: rgb(0, 0, 0); fill-opacity: 0; stroke-width: 0px;" width="485" height="57" x="0" y="0"/><g class="scrollbox" transform="" clip-path="url(#legend72c844)"><g class="groups"><g class="traces" transform="translate(0,28.275000000000002)" style="opacity: 1;"><text class="legendtext" text-anchor="start" x="40" y="13.065000000000001" style="font-family: Arial; font-size: 33.5px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">deepSTABp</text><g class="layers" style="opacity: 1;"><g class="legendfill"/><g class="legendlines"/><g class="legendsymbols"><g class="legendpoints"><path class="legendundefined" d="M6,6H-6V-6H6Z" transform="translate(20,0)" style="stroke-width: 0px; fill: rgb(227, 27, 76); fill-opacity: 1;"/></g></g></g><rect class="legendtoggle" x="0" y="-23.275000000000002" width="242.1" height="46.550000000000004" style="fill: rgb(0, 0, 0); fill-opacity: 0;"/></g><g class="traces" transform="translate(242.1,28.275000000000002)" style="opacity: 1;"><text class="legendtext" text-anchor="start" x="40" y="13.065000000000001" style="font-family: Arial; font-size: 33.5px; fill: rgb(0, 0, 0); fill-opacity: 1; white-space: pre;">ProTstab2</text><g class="layers" style="opacity: 1;"><g class="legendfill"/><g class="legendlines"/><g class="legendsymbols"><g class="legendpoints"><path class="legendundefined" d="M6,6H-6V-6H6Z" transform="translate(20,0)" style="stroke-width: 0px; fill: rgb(80, 114, 137); fill-opacity: 1;"/></g></g></g><rect class="legendtoggle" x="0" y="-23.275000000000002" width="242.1" height="46.550000000000004" style="fill: rgb(0, 0, 0); fill-opacity: 0;"/></g></g></g><rect class="scrollbar" rx="20" ry="3" width="0" height="0" style="fill: rgb(128, 139, 164); fill-opacity: 1;" x="0" y="0"/></g><g class="g-gtitle"/><g class="g-xtitle" transform="translate(0,-38.55610000000024)"><text class="xtitle" x="516.5" y="987.9936000000001" text-anchor="middle" style="font-family: Arial; font-size: 33.5px; fill: rgb(0, 0, 0); opacity: 1; font-weight: normal; white-space: pre;"><tspan class="line" dy="0em" x="516.5" y="987.9936000000001"><tspan style="font-weight:bold">difference between predicted and experimentally </tspan></tspan><tspan class="line" dy="1.3em" x="516.5" y="987.9936000000001"><tspan style="font-weight:bold"> determined melting temperature (°C)<tspan style="font-weight:bold"></tspan></tspan></tspan></text></g><g class="g-x2title"/><g class="g-x3title"/><g class="g-x4title"/><g class="g-ytitle" transform="translate(21.275390625,0)"><text class="ytitle" transform="rotate(-90,11.737499999999997,233.9968000000001)" x="11.737499999999997" y="233.9968000000001" text-anchor="middle" style="font-family: Arial; font-size: 36px; fill: rgb(0, 0, 0); opacity: 1; font-weight: normal; white-space: pre;"><tspan style="font-weight:bold">number of proteins<tspan style="font-weight:bold"></tspan></tspan></text></g><g class="g-y2title"/><g class="g-y3title" transform="translate(21.2685546875,0)"><text class="y3title" transform="rotate(-90,11.737499999999997,618.3808)" x="11.737499999999997" y="618.3808" text-anchor="middle" style="font-family: Arial; font-size: 36px; fill: rgb(0, 0, 0); opacity: 1; font-weight: normal; white-space: pre;"><tspan style="font-weight:bold">number of proteins<tspan style="font-weight:bold"></tspan></tspan></text></g><g class="g-y4title"/></g></svg> \ No newline at end of file diff --git a/runs/lightning_logs/version_8/events.out.tfevents.1679503582.Felix.28540.0 b/runs/lightning_logs/version_8/events.out.tfevents.1679503582.Felix.28540.0 new file mode 100644 index 0000000000000000000000000000000000000000..cf0f84f582d539a0783a640d8dfb29f2714fa70b Binary files /dev/null and b/runs/lightning_logs/version_8/events.out.tfevents.1679503582.Felix.28540.0 differ diff --git a/runs/lightning_logs/version_8/hparams.yaml b/runs/lightning_logs/version_8/hparams.yaml new file mode 100644 index 0000000000000000000000000000000000000000..6577c3f1ed3f5d210ea3ffcebd5d189c603353cc --- /dev/null +++ b/runs/lightning_logs/version_8/hparams.yaml @@ -0,0 +1,3 @@ +batch_size: 25 +dropout: 0.2 +learning_rate: 0.01 diff --git a/runs/lightning_logs/version_9/events.out.tfevents.1679503618.Felix.42924.0 b/runs/lightning_logs/version_9/events.out.tfevents.1679503618.Felix.42924.0 new file mode 100644 index 0000000000000000000000000000000000000000..c458328198cc502d4e5abcfe72cc358cf278da51 Binary files /dev/null and b/runs/lightning_logs/version_9/events.out.tfevents.1679503618.Felix.42924.0 differ diff --git a/runs/lightning_logs/version_9/hparams.yaml b/runs/lightning_logs/version_9/hparams.yaml new file mode 100644 index 0000000000000000000000000000000000000000..10f4c1b6c976a7fdf52a97a81b1fbeabc67570d7 --- /dev/null +++ b/runs/lightning_logs/version_9/hparams.yaml @@ -0,0 +1,3 @@ +batch_size: 25 +dropout: 0.1 +learning_rate: 0.01 diff --git a/workflows/TransformerBasedTMPrediction/MLP_prediction/predict_growth_human_pct.py b/workflows/TransformerBasedTMPrediction/MLP_prediction/predict_growth_human_pct.py index 3b827da15c81202a09c5057a91a715ff15a6fbcc..729385995408ea922ccfc187a765e2288c2a0308 100644 --- a/workflows/TransformerBasedTMPrediction/MLP_prediction/predict_growth_human_pct.py +++ b/workflows/TransformerBasedTMPrediction/MLP_prediction/predict_growth_human_pct.py @@ -56,62 +56,55 @@ class LSMTNeuralNet (pl.LightningModule): #initialisation of parameters and layers def __init__(self, dropout, learning_rate, batch_size): super().__init__() - self.save_hyperparameters() - #parameters for the folliwing functions + #parameters for the folliwing functions self.learning_rate = learning_rate self.batch_size = batch_size self.dropout =dropout - #layer of the neureal network - self.zero_layer = nn.Linear (1044, 4098) + self.zero_layer = nn.Linear (1064, 4098) self.zero_dropout = nn.Dropout1d (dropout) self.first_layer = nn.Linear (4098, 512) self.first_dropout = nn.Dropout1d (dropout) self.second_layer = nn.Linear (512, 256) self.second_dropout = nn.Dropout1d (dropout) - self.third_layer = nn.Linear (256, 128) self.third_dropout = nn.Dropout1d (dropout) - - self.seventh_layer = nn.Linear (128, 1) - self.species_layer_one = nn.Linear (1, 20) - self.species_layer_two = nn.Linear (20, 1) + self.species_layer_two = nn.Linear (20, 20) self.species_dropout = nn.Dropout1d(dropout) - self.output = nn.Linear (2,1) self.batch_norm0 = nn.LayerNorm (4098) self.batch_norm1 = nn.LayerNorm (512) self.batch_norm2 = nn.LayerNorm (256) self.batch_norm3 = nn.LayerNorm (128) - - self.lysate = nn.Linear (1, 10) + self.lysate = nn.Linear (1, 20) + self.lysate2 = nn.Linear (20, 10) self.lysate_dropout = nn.Dropout1d(dropout) - self.cell = nn.Linear (1, 10) + self.cell = nn.Linear (1, 20) + self.cell2 = nn.Linear (20, 10) self.cell_dropout = nn.Dropout1d(dropout) - #forward pass through the neural network def forward (self, x, species_feature,lysate, cell): - x = x.float() + x = x.reshape (1,-1 ).float() + species_feature = torch.tensor (species_feature, dtype=torch.float32) + lysate = torch.tensor (lysate, dtype=torch.float32) + cell = torch.tensor (cell, dtype=torch.float32) lysate = lysate.reshape (-1, 1) lysate = self.lysate_dropout(F.selu(self.lysate (lysate))) + lysate = self.lysate_dropout(F.selu(self.lysate2 (lysate))) cell = cell.reshape (-1, 1) cell = self.cell_dropout(F.selu(self.cell (cell))) - x = torch.cat ([lysate, cell,x], dim=1) + cell = self.cell_dropout(F.selu(self.cell2 (cell))) + species_feature = species_feature.reshape (-1, 1) + species_feature = self.species_dropout(F.selu(self.species_layer_one (species_feature))) + species_feature = self.species_dropout(F.selu(self.species_layer_two (species_feature))) + x = torch.cat ([lysate, cell,x,species_feature], dim=1) x = self.zero_dropout (self.batch_norm0 (F.selu(self.zero_layer(x)))) x = self.first_dropout(self.batch_norm1(F.selu(self.first_layer (x)))) x = self.second_dropout(self.batch_norm2(F.selu(self.second_layer (x)))) x = self.third_dropout(self.batch_norm3(F.selu(self.third_layer (x)))) - tm_est = self.seventh_layer (x) - - species_feature = species_feature.reshape (-1, 1) - species_feature = self.species_dropout(F.selu(self.species_layer_one (species_feature))) - species_feature = self.species_layer_two (species_feature) - - combined = torch.cat ([tm_est, species_feature], dim=1) - - tm = self.output (combined) + tm = self.seventh_layer (x) return tm def configure_optimizers(self): @@ -156,14 +149,14 @@ if __name__ == '__main__': batch_size = 100 num_epochs = 100 learningrate = 0.01 - + testing = CustomDataset_training(filepath_testing) - lstm_net = LSMTNeuralNet.load_from_checkpoint (str(fn)+'/runs/TransformerBasedTMPrediction/trained_models/trained_model_human_ptc/checkpoints/epoch=99-step=29000.ckpt') - trainer = Trainer (accelerator='gpu', devices=1,auto_lr_find=False ,max_epochs=num_epochs, fast_dev_run=False) + lstm_net = LSMTNeuralNet.load_from_checkpoint (str(fn)+'/runs/lightning_logs/b25_sampled_10k_tuned_2_d01/checkpoints/epoch=1-step=2316.ckpt') + trainer = Trainer (default_root_dir=str(fn)+'/runs/lightning_logs/',accelerator='gpu', devices=1,auto_lr_find=False ,max_epochs=num_epochs, fast_dev_run=False) data1= trainer.predict (lstm_net) output_df = generate_output_dataframe (data1) display (output_df) - output_df.to_csv(str(fn)+"/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred.csv", index=False) + output_df.to_csv(str(fn)+"/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Full_dataset/full_dataset_pred.csv", index=False) print ('Done') diff --git a/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture.py b/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture.py index 71c17c5bfaf70fd090f385105de052fce4a7695f..a2b48a50f8839fe99366143b128cf7f2a101de18 100644 --- a/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture.py +++ b/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture.py @@ -57,11 +57,10 @@ class LSMTNeuralNet (pl.LightningModule): #initialisation of parameters and layers def __init__(self, dropout, learning_rate, batch_size): super().__init__() - #parameters for the folliwing functions + #parameters for the folliwing functions self.learning_rate = learning_rate self.batch_size = batch_size self.dropout =dropout - #layer of the neureal network self.zero_layer = nn.Linear (1064, 4098) self.zero_dropout = nn.Dropout1d (dropout) @@ -69,34 +68,29 @@ class LSMTNeuralNet (pl.LightningModule): self.first_dropout = nn.Dropout1d (dropout) self.second_layer = nn.Linear (512, 256) self.second_dropout = nn.Dropout1d (dropout) - self.third_layer = nn.Linear (256, 128) self.third_dropout = nn.Dropout1d (dropout) - - self.seventh_layer = nn.Linear (128, 1) - self.species_layer_one = nn.Linear (1, 20) self.species_layer_two = nn.Linear (20, 20) - self.species_dropout = nn.Dropout1d(dropout) - self.batch_norm0 = nn.LayerNorm (4098) self.batch_norm1 = nn.LayerNorm (512) self.batch_norm2 = nn.LayerNorm (256) self.batch_norm3 = nn.LayerNorm (128) - self.lysate = nn.Linear (1, 20) self.lysate2 = nn.Linear (20, 10) self.lysate_dropout = nn.Dropout1d(dropout) self.cell = nn.Linear (1, 20) self.cell2 = nn.Linear (20, 10) self.cell_dropout = nn.Dropout1d(dropout) - #forward pass through the neural network def forward (self, x, species_feature,lysate, cell): - x = x.float() + x = x.reshape (1,-1 ).float() + species_feature = torch.tensor (species_feature, dtype=torch.float32) + lysate = torch.tensor (lysate, dtype=torch.float32) + cell = torch.tensor (cell, dtype=torch.float32) lysate = lysate.reshape (-1, 1) lysate = self.lysate_dropout(F.selu(self.lysate (lysate))) lysate = self.lysate_dropout(F.selu(self.lysate2 (lysate))) @@ -113,57 +107,11 @@ class LSMTNeuralNet (pl.LightningModule): x = self.third_dropout(self.batch_norm3(F.selu(self.third_layer (x)))) tm = self.seventh_layer (x) return tm - def configure_optimizers(self): optimizer = torch.optim.Adam (self.parameters(), lr= self.learning_rate) scheduler = torch.optim.lr_scheduler.ReduceLROnPlateau (optimizer=optimizer,mode='min',patience=10) return {"optimizer":optimizer , "lr_scheduler": scheduler, "monitor": "train_loss"} - def train_dataloader(self): - train_loader = DataLoader (dataset = training, - batch_size= self.batch_size, - num_workers=12, - shuffle=True) - return train_loader - - def training_step(self, batch, batch_idx): - species, protein, features,species_feature , tm, lysate, cell = batch - output_tm = self.forward (features,species_feature, lysate, cell) - tm = tm.to(torch.float32).clone().detach().reshape(-1,1) - loss1 = F.mse_loss (output_tm, tm) - loss = loss1 - return loss - - def val_dataloader(self): - val_loader = DataLoader (dataset = validation, - batch_size= self.batch_size, - num_workers=12, - shuffle=False) - return val_loader - - def validation_step(self, batch, batch_idx): - species, protein, features,species_feature , tm, lysate, cell = batch - output_tm = self.forward (features,species_feature, lysate, cell) - tm = tm.to(torch.float32).clone().detach().reshape(-1,1) - loss1 = F.mse_loss (output_tm, tm) - loss = loss1 - return loss - - def test_dataloader(self): - test_loader = DataLoader(dataset = testing, - batch_size= self.batch_size, - num_workers=12, - shuffle=False) - return test_loader - - def test_step(self, batch, batch_index): - species, protein, features,species_feature , tm, lysate, cell = batch - output_tm = self.forward (features,species_feature, lysate, cell) - tm = tm.to(torch.float32).clone().detach().reshape(-1,1) - loss1 = F.mse_loss (output_tm, tm) - loss = loss1 - return loss - def predict_dataloader (self): predict_loader = DataLoader(dataset = testing, num_workers=1, @@ -202,12 +150,12 @@ if __name__ == '__main__': learningrate = 0.01 testing = CustomDataset_training(filepath_testing) - lstm_net = LSMTNeuralNet.load_from_checkpoint (str(fn)+'/runs/lightning_logs/10K_b25/checkpoints/epoch=68-step=441600.ckpt') - trainer = Trainer (accelerator='gpu', devices=1,auto_lr_find=False) + lstm_net = LSMTNeuralNet.load_from_checkpoint (str(fn)+'/runs/lightning_logs/b25_sampled_10k_tuned_2_d01/checkpoints/epoch=1-step=2316.ckpt') + trainer = Trainer (default_root_dir=str(fn)+'/runs/',accelerator='gpu', devices=1,auto_lr_find=False) data1= trainer.predict (lstm_net) output_df = generate_output_dataframe (data1) display (output_df) - output_df.to_csv(str(fn)+"/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k.csv", index=False) + output_df.to_csv(str(fn)+"/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Full_dataset/full_dataset_pred_new_arch_train_sample_b25_10k.csv", index=False) print ('Done') diff --git a/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture_mut.py b/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture_mut.py index 8cecec9919313843701e26774ac3aa2040f9680d..f91d7884d184243924b0341429c99a612b296531 100644 --- a/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture_mut.py +++ b/workflows/TransformerBasedTMPrediction/MLP_prediction/tpredit_growth_new_architecture_mut.py @@ -57,11 +57,10 @@ class LSMTNeuralNet (pl.LightningModule): #initialisation of parameters and layers def __init__(self, dropout, learning_rate, batch_size): super().__init__() - #parameters for the folliwing functions + #parameters for the folliwing functions self.learning_rate = learning_rate self.batch_size = batch_size self.dropout =dropout - #layer of the neureal network self.zero_layer = nn.Linear (1064, 4098) self.zero_dropout = nn.Dropout1d (dropout) @@ -69,34 +68,29 @@ class LSMTNeuralNet (pl.LightningModule): self.first_dropout = nn.Dropout1d (dropout) self.second_layer = nn.Linear (512, 256) self.second_dropout = nn.Dropout1d (dropout) - self.third_layer = nn.Linear (256, 128) self.third_dropout = nn.Dropout1d (dropout) - - self.seventh_layer = nn.Linear (128, 1) - self.species_layer_one = nn.Linear (1, 20) self.species_layer_two = nn.Linear (20, 20) - self.species_dropout = nn.Dropout1d(dropout) - self.batch_norm0 = nn.LayerNorm (4098) self.batch_norm1 = nn.LayerNorm (512) self.batch_norm2 = nn.LayerNorm (256) self.batch_norm3 = nn.LayerNorm (128) - self.lysate = nn.Linear (1, 20) self.lysate2 = nn.Linear (20, 10) self.lysate_dropout = nn.Dropout1d(dropout) self.cell = nn.Linear (1, 20) self.cell2 = nn.Linear (20, 10) self.cell_dropout = nn.Dropout1d(dropout) - #forward pass through the neural network def forward (self, x, species_feature,lysate, cell): - x = x.float() + x = x.reshape (1,-1 ).float() + species_feature = torch.tensor (species_feature, dtype=torch.float32) + lysate = torch.tensor (lysate, dtype=torch.float32) + cell = torch.tensor (cell, dtype=torch.float32) lysate = lysate.reshape (-1, 1) lysate = self.lysate_dropout(F.selu(self.lysate (lysate))) lysate = self.lysate_dropout(F.selu(self.lysate2 (lysate))) @@ -154,7 +148,7 @@ if __name__ == '__main__': testing = CustomDataset_training(filepath_testing) lstm_net = LSMTNeuralNet.load_from_checkpoint (str(fn)+'/runs/lightning_logs/b25_sampled_10k_tuned_2_d01/checkpoints/epoch=1-step=2316.ckpt') - trainer = Trainer (accelerator='gpu', devices=1,auto_lr_find=False) + trainer = Trainer (default_root_dir=str(fn)+'/runs/',accelerator='gpu', devices=1,auto_lr_find=False) data1= trainer.predict (lstm_net) output_df = generate_output_dataframe (data1) display (output_df) diff --git a/workflows/TransformerBasedTMPrediction/MLP_training/training.py b/workflows/TransformerBasedTMPrediction/MLP_training/training.py index 0b98a1b66d40e856afacb0cd3e118e576fe23378..6deb7b79f16ee4157a5db535cee52facd95a9607 100644 --- a/workflows/TransformerBasedTMPrediction/MLP_training/training.py +++ b/workflows/TransformerBasedTMPrediction/MLP_training/training.py @@ -198,9 +198,9 @@ def generate_output_dataframe (output_data): if __name__ == '__main__': #Path to the sourcedata - filepath_training = str(fn) + '/runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled_10K_dif_growth.parquet' - filepath_vali = str(fn) + '/runs/TransformerBasedTMPrediction/Datasets/validation/validation_human_PCT_with_danio_dif_growth.parquet' - filepath_testing = str(fn) + '/runs/TransformerBasedTMPrediction/Datasets/testing/testing_human_PCT_with_danio_dif_growth.parquet' + filepath_training = str(fn) + '/runs/ResamplingOfTrainingData/training_human_PCT_with_danio_sampled_10K.parquet' + filepath_vali = str(fn) + '/runs/TransformerBasedTMPrediction/Datasets/validation/validation_human_PCT_with_danio.parquet' + filepath_testing = str(fn) + '/runs/TransformerBasedTMPrediction/Datasets/testing/testing_human_PCT_with_danio.parquet' dropout = 0.2 batch_size = 25 num_epochs = 100 @@ -214,12 +214,12 @@ if __name__ == '__main__': lstm_net = LSMTNeuralNet (dropout= dropout, learning_rate = learningrate, batch_size = batch_size) - trainer = Trainer (precision=16, accelerator='gpu', devices=1, auto_lr_find=False ,max_epochs=num_epochs, fast_dev_run=False) + trainer = Trainer (default_root_dir=str(fn)+'/runs/',precision=16, accelerator='gpu', devices=1, auto_lr_find=False ,max_epochs=num_epochs, fast_dev_run=False) trainer.fit(lstm_net) trainer.test(lstm_net) data1= trainer.predict (lstm_net) output_df = generate_output_dataframe (data1) - output_df.to_csv(str(fn) + '/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dif_growth.csv', index=False) + output_df.to_csv(str(fn) + '/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dif_growth.csv', index=False) print ('Done') diff --git a/workflows/TransformerBasedTMPrediction/MLP_training/tuning.py b/workflows/TransformerBasedTMPrediction/MLP_training/tuning.py index 277b8919039182b73dccd82446a4e6983d6e4501..6751daeaf501622e9f444f7243614d3e7f2d31a8 100644 --- a/workflows/TransformerBasedTMPrediction/MLP_training/tuning.py +++ b/workflows/TransformerBasedTMPrediction/MLP_training/tuning.py @@ -202,7 +202,7 @@ if __name__ == '__main__': filepath_vali = str(fn) + '/runs/TransformerBasedTMPrediction/Datasets/validation/validation_human_PCT_with_danio.parquet' filepath_testing = str(fn) + '/runs/TransformerBasedTMPrediction/Datasets/testing/testing_human_PCT_with_danio.parquet' dropout = 0.1 - batch_size = 16 + batch_size = 25 num_epochs = 1 learningrate = 0.01 time1 = time.time() @@ -212,12 +212,12 @@ if __name__ == '__main__': validation = CustomDataset_training(filepath_vali) testing = CustomDataset_training(filepath_testing) lstm_net = LSMTNeuralNet.load_from_checkpoint (str(fn) + '/runs/lightning_logs/10K_b25/checkpoints/epoch=68-step=441600.ckpt',dropout=0.1, batch_size=batch_size) - trainer = Trainer (precision=16, accelerator='gpu', devices=1, auto_lr_find=False ,max_epochs=num_epochs, fast_dev_run=False) + trainer = Trainer (default_root_dir=str(fn)+'/runs/',precision=16, accelerator='gpu', devices=1, auto_lr_find=False ,max_epochs=num_epochs, fast_dev_run=False) trainer.fit(lstm_net) trainer.test(lstm_net) data1= trainer.predict (lstm_net) output_df = generate_output_dataframe (data1) - output_df.to_csv(str(fn) + '/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e1_01d.csv', index=False) + output_df.to_csv(str(fn) + '/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b16_10k_tuned_e1_01d.csv', index=False) print ('Done') diff --git a/workflows/TransformerBasedTMPrediction/interquartilerange/interqurtile.py b/workflows/TransformerBasedTMPrediction/interquartilerange/interqurtile.py index eef94264144eaf4cf4fda8d4a89547c2ea15ab52..5033d0e046ea95e91d36005fbd61e69caf682a97 100644 --- a/workflows/TransformerBasedTMPrediction/interquartilerange/interqurtile.py +++ b/workflows/TransformerBasedTMPrediction/interquartilerange/interqurtile.py @@ -9,7 +9,7 @@ def read_in (file): return data -filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_dif.csv' +filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv' data = read_in (filepath) display (data) diff --git a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/full_dataset.py b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/full_dataset.py index 81f8645aa1b5a38ad75a2a486b1de8a7977912de..b1aaeb977cd6bda19fde53170dfb8c1faa456249 100644 --- a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/full_dataset.py +++ b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/full_dataset.py @@ -28,7 +28,7 @@ custom_species_dict = {"'Oleispira antarctica_RB-8_lysate_R1'":'Oleispira antarc "'Thermus thermophilus HB27 lysate'":'Thermus thermophilus lysate' } -filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/Full_dataset/full_dataset_pred_new_arch_train_sample.csv' +filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/legacy/Full_dataset/full_dataset_pred_new_arch_train_sample.csv' data = read_in (filepath) diff --git a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/prostab_comarison_dataset.py b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/prostab_comarison_dataset.py index 041ec8d1546917e3c98f9702c130ceec5db28a0a..8dadd4c71bb42c2f068553b9cd06d46de7d44cca 100644 --- a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/prostab_comarison_dataset.py +++ b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_datasets_for_pictures/prostab_comarison_dataset.py @@ -22,7 +22,7 @@ def add_meltome_labels (protein, Tm): label = data['Tm'].values[0] return label -filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e2_01d.csv' +filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/legacy/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_e2_01d.csv' data = read_in (filepath) @@ -57,5 +57,5 @@ metrics = {'MRSE': [mean_squared_error(data['label_tm'],data['output_tm'],square } metric_df = pd.DataFrame (metrics, index=['Model', 'ProTstab2']) -data.to_csv(str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_dif.csv', index=False) -metric_df.to_csv (str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_mertics.csv', index=False) \ No newline at end of file +data.to_csv(str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/legacy/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_dif.csv', index=False) +metric_df.to_csv (str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/legacy/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_dogt_tuned_2e_d01_mertics.csv', index=False) \ No newline at end of file diff --git a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/full_dataset/full_dataset_regression_red.py b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/full_dataset/full_dataset_regression_red.py index 0d18d1798a9d6036851c62717008131a37dd6220..640d688a8e7cf2719cf7cb242233f943e0f41edb 100644 --- a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/full_dataset/full_dataset_regression_red.py +++ b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/full_dataset/full_dataset_regression_red.py @@ -15,7 +15,7 @@ def read_in (file): return data -filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv' +filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv' data = read_in (filepath) data['protein']= data['protein'].str.replace("'","") x = data['output_tm'].to_numpy() @@ -59,4 +59,4 @@ fig.update_layout( ) fig.show() -fig.write_image( str(fn)+'/runs/growth_temperature/fig_contour_red_v3.svg') +#fig.write_image( str(fn)+'/runs/growth_temperature/fig_contour_red_v3.svg') diff --git a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/protstab_comp/prostab_marginal_dis.py b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/protstab_comp/prostab_marginal_dis.py index 752ce50a9b76a631e84ab399f41d98f637bca79b..d9e30734a62e7af6e086b1e44436a4cca1ea17e7 100644 --- a/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/protstab_comp/prostab_marginal_dis.py +++ b/workflows/TransformerBasedTMPrediction/picture_metrics_creation/create_pictures/protstab_comp/prostab_marginal_dis.py @@ -10,7 +10,7 @@ def read_in (file): return data -filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/Thermal_prox_coagg_human/ProTstab2_comparison/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_1e_d01_dif.csv' +filepath = str(fn)+'/runs/TransformerBasedTMPrediction/Predictions/Dataset_predictions/deepSTABp_prediction/human_ptc_prostab_pred_new_archi_sampled_b25_10k_tuned_2e_d01_dif.csv' data = read_in (filepath) @@ -95,4 +95,4 @@ fig.update_layout(shapes=[ line={'width': 1, 'color': 'black'})]) fig.show() -fig.write_image( str(fn)+'/runs/growth_temperature/fig_rainbow_v3.svg') \ No newline at end of file +#fig.write_image( str(fn)+'/runs/growth_temperature/fig_rainbow_v3.svg') \ No newline at end of file diff --git a/workflows/prediction_model/predcit_with_human_ptc.py b/workflows/prediction_model/predcit_with_human_ptc.py deleted file mode 100644 index 46d1117f9ca62295c09faed66c00f2bb655ff89d..0000000000000000000000000000000000000000 --- a/workflows/prediction_model/predcit_with_human_ptc.py +++ /dev/null @@ -1,240 +0,0 @@ -import pandas as pd -from Bio import SeqIO -import numpy as np -import torch as torch -import torch.nn as nn -import torch.nn.functional as F -import pytorch_lightning as pl -from torch.utils.data import DataLoader, Dataset -from transformers import XLNetTokenizer, AutoModel, pipeline, AutoTokenizer, T5EncoderModel, T5Tokenizer -from tqdm.auto import tqdm -import gc -import re -from pytorch_lightning import Trainer -from functools import reduce -from IPython.display import display -import time -import pathlib -fn = pathlib.Path(__file__).parent.parent.parent - -device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') -#PYTORCH_CUDA_ALLOC_CONF = max_split_size_mb: - -#function to convert the fasta sequence into the embeddingns with a lenght of 1024 (the returned embedding is the mean of all amino acid embeddings of the sequence) -def new_features (features, model): - #trys to run the embedding on the gpu if available - try: - device = torch.device('cuda' if torch.cuda.is_available() else 'cpu') - #passes the transformer model to the device and sets it into evaluation mode - model = model.to(device) - model = model.eval() - #tokenization of the fasta sequence - ids = tokenizer.batch_encode_plus(features, add_special_tokens=True, padding=True) - input_ids = torch.tensor(ids['input_ids']).to(device) - #genneration of the attention mask - attention_mask = torch.tensor(ids['attention_mask']).to(device) - #genertion of the embeddings - with torch.no_grad(): - embedding = model(input_ids=input_ids,attention_mask=attention_mask) - #moves the embeddings from a tensor to a numpy array and from the gpu to the cpu - embedding = embedding.last_hidden_state.cpu().numpy() - new_feature = [] - #removes tokens that where added during the tokenization and are not part of the actual sequence - for seq_num in range(len(embedding)): - seq_len = (attention_mask[seq_num]==1).sum() - seq_emd = embedding[seq_num][:seq_len-1] - new_feature.append(seq_emd) - #calculation of the mean of the embeddings - new_feature = np.array (new_feature) - out = torch.tensor (new_feature) - out = out.mean(1) - out = out.reshape(-1) - out = out.tolist() - return out - #runs the embedding on the cpu if a gpu is available but the gpu does not have enough memory - except: - device = torch.device('cpu') - model = model.to(device) - model = model.eval() - ids = tokenizer.batch_encode_plus(features, add_special_tokens=True, padding=True) - input_ids = torch.tensor(ids['input_ids']).to(device) - attention_mask = torch.tensor(ids['attention_mask']).to(device) - with torch.no_grad(): - embedding = model(input_ids=input_ids,attention_mask=attention_mask) - embedding = embedding.last_hidden_state.cpu().numpy() - new_feature = [] - for seq_num in range(len(embedding)): - seq_len = (attention_mask[seq_num]==1).sum() - seq_emd = embedding[seq_num][:seq_len-1] - new_feature.append(seq_emd) - new_feature = np.array (new_feature) - out = torch.tensor (new_feature) - out = out.mean(1) - out = out.reshape(-1) - out = out.tolist() - return out - - -#creates a dataset that is used to calculated the melting temperature -class CustomDataset (Dataset): - def __init__(self, data): - - self.protein = data.iloc[:,0].values.tolist() - self.features = torch.from_numpy(np.array (data['feature'].values.tolist(), dtype=np.float32)) - self.species_features = torch.from_numpy(np.array (data['growth_feature'].values.tolist(), dtype=np.float32)) - self.lysate = torch.from_numpy(np.array (data['lysate'].values.tolist(), dtype=np.float32)) - self.cell = torch.from_numpy(np.array (data['cell'].values.tolist(),dtype=np.float32)) - def __len__(self): - return (len (self.features)) - - def __getitem__(self, index): - protein = self.protein[index] - features = self.features[index] - species_features = self.species_features[index] - lysate = self.lysate[index] - cell = self.cell[index] - return protein, features,species_features, lysate, cell - - -class LSMTNeuralNet (pl.LightningModule): - #initialisation of parameters and layers - def __init__(self, dropout, learning_rate, batch_size): - super().__init__() - #parameters for the folliwing functions - self.learning_rate = learning_rate - self.batch_size = batch_size - self.dropout =dropout - - #layer of the neureal network - self.zero_layer = nn.Linear (1044, 4098) - self.zero_dropout = nn.Dropout1d (dropout) - self.first_layer = nn.Linear (4098, 512) - self.first_dropout = nn.Dropout1d (dropout) - self.second_layer = nn.Linear (512, 256) - self.second_dropout = nn.Dropout1d (dropout) - - self.third_layer = nn.Linear (256, 128) - self.third_dropout = nn.Dropout1d (dropout) - - - self.seventh_layer = nn.Linear (128, 1) - - self.species_layer_one = nn.Linear (1, 20) - self.species_layer_two = nn.Linear (20, 1) - self.species_dropout = nn.Dropout1d(dropout) - self.output = nn.Linear (2,1) - self.batch_norm0 = nn.LayerNorm (4098) - self.batch_norm1 = nn.LayerNorm (512) - self.batch_norm2 = nn.LayerNorm (256) - self.batch_norm3 = nn.LayerNorm (128) - - self.lysate = nn.Linear (1, 10) - self.lysate_dropout = nn.Dropout1d(dropout) - self.cell = nn.Linear (1, 10) - self.cell_dropout = nn.Dropout1d(dropout) - - - #forward pass through the neural network - def forward (self, x, species_feature,lysate, cell): - x = x.float() - lysate = lysate.reshape (-1, 1) - lysate = self.lysate_dropout(F.selu(self.lysate (lysate))) - cell = cell.reshape (-1, 1) - cell = self.cell_dropout(F.selu(self.cell (cell))) - x = torch.cat ([lysate, cell,x], dim=1) - x = self.zero_dropout (self.batch_norm0 (F.selu(self.zero_layer(x)))) - x = self.first_dropout(self.batch_norm1(F.selu(self.first_layer (x)))) - x = self.second_dropout(self.batch_norm2(F.selu(self.second_layer (x)))) - x = self.third_dropout(self.batch_norm3(F.selu(self.third_layer (x)))) - tm_est = self.seventh_layer (x) - - species_feature = species_feature.reshape (-1, 1) - species_feature = self.species_dropout(F.selu(self.species_layer_one (species_feature))) - species_feature = self.species_layer_two (species_feature) - - combined = torch.cat ([tm_est, species_feature], dim=1) - - tm = self.output (combined) - return tm - #prediction dataloader - def predict_dataloader (self): - predict_loader = DataLoader(dataset = prediction, - num_workers=12, - shuffle=False) - return predict_loader - #step which returns the protein and the predicted melting temperature - def predict_step (self, batch, batch_index): - protein, features,species_feature , lysate, cell = batch - output_tm = self.forward (features,species_feature, lysate, cell) - protein = str(protein) - protein = re.sub (r'[(,)]','',protein) - output_tm = output_tm.tolist() - output_tm = reduce (lambda a,b:b, output_tm)[0] - return protein, output_tm - -#generates a dataframe that contains the protein as one column and the melting temperature as second column -def generate_output_dataframe (output_data): - pd_data = pd.DataFrame(output_data) - columns = ['Protein','output_tm'] - pd_data.columns = columns - pd_data['Protein'] = pd_data['Protein'].str.replace("'","") - pd_data['output_tm'] = pd_data ['output_tm']*(97.4166905791789-30.441673997070385)+30.441673997070385 - return pd_data - - -if __name__ == '__main__': - time1 = time.time() - #read in of a fasta file - filepath = str(fn)+'/studies/TransformerBasedTMPrediction/resources/test_fasta.fasta' - #the growth and lysate cell feature are set (needs to be reworked) - growth_temp = 22 - growth_temp = (growth_temp-30.44167)/(97.4167-30.44167) - lysate = 1 - cell = 0 - #reads in the fasta file and returns the fasta sequence and the protein name in a dataframe - with open (filepath) as handle: - genome = SeqIO.parse (handle, 'fasta') - for x,fasta in enumerate (genome): - name, sequence = fasta.id, str(fasta.seq) - name = name.split('|')[1] - sequence = sequence.replace ("O",'X').replace ("U",'X').replace( "J",'X').replace ("Z",'X').replace ("B",'X') - sequence = list (sequence) - sequence = ' '.join (sequence) - sequence = [sequence] - if x == 0: - df_dict = {'Protein':name, 'feature':[sequence]} - new_df = pd.DataFrame (df_dict) - else: - df_dict = {'Protein':name, 'feature':[sequence]} - new_df2 = pd.DataFrame (df_dict) - new_df = pd.concat ((new_df, new_df2)) - #adds the growth, lysate, and cell feature to the dataframe - new_df['growth_feature'] = growth_temp - new_df['lysate'] = lysate - new_df['cell'] = cell - display (new_df) - #loads the T5_xl_uniref50 model for the generation of the embeddings - tokenizer = T5Tokenizer.from_pretrained("Rostlab/prot_t5_xl_uniref50", do_lower_case=False ) - model = T5EncoderModel.from_pretrained("Rostlab/prot_t5_xl_uniref50") - gc.collect() - - #generate the embedding for each protein - new_df['feature'] = new_df['feature'].apply (lambda x: new_features (x, model)) - new_df = new_df.reset_index(drop=True) - display (new_df) - #generate the prediction of the melting temperature for each protein - prediction = CustomDataset (new_df) - model_path = str(fn)+"/runs/lightning_logs/b25_na_sampled_10k_tuned_1_d01/checkpoints/epoch=0-step=1158.ckpt" - prediction_net = LSMTNeuralNet.load_from_checkpoint (model_path) - if torch.cuda.is_available(): - trainer = Trainer (accelerator='gpu', devices=1) - else: - trainer = Trainer () - data1= trainer.predict (prediction_net) - #generates the dataframe that contains the protein name and the calculated melting temperature - output_df = generate_output_dataframe (data1) - display (output_df) - time2 = time.time() - print (time2- time1) - - \ No newline at end of file diff --git a/workflows/prediction_model/predcit_with_human_ptc_cpu_only.py b/workflows/prediction_model/predcit_with_human_ptc_cpu.py similarity index 70% rename from workflows/prediction_model/predcit_with_human_ptc_cpu_only.py rename to workflows/prediction_model/predcit_with_human_ptc_cpu.py index 1ef6fdfb3a3c0b8c49a7434467754bef25ee2b3e..687cd8afe20983d76ea2dfe1dd89160f44af1d6b 100644 --- a/workflows/prediction_model/predcit_with_human_ptc_cpu_only.py +++ b/workflows/prediction_model/predcit_with_human_ptc_cpu.py @@ -10,12 +10,11 @@ from transformers import T5EncoderModel, T5Tokenizer from tqdm.auto import tqdm import gc import time -import pathlib -fn = pathlib.Path(__file__).parent.parent.parent #function to convert the fasta sequence into the embeddingns with a lenght of 1024 (the returned embedding is the mean of all amino acid embeddings of the sequence) def new_features (features, model, tokenizer): - device = torch.device('cuda') + device = torch.device('cpu') + model = model.to(device) ids = tokenizer.batch_encode_plus(features, add_special_tokens=True, padding=True) input_ids = torch.tensor(ids['input_ids']).to(device) attention_mask = torch.tensor(ids['attention_mask']).to(device) @@ -37,11 +36,10 @@ class LSMTNeuralNet (pl.LightningModule): #initialisation of parameters and layers def __init__(self, dropout, learning_rate, batch_size): super().__init__() - #parameters for the folliwing functions + #parameters for the folliwing functions self.learning_rate = learning_rate self.batch_size = batch_size self.dropout =dropout - #layer of the neureal network self.zero_layer = nn.Linear (1064, 4098) self.zero_dropout = nn.Dropout1d (dropout) @@ -49,37 +47,29 @@ class LSMTNeuralNet (pl.LightningModule): self.first_dropout = nn.Dropout1d (dropout) self.second_layer = nn.Linear (512, 256) self.second_dropout = nn.Dropout1d (dropout) - self.third_layer = nn.Linear (256, 128) self.third_dropout = nn.Dropout1d (dropout) - - self.seventh_layer = nn.Linear (128, 1) - self.species_layer_one = nn.Linear (1, 20) self.species_layer_two = nn.Linear (20, 20) - self.species_dropout = nn.Dropout1d(dropout) - self.batch_norm0 = nn.LayerNorm (4098) self.batch_norm1 = nn.LayerNorm (512) self.batch_norm2 = nn.LayerNorm (256) self.batch_norm3 = nn.LayerNorm (128) - self.lysate = nn.Linear (1, 20) self.lysate2 = nn.Linear (20, 10) self.lysate_dropout = nn.Dropout1d(dropout) self.cell = nn.Linear (1, 20) self.cell2 = nn.Linear (20, 10) self.cell_dropout = nn.Dropout1d(dropout) - #forward pass through the neural network def forward (self, x, species_feature,lysate, cell): - x = x.reshape (1, -1).float().to(torch.device('cuda')) - species_feature = torch.tensor (species_feature, dtype=torch.float32).to(torch.device('cuda')) - lysate = torch.tensor (lysate, dtype=torch.float32).to(torch.device('cuda')) - cell = torch.tensor (cell, dtype=torch.float32).to(torch.device('cuda')) + x = x.reshape (1,-1 ).float() + species_feature = torch.tensor (species_feature, dtype=torch.float32) + lysate = torch.tensor (lysate, dtype=torch.float32) + cell = torch.tensor (cell, dtype=torch.float32) lysate = lysate.reshape (-1, 1) lysate = self.lysate_dropout(F.selu(self.lysate (lysate))) lysate = self.lysate_dropout(F.selu(self.lysate2 (lysate))) @@ -96,7 +86,7 @@ class LSMTNeuralNet (pl.LightningModule): x = self.third_dropout(self.batch_norm3(F.selu(self.third_layer (x)))) tm = self.seventh_layer (x) return tm - + def create_dataframe (fasta, lycell, growth): growth_temp = (growth-30.44167)/(97.4167-30.44167) if lycell == 'lysate': @@ -138,36 +128,3 @@ def determine_tm (dataframe, transformer, tm_predicter, new_features, tokenizer) output_df['Tm'] = output_df['Tm']*(97.4166905791789-30.441673997070385)+30.441673997070385 return output_df -if __name__ == '__main__': - tokenizer = T5Tokenizer.from_pretrained("Rostlab/prot_t5_xl_uniref50", do_lower_case=False ) - model = T5EncoderModel.from_pretrained("Rostlab/prot_t5_xl_uniref50").to(torch.device('cuda')) - gc.collect() - model_path = str(fn)+ "/runs/lightning_logs/b25_na_sampled_10k_tuned_1_d01/checkpoints/epoch=0-step=1158.ckpt" - prediction_net = LSMTNeuralNet.load_from_checkpoint (model_path).to(torch.device('cuda')) - fasta = '''>sp|A0A0A7EPL0|PIAL1_ARATH E4 SUMO-protein ligase PIAL1 OS=Arabidopsis thaliana OX=3702 GN=PIAL1 PE=2 SV=1 -MVIPATSRFGFRAEFNTKEFQASCISLANEIDAAIGRNEVPGNIQELALILNNVCRRKCD -DYQTRAVVMALMISVKSACQLGWFPERETQELLAIIDLMWNGFSCPENVTSCVNSPVTLI -SQVIERFYPCVKLGHILVSFEAKPESKMMMKDFHISKKMPHSPKQKVGLFVVRTEDISRS -NCIVHPQGVSFLLNGKGIDKRVNISMESGPQLPTNVTALLNLGANLLQAIGCFGGSYLIA -IAFMDVIPLPNKPLLKDYVHPEVVGSNSDCDIIEGPSRISLSCPISRTRIKLPVKGHVCK -HLQCFDFWNYVNMNTRRPSWRCPHCNQSVCYTDIRVDQKLRKILEEVGRNAADVVISADG -TWMVETENDEDVELVPETTHDHGDPNSFINLGPTVKNPARDENEMETSTQVEEHNPCLSE -IQGPSNDTHRPASDYTMLNQSHTSTNTLPQLPRTLNAFDGQQFVNLPQVINTRDSPASQA -LPMTFSPTPSPQDILATNAANFGTSMPAAQSSQFQGSHVTSLGNCEGRTSDLMARWNHIY -GRVQTQFPPAPLSHHHYSMQNQSPSPAQQRPVPSYIAHPQTFHVNYGENADQRWMPSSIA -HPQTLPVNYGGNTNQRPIPSSIAHPQTLPVNYRGNTDHRSTPYSITHLQTLLNYGGNADQ -RPMPSSITNLQTLPATYGGYAHQRPMSSSITHPRTSPVNYGGTPDQRPMPSSITHPQTLP -VSYGGTTDQILNPGGAMGQFSSREFMNLTPANTENWRPQSRMRGSVAPGTGYDHMIIHPT -RPVHPQAQTPPAPLSTSYDGADEIQAFIGHPSYPVSNNETQAGTSSLPVAEGLGYSGSFW -SMPPETW VSYGGTTDQILNPGGAMGQFSSREFMNLTPANTENWRPQSRMRGSVAPGTGYDHMIIHPT -RPVHPQAQTPPAPLSTSYDGADEIQAFIGHPSYPVSNNETQAGTSSLPVAEGLGYSGSFW -SMPPETW GRVQTQFPPAPLSHHHYSMQNQSPSP -''' - new_df = create_dataframe (fasta, "lysate", 22.0) - time1 = time.time() - for i in range (0, 1000): - prediction = determine_tm (new_df, model, prediction_net, new_features, tokenizer) - time2 = time.time() - print (time2-time1) - print ((time2-time1)/10) - diff --git a/workflows/prediction_model/predcit_with_human_ptc_cuda.py b/workflows/prediction_model/predcit_with_human_ptc_cuda.py new file mode 100644 index 0000000000000000000000000000000000000000..0771a5d57bb1e81a589e20691a613805f646b4b7 --- /dev/null +++ b/workflows/prediction_model/predcit_with_human_ptc_cuda.py @@ -0,0 +1,131 @@ +import pandas as pd +from Bio import SeqIO +import numpy as np +import torch as torch +import torch.nn as nn +import torch.nn.functional as F +import pytorch_lightning as pl +from io import StringIO +from transformers import T5EncoderModel, T5Tokenizer +from tqdm.auto import tqdm +import gc +import time + +#function to convert the fasta sequence into the embeddingns with a lenght of 1024 (the returned embedding is the mean of all amino acid embeddings of the sequence) +def new_features (features, model, tokenizer): + device = torch.device('cuda') + model = model.to(device) + ids = tokenizer.batch_encode_plus(features, add_special_tokens=True, padding=True) + input_ids = torch.tensor(ids['input_ids']).to(device) + attention_mask = torch.tensor(ids['attention_mask']).to(device) + with torch.no_grad(): + embedding = model(input_ids=input_ids,attention_mask=attention_mask) + embedding = embedding.last_hidden_state.cpu().numpy() + new_feature = [] + for seq_num in range(len(embedding)): + seq_len = (attention_mask[seq_num]==1).sum() + seq_emd = embedding[seq_num][:seq_len-1] + new_feature.append(seq_emd) + new_feature = np.array (new_feature) + out = torch.tensor (new_feature) + out = out.mean(1) + out = out.reshape(-1) + return out + +class LSMTNeuralNet (pl.LightningModule): + #initialisation of parameters and layers + def __init__(self, dropout, learning_rate, batch_size): + super().__init__() + #parameters for the folliwing functions + self.learning_rate = learning_rate + self.batch_size = batch_size + self.dropout =dropout + #layer of the neureal network + self.zero_layer = nn.Linear (1064, 4098) + self.zero_dropout = nn.Dropout1d (dropout) + self.first_layer = nn.Linear (4098, 512) + self.first_dropout = nn.Dropout1d (dropout) + self.second_layer = nn.Linear (512, 256) + self.second_dropout = nn.Dropout1d (dropout) + self.third_layer = nn.Linear (256, 128) + self.third_dropout = nn.Dropout1d (dropout) + self.seventh_layer = nn.Linear (128, 1) + self.species_layer_one = nn.Linear (1, 20) + self.species_layer_two = nn.Linear (20, 20) + self.species_dropout = nn.Dropout1d(dropout) + self.batch_norm0 = nn.LayerNorm (4098) + self.batch_norm1 = nn.LayerNorm (512) + self.batch_norm2 = nn.LayerNorm (256) + self.batch_norm3 = nn.LayerNorm (128) + self.lysate = nn.Linear (1, 20) + self.lysate2 = nn.Linear (20, 10) + self.lysate_dropout = nn.Dropout1d(dropout) + self.cell = nn.Linear (1, 20) + self.cell2 = nn.Linear (20, 10) + self.cell_dropout = nn.Dropout1d(dropout) + + #forward pass through the neural network + def forward (self, x, species_feature,lysate, cell): + x = x.reshape (1,-1 ).float().to(torch.device('cuda')) + species_feature = torch.tensor (species_feature, dtype=torch.float32) + lysate = torch.tensor (lysate, dtype=torch.float32) + cell = torch.tensor (cell, dtype=torch.float32) + lysate = lysate.reshape (-1, 1).to(torch.device('cuda')) + lysate = self.lysate_dropout(F.selu(self.lysate (lysate))) + lysate = self.lysate_dropout(F.selu(self.lysate2 (lysate))) + cell = cell.reshape (-1, 1).to(torch.device('cuda')) + cell = self.cell_dropout(F.selu(self.cell (cell))) + cell = self.cell_dropout(F.selu(self.cell2 (cell))) + species_feature = species_feature.reshape (-1, 1).to(torch.device('cuda')) + species_feature = self.species_dropout(F.selu(self.species_layer_one (species_feature))) + species_feature = self.species_dropout(F.selu(self.species_layer_two (species_feature))) + x = torch.cat ([lysate, cell,x,species_feature], dim=1) + x = self.zero_dropout (self.batch_norm0 (F.selu(self.zero_layer(x)))) + x = self.first_dropout(self.batch_norm1(F.selu(self.first_layer (x)))) + x = self.second_dropout(self.batch_norm2(F.selu(self.second_layer (x)))) + x = self.third_dropout(self.batch_norm3(F.selu(self.third_layer (x)))) + tm = self.seventh_layer (x) + return tm + +def create_dataframe (fasta, lycell, growth): + growth_temp = (growth-30.44167)/(97.4167-30.44167) + if lycell == 'lysate': + lysate = 1 + cell = 0 + else: + lysate = 0 + cell = 1 + with StringIO(fasta) as fastq_io: + genome = SeqIO.parse (fastq_io, 'fasta') + for x,fasta in enumerate (genome): + name, sequence = fasta.id, str(fasta.seq) + name = name.split('|')[1] + sequence = sequence.replace ("O",'X').replace ("U",'X').replace( "J",'X').replace ("Z",'X').replace ("B",'X') + sequence = list (sequence) + sequence = ' '.join (sequence) + sequence = [sequence] + if x == 0: + df_dict = {'Protein':name, 'feature':[sequence]} + dataframe = pd.DataFrame (df_dict) + else: + df_dict = {'Protein':name, 'feature':[sequence]} + new_df2 = pd.DataFrame (df_dict) + dataframe = pd.concat ((dataframe, new_df2)) + dataframe['growth_feature'] = growth_temp + dataframe['lysate'] = lysate + dataframe['cell'] = cell + return dataframe + +def determine_tm (dataframe, transformer, tm_predicter, new_features, tokenizer): + output = [] + protein = [] + tm_predicter = tm_predicter.to(torch.device('cuda')) + for index, row in dataframe.iterrows(): + embedding = new_features(row['feature'], transformer, tokenizer) + tm_prediction = tm_predicter (embedding, row['growth_feature'],row['lysate'], row['cell']) + output.append (tm_prediction.cpu().detach().numpy().tolist()[0][0]) + protein.append (row['Protein']) + output_df = pd.DataFrame ({'Protein':protein, 'Tm':output}) + output_df['Tm'] = output_df['Tm']*(97.4166905791789-30.441673997070385)+30.441673997070385 + return output_df + diff --git a/workflows/prediction_model/predict_main.py b/workflows/prediction_model/predict_main.py index cd4ddf86a7cd96cb52653815e8572b2b26cb9792..c74708c03ea9e0bb59c4f90c1a34a68c3247cb15 100644 --- a/workflows/prediction_model/predict_main.py +++ b/workflows/prediction_model/predict_main.py @@ -1,4 +1,4 @@ -import predcit_with_human_ptc_cpu_only_copy as pred +import predcit_with_human_ptc_cpu as pred from transformers import T5EncoderModel, T5Tokenizer import gc import pathlib @@ -18,7 +18,7 @@ MCCCCVLDCVF tokenizer = T5Tokenizer.from_pretrained("Rostlab/prot_t5_xl_uniref50", do_lower_case=False ) model = T5EncoderModel.from_pretrained("Rostlab/prot_t5_xl_uniref50") gc.collect() -pred_path = str(fn) +"/runs/lightning_logs/sampled_32_batchsize/checkpoints/epoch=46-step=42535.ckpt" +pred_path = str(fn)+'/runs/lightning_logs/b25_sampled_10k_tuned_2_d01/checkpoints/epoch=1-step=2316.ckpt' prediction_net = pred.LSMTNeuralNet.load_from_checkpoint (pred_path) model = model.eval() prediction_net = prediction_net.eval()