diff --git "a/notebooks/gedi_figs7and8_benchmarking_statisticalTests.ipynb" "b/notebooks/gedi_figs7and8_benchmarking_statisticalTests.ipynb" new file mode 100644--- /dev/null +++ "b/notebooks/gedi_figs7and8_benchmarking_statisticalTests.ipynb" @@ -0,0 +1,516 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 8, + "id": "1768477d", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "from scipy import spatial\n", + "from sklearn.metrics.pairwise import cosine_similarity\n", + "TEST='kendalltau'#'kendalltau', 'pearsonr'\n", + "DATA_SOURCE = 'BaselineED' #'BaselineED', 'GenBaselineED', 'GenED'\n", + "IMPUTE = False #If False Nan lines are dropped\n", + "\n", + "paper_feat_columns = [\"log\",\"ratio_variants_per_number_of_traces\", \"ratio_most_common_variant\", 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting'] \n", + "paper_metrics_columns = ['log', 'fitness_heu', 'precision_heu',\n", + " 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp',\n", + " 'size_ilp','cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "os.makedirs(\"../output/plots\", exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "d3b7f2d1", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BaselineED\n", + "kendalltau_BaselineED_nanDropped\n" + ] + } + ], + "source": [ + "def get_output_file_name(test, data_source, impute): \n", + " print(data_source)\n", + " impute = 'imputed' if impute else 'nanDropped'\n", + " return (\"_\".join([test, data_source, impute]))\n", + "print(get_output_file_name(TEST, DATA_SOURCE, IMPUTE))" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "6594d6b4", + "metadata": {}, + "outputs": [], + "source": [ + "## LOAD FEATURE AND METRICS FILES\n", + "def load_data(data_source, content):\n", + " path = f\"../data/{data_source}.csv\" \n", + " print(\"Path: \", path)\n", + " data = pd.read_csv(path).sort_values('log')\n", + " if data_source == 'GenBaselineED_feat':\n", + " data['log']=data.apply(lambda x: \"Gen\"+x['log'], axis=1)\n", + " elif data_source == 'GenBaselineED_bench':\n", + " data['log']=data.apply(lambda x: \"Gen\"+x['log'].replace(\"genEL\",\"\").rsplit(\"_\",7)[0], axis=1)\n", + " return data" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "7428d805", + "metadata": {}, + "outputs": [], + "source": [ + "### INSTANCE SELECTION: NULLS OR IMPUTATION?\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.impute import SimpleImputer\n", + "\n", + "def clean_data(fd_pdm, impute=False, feat_columns=paper_feat_columns, metric_columns=paper_metrics_columns):\n", + " num_cols = fd_pdm.convert_dtypes().select_dtypes(exclude=['string']).columns\n", + " str_cols = fd_pdm.convert_dtypes().select_dtypes(include=['string']).columns\n", + "\n", + " imputer = SimpleImputer(missing_values=np.nan, strategy='mean')\n", + " imputer.fit(fd_pdm.drop(str_cols, axis=1))\n", + " imp_df = imputer.transform(fd_pdm.drop(str_cols, axis=1))\n", + " imp_df = pd.DataFrame(imp_df, columns=num_cols)\n", + " imp_df['log'] = fd_pdm['log']\n", + " print(\"Imputed dataset:\" ,imp_df.shape)\n", + "\n", + " ft_pdm_no_nans = fd_pdm.copy()\n", + " ft_pdm_no_nans = ft_pdm_no_nans.dropna()\n", + " ft_pdm_no_nans['log'] = fd_pdm['log']\n", + " print(\"No nan's dataset:\" ,ft_pdm_no_nans.shape)\n", + " #print(len(ft_pdm_no_nans[ft_pdm_no_nans['source']==DATA_SOURCE]['log']))\n", + " print(\"FT_COL: \", feat_columns)\n", + " print(\"M_COL: \", metric_columns)\n", + " \n", + " if IMPUTE:\n", + " benchmarked_ft = imp_df[feat_columns]\n", + " benchmarked_pd = imp_df[metric_columns]\n", + " else:\n", + " benchmarked_ft = ft_pdm_no_nans[feat_columns]\n", + " benchmarked_pd = ft_pdm_no_nans[metric_columns]\n", + " return benchmarked_ft, benchmarked_pd" + ] + }, + { + "cell_type": "markdown", + "id": "07370d54", + "metadata": {}, + "source": [ + "## Statistical test: Is there a statistical significant relation between feature similarity and performance metrics?" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "14e72f71", + "metadata": {}, + "outputs": [], + "source": [ + "from scipy.stats import spearmanr\n", + "from scipy.stats import kendalltau\n", + "from scipy.stats import pearsonr\n", + "from numpy import isnan\n", + "\n", + "import sys\n", + "import os\n", + "sys.path.append(os.path.dirname(\"../gedi/utils/io_helpers.py\"))\n", + "from io_helpers import get_keys_abbreviation\n", + "\n", + "def statistical_test(feature_source, bench_source, test, impute=False, p_thresh=0.05, focus='stat'):\n", + " ft = load_data(feature_source, 'feat')\n", + " #ft['log']=ft.apply(lambda x: x['log'].replace(\"Gen\",\"\"), axis=1)\n", + " #paper_feat_columns = [\"log\",\"ratio_variants_per_number_of_traces\", \"ratio_most_common_variant\", 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting'] \n", + " #ft= ft[paper_feat_columns]\n", + " #print(ft.shape)\n", + " #print(\"Feature: \", ft['log'].tolist())\n", + "\n", + "\n", + " ben = load_data(bench_source, 'bench')\n", + " #ben['log']=ben.apply(lambda x: x['log'].replace(\"Gen\",\"\"), axis=1)\n", + "\n", + " paper_metrics_columns = ['log', 'fitness_heu', 'precision_heu',\n", + " 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp',\n", + " 'size_ilp','cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "\n", + " #ben = ben[paper_metrics_columns]\n", + " #print(ben.shape)\n", + " #print(\"Bench: \", ben['log'].tolist())\n", + " fd_pdm = pd.merge(ft, ben, on=['log'], how='inner').reset_index(drop=True)#.reindex(both_df.index)\n", + "\n", + " ## DROP DUPLICATES\n", + " fd_pdm = fd_pdm.reset_index(drop=True)\n", + " fd_pdm = fd_pdm.T.drop_duplicates().T\n", + " #print(fd_pdm.shape)\n", + " fd_pdm['log'].unique()\n", + " \n", + " #print(fd_pdm.columns)\n", + " benchmark_ft, benchmark_pd = clean_data(fd_pdm, impute, paper_feat_columns, paper_metrics_columns)\n", + " \n", + " #print(benchmark_ft.shape, benchmark_pd.shape)\n", + "\n", + " benchmarked_ft_plot = benchmark_ft.copy()\n", + " benchmarked_pdm_plot = benchmark_pd.copy()\n", + "\n", + " #benchmarked_ft = benchmarked_ft.head(10)\n", + " #benchmarked_pdm = benchmarked_pdm.head(10)\n", + " print(DATA_SOURCE, benchmarked_ft_plot.shape, benchmarked_pdm_plot.shape)\n", + "\n", + " tmp = list(benchmarked_ft_plot.columns[1:-1])\n", + " df_tmp = pd.DataFrame(index=benchmarked_pdm_plot.columns[1:-1], columns=tmp)\n", + " #print(\"Benchmark_pdm:\", benchmarked_pdm.columns[1:-1])\n", + " #print (\"Benchmark_ft:\", tmp)\n", + "\n", + " for feature in benchmarked_ft_plot.columns:\n", + " if feature != 'log' and feature != 'source':\n", + " for metric in benchmarked_pdm_plot.columns:\n", + " if metric != 'log' and metric != 'source':\n", + " #print(feature, benchmarked_pdm.columns[1])\n", + " stat, p = eval(f\"{test}(benchmarked_ft_plot[feature], benchmarked_pdm_plot[metric])\") \n", + " #print(feature, metric, p, p <= 0.05)\n", + " df_tmp.loc[metric, feature] = eval(focus)*(1.0 if (p <= p_thresh) else 0.0)\n", + "\n", + " feature_keys = get_keys_abbreviation(df_tmp.columns).split(\"_\")\n", + " #print(feature_keys)\n", + " df_tmp.columns=feature_keys\n", + " print(\"Direct\", test, feature_source)\n", + " # df_tmp[pd.isnan()]\n", + " return df_tmp\n", + "#df_tmp = statistical_test(DATA_SOURCE+\"_feat\", \"Gen\"+DATA_SOURCE+\"_bench\", TEST, IMPUTE)" + ] + }, + { + "cell_type": "code", + "execution_count": 62, + "id": "8f75faf4", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Path: ../data/BaselineED_feat.csv\n", + "Path: ../data/BaselineED_bench.csv\n", + "Imputed dataset: (20, 26)\n", + "No nan's dataset: (14, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (14, 8) (14, 16)\n", + "Direct kendalltau BaselineED_feat\n", + "BaselineED\n", + "../output/plots/pdm_kendalltau_BaselineED_nanDropped\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_stat_test(test_results, feature_source, bench_source, test, impute, mask=True, cbar=True, ylabels=True):\n", + " feature_source = feature_source.split(\"_\")[0]\n", + " bench_source = bench_source.split(\"_\")[0]\n", + " cbar_w = 1.2 if cbar else 0\n", + " ylabels_w = 1.5 if ylabels else 0\n", + " plt.subplots(figsize=(5+cbar_w+ylabels_w,5))\n", + " \n", + " if feature_source==bench_source:\n", + " data_source = feature_source\n", + " else:\n", + " data_source = f\"{feature_source}Feat_{bench_source}Bench\"\n", + " sns.heatmap(test_results.fillna(0), annot=True, cmap=\"viridis\", annot_kws={\"size\": 14}, vmin=-1, vmax=1, cbar=cbar)\n", + " ax = plt.gca()\n", + " if mask:\n", + " sns.heatmap(test_results.fillna(0), mask=test_results.fillna(0)!=0, cmap=\"Greys\", annot=False, ax=ax, cbar=False)\n", + "\n", + " #ax.set_title(\"P-values of features leading to process discovery metrics\", fontsize=15)\n", + " cax = ax.figure.axes[-1]\n", + " cax.tick_params(labelsize=14)\n", + " \n", + " if not ylabels:\n", + " ax.axes.get_yaxis().set_visible(False)\n", + "\n", + " plt.yticks(fontsize=16)\n", + " plt.xticks(fontsize=16)\n", + " plt.xticks(rotation=-30)\n", + "\n", + " plt.tight_layout()\n", + " output_path = f\"../output/plots/pdm_{get_output_file_name(test, data_source, impute)}\"\n", + " print(output_path)\n", + " plt.savefig(output_path, dpi=300)\n", + "\n", + "masked_results = statistical_test(DATA_SOURCE+\"_feat\", DATA_SOURCE+\"_bench\", TEST, IMPUTE)\n", + "plot_stat_test(masked_results, DATA_SOURCE+\"_feat\", DATA_SOURCE+\"_bench\", TEST, IMPUTE, cbar=False, ylabels=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 65, + "id": "97bbee94", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BaselineED\n", + "../output/plots/pdm_kendalltau_BaselineED_nanDropped\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_stat_test(masked_results, DATA_SOURCE+\"_feat\", DATA_SOURCE+\"_bench\", TEST, IMPUTE, ylabels=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 66, + "id": "a1af3f92", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "BaselineED\n", + "../output/plots/pdm_kendalltau_BaselineED_nanDropped\n" + ] + }, + { + "data": { + "image/png": "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cIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwhhAEAcIQQBgDAEUIYAABHCGEAABwh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9eafVZe7v8K85hhvulZR6enpetNNN9m5s57Cdd25c6eed955GhQUpB999FGx7VXZypUrtU6dOtqoUSP9+eef7euHK//bb7+tcXFxGh8f79d1UZj3ZUxPT9dx48ZpZGSk7UP3/pxxxhm6bNmy8qvQUdq4caM+9dRTetttt9l+L5/PpzNmzNCoqCht27atPckUPbls27ZNe/To4XdR6+nXr58aY/T1119X1ar9eaioY3DRRRfZgYEBAQHatWtXXbhwYeVUqgSu6ukylGpincuqwkPYk5SUpPXr19cePXpoSEiIxsTE2PWSPd6d4OrVq7V79+4aGBiovXr10o0bN9p9du3aZZc4PFSAVRcfffTRIUeVf/zxxxoREaHx8fF2rdWi+8ydO1cbNGig7du3L3EO8a5du3TDhg36yy+/lNiU7VJ2drYdjBcXF6fjxo3TvXv3lriv98XauXOnXnDBBWqM0REjRti+okMFzYgRI9SYgoXkL730Up0zZ47OmzdPL7nkEjXGaNeuXavEym1e+VetWqUXXnihBgcH60MPPVTivgcPHtSnnnpKjTHarVs3+/lRLRij0aFDB42NjbV97FU5hAsrr2Pw8MMP23ESo0aN0lNPPdVeeN18883Ovwc1pZ6F1cQ6H41KCeHFixfbg+Utbfb222/bJuWiVy8PPPCABgUFaY8ePewQ9dzcXLtfSkqKNmzYUOvWret3F1VYde4n2LVrlw2bMWPGlLjPjh079Oqrr1ZjjN52221+9V2+fLnee++92rRpUxtyLVu21LFjx1a5k/KECRM0MDBQjTE6fvz4Yv0/hZuoJ02apJGRkdquXbti65MXduDAAX3xxRftZ+7ZZ58t1n1x1VVXqTFGJ02apKruw8rn8+nTTz+txhjt0aOHrlu3TlWLfzdWrFihycnJGhISom+++aaq/nmMUlJStEGDBtq2bVvbTF+dHMsxUC24sIuNjdXg4GC/tQamT5+uycnJakzBusWuB/rUlHoWVhPrfKQq7U743//+txpjtF27dsUW61AtPuimXr16+uabb9rXC++bmppqm6W9vgYvhPbt2+f3cIDqxufz2WN1yimn6JYtW1TV/8Oal5enb775ptapU0fbt2/v91SSdevWaWJior3g6dy5s/bs2VNDQkLUGKMnnXSSLliwoNLrVZrffvtN7777br95z0VDc8mSJXr6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bVHww/nHP/5hh/AbY7RXr15+z+msKb799luNjIzUYcOG6bRp0+w84rZt2+ratWsP+cSX6mz//v226c4Yo2eddZa+8sorunz5cl2zZo3r4lWK1NRUvfrqqzU8PFyNMRoZGakdO3bUTz75pFp2vxzK4erpnbe+//57+3nwBld5d307d+7UYcOGaUBAgG2Gzs7O1scff1wfe+wxVa1aLUSl1dmr79q1a7V169YaHR2tb7/9th2k6t3FelOfVFVjY2M1KSnJthzNnj1bjSmYZx8UFKTBwcF+sybS0tL0448/PuLyHpchnJ2drcOHD9fzzz/f3u3m5eXp3r177bKPH374oX29MJ/Ppy+++KKGhYXpmWee6ddEsWLFCr/R1FFRUYdcGKKq++mnn2wzyuWXX15tR4OXlXfS8KbidOzYUU844QQ1pmDBE29wx/EUvkV98803et5559mTVZ06dXT48OGui1WpvP68yy+/XK+66qpqMxPgaHn1HDx4cIn19NZi9h5xWfimYurUqRodHa2dOnXyCyfVqr3IUWl1XrlypdavX1+7dOli+4cXLVqkp5xyij23jxkzRidNmmSnPXrWr1+v1113ndaqVUuDgoI0Li7usHOOS3NchrDH688tfCDOPvtsNebPRQiKXvVu3brVPqXp9ttv99vmrWXav39/vemmm+yIunbt2lWpvpGjMXfu3Go7ArY8eKPnvT9XX311lXu0Y0VbtGiRTpkyRR955BHbGlIVT6oVKSsrq0rdzVWUwvX0fsfeansJCQl2Py+EV61apX379tXQ0FB97LHH7OvVqeWvpN+t9zjcLl26FNt/6tSptjuyVq1aGhAQYB8P6tX7ww8/tNu9c8fFF19cpmcTHJchXFJ/cX5+vubl5dlVVSZMmGC3eSNnd+3aZdv469ev79fE8NVXX9n1rL2FK7777ju98MILtXv37tViMYvS1IQTUEny8vL0tttu03r16uno0aOrbR8/cDS877vP59O4uDg1xtgpfF4zdG5urj722GMaGhqq/fv311WrVvn92+osLS1NExISNDExUVNSUtTn8/nNoCj8AIlWrVrZsUGqBVO2vMGckyZN0g8++MBOayq6pv2ROC5DuDRLly7VhIQErVOnjt+gGy+gY2NjNTQ0VCdOnOj37wYNGqTGFKwuVfROaePGjVXmgeAom71799qr2Jp2F4iay1u6tlOnTvY17/O/aNEi201zPA1Q9Jaj9PqBn3rqKbvN5/P5tQxu3rxZ58yZ47fGxL/+9a9id9EpKSk6b9487oSPRG5urj7xxBO2CaFz5856+eWX2yuZ2NhYHT16tN8vYvr06RoaGqrNmze3z6n13gsAqrOPPvrIDjL17oLT0tJ01KhRGhAQoFdddZUdXXw83AV7li1bZh/feeutt+rWrVsP+282btxouyG9J/Ida3dejQthz7fffqs9evTQwMBAjYiIsKtkTZs2zW9u8B9//GGXZXvyySe54wVw3Js1a5Y2a9ZMmzdvbufPH4/mzp1rV8Rr2bKljhkzRtesWaPLli3T3NzcYhcdXnem98zy8lDjQrhof/HXX3+tixcv1u+//77EhT8mTpyoxhjt3r17tR18BQBHau/evXbxnnvuucc+x/d4ugsu7MCBA3rnnXfavvGQkBA98cQT/Vo9Vf8czFW7dm1dsWKFqpbPKmFBUsMEBASIiEheXp4EBgbKmWeeWWwfVRVjjGzbtk3effddCQgIkJEjR0pCQkJlFxcAKlW9evVk3LhxEh8fL+eff77Url3bnhOPR+Hh4fL444/LyJEjZd68efLbb79Jfn6+tGvXzu7j8/lk7NixIiJy8803y0knnSSqKoGBgcf8842q6jG/y3Fq5cqV0qtXL0lMTJT33ntP4uPjJT8/3wY5AOD45fP5JCgoSKZPny5DhgyRpKQk+eGHHyQqKqrcsoA0KUVwcLDs379fUlJSJD09XUQK7qS5bgGA419QUJDs3r1bHn74YRERueeeeyQqKkry8vLK7WaMEC5FfHy8DBs2TLZv3y4XX3yxTJkyRQ4ePHjcNssAAPx9//33smbNGunQoYNce+21IiLl2hpKc/Rh5OTkyP333y9PPPGEiIg88cQTcuONN0pYWJjjkgEAKsOSJUtERKRTp062ibq8EMKlKNzmv3LlShk3bpxcfPHFcskllzguGQDgeEAIH0Z+fr6I/Nn8kJubK8HBwS6LBAA4ThDCR4hR0QCA8kYIAwDgCLd2AAA4QggDAOAIIQwAgCOEMAAAjhDCAAA4QggDAOAIIQwAgCOEMAAAjhDCAAA4QggDAOAIIQwAgCOEMAAAjhDCAAA48v/eTYgEw1ao6gAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_stat_test(masked_results, DATA_SOURCE+\"_feat\", DATA_SOURCE+\"_bench\", TEST, IMPUTE, ylabels=False, cbar=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 67, + "id": "8065ff6f", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "kendalltau BaselineED\n", + "Path: ../data/BaselineED_feat.csv\n", + "Path: ../data/BaselineED_bench.csv\n", + "Imputed dataset: (20, 26)\n", + "No nan's dataset: (14, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (14, 8) (14, 16)\n", + "Direct kendalltau BaselineED_feat\n", + "BaselineED\n", + "../output/plots/pdm_kendalltau_BaselineED_nanDropped\n", + "kendalltau GenBaselineED\n", + "Path: ../data/GenBaselineED_feat.csv\n", + "Path: ../data/GenBaselineED_bench.csv\n", + "Imputed dataset: (24, 26)\n", + "No nan's dataset: (19, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (19, 8) (19, 16)\n", + "Direct kendalltau GenBaselineED_feat\n", + "GenBaselineED\n", + "../output/plots/pdm_kendalltau_GenBaselineED_nanDropped\n", + "kendalltau GenED\n", + "Path: ../data/GenED_feat.csv\n", + "Path: ../data/GenED_bench.csv\n", + "Imputed dataset: (441, 26)\n", + "No nan's dataset: (285, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (285, 8) (285, 16)\n", + "Direct kendalltau GenED_feat\n", + "GenED\n", + "../output/plots/pdm_kendalltau_GenED_nanDropped\n", + "pearsonr BaselineED\n", + "Path: ../data/BaselineED_feat.csv\n", + "Path: ../data/BaselineED_bench.csv\n", + "Imputed dataset: (20, 26)\n", + "No nan's dataset: (14, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (14, 8) (14, 16)\n", + "Direct pearsonr BaselineED_feat\n", + "BaselineED\n", + "../output/plots/pdm_pearsonr_BaselineED_nanDropped\n", + "pearsonr GenBaselineED\n", + "Path: ../data/GenBaselineED_feat.csv\n", + "Path: ../data/GenBaselineED_bench.csv\n", + "Imputed dataset: (24, 26)\n", + "No nan's dataset: (19, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (19, 8) (19, 16)\n", + "Direct pearsonr GenBaselineED_feat\n", + "GenBaselineED\n", + "../output/plots/pdm_pearsonr_GenBaselineED_nanDropped\n", + "pearsonr GenED\n", + "Path: ../data/GenED_feat.csv\n", + "Path: ../data/GenED_bench.csv\n", + "Imputed dataset: (441, 26)\n", + "No nan's dataset: (285, 26)\n", + "FT_COL: ['log', 'ratio_variants_per_number_of_traces', 'ratio_most_common_variant', 'ratio_top_10_variants', 'epa_normalized_variant_entropy', 'epa_normalized_sequence_entropy', 'epa_normalized_sequence_entropy_linear_forgetting', 'epa_normalized_sequence_entropy_exponential_forgetting']\n", + "M_COL: ['log', 'fitness_heu', 'precision_heu', 'fscore_heu', 'size_heu', 'cfc_heu', 'fitness_ilp', 'precision_ilp', 'fscore_ilp', 'size_ilp', 'cfc_ilp', 'fitness_imf', 'precision_imf', 'fscore_imf', 'size_imf', 'cfc_imf']\n", + "BaselineED (285, 8) (285, 16)\n", + "Direct pearsonr GenED_feat\n", + "GenED\n", + "../output/plots/pdm_pearsonr_GenED_nanDropped\n" + ] + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "TESTS=['kendalltau', 'pearsonr']\n", + "DATA_SOURCES = ['BaselineED', 'GenBaselineED', 'GenED']\n", + "\n", + "for test in TESTS:\n", + " for data_source in DATA_SOURCES:\n", + " cbar = True if data_source == 'GenED' else False\n", + " ylabels = True if data_source == 'BaselineED' else False\n", + " print(test, data_source)\n", + " masked_results = statistical_test(data_source+\"_feat\", data_source+\"_bench\", test, IMPUTE)\n", + " plot_stat_test(masked_results, data_source+\"_feat\", data_source+\"_bench\", test, IMPUTE, cbar=cbar, ylabels=ylabels)\n", + " plt.clf()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "52c58c64", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3717a694", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c6afe4d9", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "tag", + "language": "python", + "name": "tag" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.16" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}