From b26b0cf4b3296efdb401e04e32b5860958cf6164 Mon Sep 17 00:00:00 2001 From: jaberkow Date: Mon, 14 Dec 2020 18:16:33 -0800 Subject: [PATCH] added documentation to detection_utils --- LICENSE | 2 +- detection_utils.py | 34 ++++++++++++++++++++++---- hypothesis_test.ipynb | 55 ++++++++++++++++++++----------------------- 3 files changed, 57 insertions(+), 34 deletions(-) diff --git a/LICENSE b/LICENSE index 261eeb9..8d789bb 100644 --- a/LICENSE +++ b/LICENSE @@ -186,7 +186,7 @@ same "printed page" as the copyright notice for easier identification within third-party archives. - Copyright [yyyy] [name of copyright owner] + Copyright 2020 IQT Labs LLC, All Rights Reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. diff --git a/detection_utils.py b/detection_utils.py index 2ba2801..f69d1d1 100644 --- a/detection_utils.py +++ b/detection_utils.py @@ -5,7 +5,21 @@ def MMD_test(source_data,target_data,p_val=0.05,preprocess_kwargs={},chunk_size=100, n_permutations=20): """ - Functional wrapper around alibi_detect MMDDrift class, uses gaussian kernel + Functional wrapper around alibi_detect MMDDrift class that uses uses gaussian kernel + (https://docs.seldon.io/projects/alibi-detect/en/stable/api/alibi_detect.cd.mmd.html) + + + Inputs: + source_data - numpy.ndarray of shape (number of source samples,embedding dimension), + samples from the source distribution + target_data - numpy.ndarray of shape (number of target samples,embedding dimension), + samples from the target distribution + p_val - p-value used for the significance of the permutation test. + preprocess_kwargs - Kwargs for a preprocessing function, pass callables under "model" key + chunk_size - Chunk size if dask is used to parallelise the computation. + n_permutations - Number of permutations used in the permutation test. + Outputs: + p - float, empirical p-value determined using the permutation test """ source_size,source_dim = np.shape(source_data) target_size,target_dim = np.shape(target_data) @@ -24,8 +38,20 @@ def MMD_test(source_data,target_data,p_val=0.05,preprocess_kwargs={},chunk_size= def repeated_MMD_test(source_data,target_data,p_val=0.05,preprocess_kwargs={},chunk_size=100, n_permutations=20,n_samples=100,n_splits=5): """ - Repeatedly carry out the MMD test, subsampling the data each time. Returns mean and standard - deviation of the p_values + Repeatedly carry out the MMD test, subsampling the data each time. Returns an array of p-values + Inputs: + source_data - numpy.ndarray of shape (number of source samples,embedding dimension), + samples from the source distribution + target_data - numpy.ndarray of shape (number of target samples,embedding dimension), + samples from the target distribution + p_val - p-value used for the significance of the permutation test. + preprocess_kwargs - Kwargs for a preprocessing function, pass callables under "model" key + chunk_size - Chunk size if dask is used to parallelise the computation. + n_permutations - Number of permutations used in the permutation test. + n_samples - number of samples to use from the source and target data in each subsampling + n_splits - number of different subsamplings to carry out + Outputs: + p_array - np.ndarray of shape (n_splits,), the set of p-values computed """ source_size,source_dim = np.shape(source_data) target_size,target_dim = np.shape(target_data) @@ -38,7 +64,7 @@ def repeated_MMD_test(source_data,target_data,p_val=0.05,preprocess_kwargs={},ch preprocess_kwargs=preprocess_kwargs,n_permutations=n_permutations) p_list.append(p_temp) p_array = np.array(p_list) - return np.mean(p_array),np.std(p_array) + return p_array diff --git a/hypothesis_test.ipynb b/hypothesis_test.ipynb index ebfbd4e..8414d57 100644 --- a/hypothesis_test.ipynb +++ b/hypothesis_test.ipynb @@ -36,7 +36,6 @@ "source": [ "# Change this component to the root of the VOiCES dataset\n", "DATASET_ROOT = '/Users/jberkowitz/Datasets/VOiCES_devkit'\n", - "#DATASET_ROOT = '/mnt/fs03/shared/datasets/VOiCES_devkit'\n", "# Convenience function to add root to data path\n", "add_root = lambda x: os.path.join(DATASET_ROOT,x)" ] @@ -3967,7 +3966,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 96, "metadata": {}, "outputs": [], "source": [ @@ -3988,42 +3987,40 @@ " temp_model = w2v_uae\n", " else:\n", " temp_model = trill_uae\n", - " p_mean,p_std= detection_utils.repeated_MMD_test(source_data,target_data,preprocess_kwargs={'model':temp_model,'batch_size':128},n_permutations=100,n_samples=50,n_splits=10)\n", - " res = {'distractor':distractor_type,'embedding':embedding_type,'p value':p_mean,'p error':p_std}\n", - " res_list.append(res)" + " p_array = detection_utils.repeated_MMD_test(source_data,target_data,preprocess_kwargs={'model':temp_model,'batch_size':128},n_permutations=100,n_samples=50,n_splits=10)\n", + " for p in p_array:\n", + " res = {'distractor':distractor_type,'embedding':embedding_type,'p value':p}\n", + " res_list.append(res)" ] }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 97, "metadata": {}, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ - " distractor embedding p value p error\n", - "0 none w2v_mean 0.518 0.302185\n", - "1 none w2v_pca 0.612 0.252460\n", - "2 none trill_mean 0.419 0.287453\n", - "3 none trill_pca 0.452 0.281950\n", - "4 musi w2v_mean 0.001 0.003000\n", - "5 musi w2v_pca 0.139 0.152476\n", - "6 musi trill_mean 0.000 0.000000\n", - "7 musi trill_pca 0.184 0.221142\n", - "8 tele w2v_mean 0.001 0.003000\n", - "9 tele w2v_pca 0.319 0.211587\n", - "10 tele trill_mean 0.157 0.253576\n", - "11 tele trill_pca 0.246 0.277712\n", - "12 babb w2v_mean 0.000 0.000000\n", - "13 babb w2v_pca 0.070 0.115672\n", - "14 babb trill_mean 0.000 0.000000\n", - "15 babb trill_pca 0.021 0.046787" + " distractor embedding p value\n", + "0 none w2v_mean 0.41\n", + "1 none w2v_mean 0.31\n", + "2 none w2v_mean 0.38\n", + "3 none w2v_mean 0.53\n", + "4 none w2v_mean 0.88\n", + ".. ... ... ...\n", + "155 babb trill_pca 0.00\n", + "156 babb trill_pca 0.05\n", + "157 babb trill_pca 0.00\n", + "158 babb trill_pca 0.07\n", + "159 babb trill_pca 0.01\n", + "\n", + "[160 rows x 3 columns]" ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
distractorembeddingp valuep error
0nonew2v_mean0.5180.302185
1nonew2v_pca0.6120.252460
2nonetrill_mean0.4190.287453
3nonetrill_pca0.4520.281950
4musiw2v_mean0.0010.003000
5musiw2v_pca0.1390.152476
6musitrill_mean0.0000.000000
7musitrill_pca0.1840.221142
8telew2v_mean0.0010.003000
9telew2v_pca0.3190.211587
10teletrill_mean0.1570.253576
11teletrill_pca0.2460.277712
12babbw2v_mean0.0000.000000
13babbw2v_pca0.0700.115672
14babbtrill_mean0.0000.000000
15babbtrill_pca0.0210.046787
\n
" + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
distractorembeddingp value
0nonew2v_mean0.41
1nonew2v_mean0.31
2nonew2v_mean0.38
3nonew2v_mean0.53
4nonew2v_mean0.88
............
155babbtrill_pca0.00
156babbtrill_pca0.05
157babbtrill_pca0.00
158babbtrill_pca0.07
159babbtrill_pca0.01
\n

160 rows × 3 columns

\n
" }, "metadata": {}, - "execution_count": 88 + "execution_count": 97 } ], "source": [ @@ -4033,15 +4030,15 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 101, "metadata": {}, "outputs": [ { "output_type": "display_data", "data": { "text/plain": "
", - "image/svg+xml": "\n\n\n\n \n \n \n \n 2020-12-14T00:46:48.592307\n image/svg+xml\n \n \n Matplotlib v3.3.1, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAGkCAYAAABkRsxKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/d3fzzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAsm0lEQVR4nO3deUCVdb7H8c+Rgyg6JMqmqXVTxwW1HMdEMykySQK3a2ob1Silac61stS01KxsUmlsc2l3MM0iFE1Ac1pm4GZyHRXK3M2lAMUgkPVw7h9O58Y19fjj4SD2fv3Fc87vfJ/vw5yGj8/y+9mcTqdTAAAABhrUdQMAAKD+IkgAAABjBAkAAGCMIAEAAIwRJAAAgDGCBAAAMEaQAAAAxggSAADAGEECAAAYI0gAAABjBAkAAGCMIAEAAIwRJAAAgDGCBAAAMEaQAAAAxggSAADAGEECAAAYI0gAAABjBAkAAGCMIAEAAIwRJAAAgDGCBAAAMEaQAAAAxggSAADAmL2uG6jPSgtPqqLklCW1vBv7qpGfvyW1AADwFIJEDVSUnNKOVa9aUqv7qAcJEgCAeodLGwAAwBhBAgAAGPNokEhOTlZUVJQGDhyohISEM97fv3+/7r77bg0ePFhjxoxRQUGBJ9sDAAAXyGNBIicnR/Hx8VqxYoWSkpK0atUq7d271/W+0+nU+PHjFRcXp7Vr16pz585aunSpp9oDAAAGPBYk0tPTFRYWpmbNmsnX11eRkZFKSUlxvZ+dnS1fX1/1799fkjRu3DjdeeednmoPAAAY8NhTG7m5uQoMDHRtBwUFaceOHa7t7777TgEBAZo+fbq++eYbXXXVVZo5c6bb9bOzs1VaWmppz+cT4tdYeXl5ltQqLCzQ7iM/WFILAC51PXv2rOsW8G8eCxJVVVWy2WyubafTWW27srJSW7Zs0d/+9jd169ZNL774oubNm6d58+a5VT80NNTyns/np5yj1cJRTfj5XabLO3SxpBYAAJ7isUsbISEh1f71npeXp6CgINd2YGCgrrjiCnXr1k2SFB0dXe2MBQAAuPh4LEj07dtXGRkZys/PV0lJidLS0lz3Q0hSjx49lJ+fr127dkmSNm/eXCdnGQAAgPs8dmkjODhYkydPVmxsrCoqKjRixAh1795dcXFxmjRpkrp166ZXXnlFM2bMUElJiUJCQvSXv/zFU+0BAAADNqfT6azrJuqrn3KOWjpF9u+CL7ekFgAAnsLMlgAAwBhBAgAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgzF7XDXha/o/FKious6RWU1VaUgcAgPrqNxckiorLtHDxRktqPTH2WkvqAABQX3FpAwAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxjwaJ5ORkRUVFaeDAgUpISDjj/Zdfflk33nijhgwZoiFDhvzqGAAAcPHw2OOfOTk5io+PV2Jioho2bKjRo0erd+/eat++vWtMVlaWFi5cqB49eniqLQAAUAMeOyORnp6usLAwNWvWTL6+voqMjFRKSkq1MVlZWVqyZIliYmI0Z84clZVZM3EUAACoHR4LErm5uQoMDHRtBwUFKScnx7VdXFyszp07a8qUKfroo49UWFioV1991VPtAQAAAx67tFFVVSWbzebadjqd1babNGmiZcuWubb/9Kc/afr06Zo8ebJb9bOzs1VaWnrecT6+zXX8+PEL6PzsKh2VysvLs6RWYWGBdh/5wZJaAHCp69mzZ123gH/zWJAICQnR1q1bXdt5eXkKCgpybR87dkzp6ekaMWKEpNNBw253v73Q0FC3xn13NF8BAQFu1z0Xu5e92lmWmvDzu0yXd+hiSS0AADzFY5c2+vbtq4yMDOXn56ukpERpaWnq37+/6/1GjRrphRde0OHDh+V0OpWQkKCbb77ZU+0BAAADHgsSwcHBmjx5smJjYzV06FBFR0ere/fuiouL086dO9W8eXPNmTNH48eP1y233CKn06n77rvPU+0BAAADNqfT6azrJjzpu6P5lq7+uXvN65bU6j7qQf0u+HJLagEA4CnMbAkAAIwRJAAAgDGCBAAAMEaQAAAAxggSAADAGEECAAAYI0gAAABjBAkAAGCMIAEAAIwRJAAAgDGCBAAAMEaQAAAAxggSAADAGEECAAAYI0gAAABjBAkAAGCMIAEAAIwRJAAAgDGCBAAAMEaQAAAAxggSAADAGEECAAAYI0gAAABj9rpuANY7dTJfZUXFltTyadpEvv7NLakFALj0ECQuQWVFxfps0UJLaoVPepggAQA4Ky5tAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgjCABAACMESQAAIAxggQAADBGkAAAAMYIEgAAwBhBAgAAGCNIAAAAYwQJAABgzF7XDeC0kgZSwYmjltTycVRYUgcAgPMhSFwkSipKtfiTty2pNem6WEvqAABwPlzaAAAAxggSAADAGEECAAAYI0gAAABjBAkAAGCMIAEAAIx5NEgkJycrKipKAwcOVEJCwlnHffrpp4qIiPBgZwAAwITH5pHIyclRfHy8EhMT1bBhQ40ePVq9e/dW+/btq407fvy4nn/+eU+1BQAAasBjZyTS09MVFhamZs2aydfXV5GRkUpJSTlj3IwZMzRx4kRPtQUAAGrAY0EiNzdXgYGBru2goCDl5ORUG/Puu++qS5cuuvrqqz3VFgAAqAGPXdqoqqqSzWZzbTudzmrbu3fvVlpamt5++2398MMPF1w/OztbpaWl5x3n49tcx48fv+D6v6bSUam8vDxLaoVUVirPqr4qK3U8z5pahYUF2p+Za0ktALBKz54967oF/JvHgkRISIi2bt3q2s7Ly1NQUJBrOyUlRXl5efrP//xPVVRUKDc3V3fccYdWrFjhVv3Q0FC3xn13NF8BAQEX1vxZ2L3s1c6y1KiW3a5Aq/qy2xUQaE0tP7/LdEVoG0tqAQAuPR67tNG3b19lZGQoPz9fJSUlSktLU//+/V3vT5o0SampqVqzZo2WLl2qoKAgt0MEAACoGx4LEsHBwZo8ebJiY2M1dOhQRUdHq3v37oqLi9POnTs91QYAALCQR5cRj4mJUUxMTLXXli1bdsa41q1ba/PmzZ5qCwAAGGJmSwAAYIwgAQAAjBEkAACAMYIEAAAwRpAAAADGCBIAAMAYQQIAABgjSAAAAGMECQAAYIwgAQAAjBEkAACAMYIEAAAwRpAAAADGCBIAAMAYQQIAABgjSAAAAGMECQAAYIwgAQAAjBEkAACAMYIEAAAw5naQKCgo0NKlSzV16lSdOHFCKSkp2rdvX232BgAALnJuBYkDBw5o0KBB+vDDD7Vu3TqdOnVKaWlpGjFihP7nf/6ntnsEAAAXKbeCxHPPPafIyEilpqbK29tbkjR//nzdcsstWrBgQa02CAAALl5uBYnt27frrrvuqv7BBg10//336+uvv66VxgAAwMXP7u7AsrKyM147ceKEGjZsaGlDAACYyv+xWEXFZ/69qqmmTXzUvFkTy+teCtwKEhEREXrxxRcVHx/veu3w4cN69tlndcMNN9RWbwAAXJCi4jItXLzR8roPj7u5xkHi5Zdf1oYNGyRJ4eHheuyxx6xorc65dWlj2rRpKigoUO/evVVSUqLbbrtNAwcOVMOGDfX444/Xdo8AANRr6enp+sc//qGPPvpISUlJys7O1saN1geeuuDWGQk/Pz+tWrVK6enp+uabb+Tt7a0OHTqoT58+td0fAAD1QkxMjF588UW1a9dOjzzyiJo2barZs2dr27Zteu211zR16lTX7QDt2rXTsWPH9Nxzzyk4OFh/+tOfJEkPPfSQBg8erJtvvvlX9/HSSy/p2LFjOnjwoPLz8zV+/HhlZGRo+/bt6tSpk+Lj42Wz2bR06VJt2LBBDodD/fr105QpU2Sz2RQfH6+MjAwVFBQoKChI8fHxCggIUL9+/RQZGanMzEx5eXnpxRdfVJs2bdw67guakKpv374aM2aMYmNjCREAAPxCeHi4MjIyJEm7d+92TY/wxRdfaNCgQbrmmmskSQcPHtSGDRsUHh6uIUOGaN26dZKkoqIibdu2TeHh4efcz+7du7V8+XI9/fTTmjZtmuLi4rRu3Tp9/fXX+vbbb/X5558rKytLH3zwgZKSkpSTk6O1a9fq0KFD2r9/v1auXKnU1FS1bNlSa9eulSTl5eWpT58+SkpKUq9evZSQkOD2cbt1RiI0NFQ2m+2s72dlZbm9QwAALkXh4eF6++23FRYWpvbt22v//v06ceKEPv/8cy1atEiStGfPHj3wwAN67LHHdOWVV0qSysvLdejQIW3btk0RERHnfYjhuuuuk91uV6tWrRQYGKj27dtLkoKDg1VQUKCMjAzt2LFDw4cPlySVlpaqVatWGjJkiB5//HGtXr1aBw4c0L/+9S+1bdvWVff666+XJHXo0EFbt251+7jdChJPP/10tSBRWVmpgwcPKikp6ZK5WQQAgJro0aOHpk6dqvT0dF177bVq0aKFUlJSVFlZqVatWikzM1OTJk3S9OnTdeutt7o+N3jwYH388cfatm2b7r///vPu5+f5nCTJbj/zz7jD4dA999yj++67T5JUWFgoLy8vZWVl6ZFHHtG9996ryMhINWjQQE6n0/U5Hx8fSZLNZqv2+vm4FSR+TjX/X2hoqD744AMNGTLE7R0CAFBbmjbx0cPjfv3+gprWPR+73a7u3btr+fLlWrx4sQIDAzV79mwNHz5c33//vSZMmKD4+Pgzbg2IiYnR/fffr/LycvXs2bPGvYaFhWnRokUaOXKkfHx8NGHCBA0bNkwFBQW69tprdfvtt+vkyZP69NNPNXDgwBrvz+15JH7N1VdfrWnTptW4CQAArNC8WZM6ne8hPDxcX331ldq1a6fAwECdOHFCN9xwg9544w2VlZVp3rx5rrGjR4/W7bffrpYtW8rf3189evQ4520E7oqIiNCuXbs0cuRIORwOXX/99Ro2bJhyc3M1ceJExcTESJK6du2qI0eO1Hh/NueFnL/4hbKyMi1atEgpKSn65JNPatyIp3x3NN+yZ4yfGHutdq953ZJarUf8SYs/eduSWpOui9WXr71qSa3wSQ/L3807dwEAvz3GN1s6HA7ZbDbNmjWrNvoCAOA36e2339ZHH310xutBQUFatmxZHXR0bkY3W0qnb/a4+uqr3X7OFAAAnN+9996re++9t67bcFuNbrYEAAC/bWcNEjNnznS7yNNPP21JMwAAoH45a5A4ePCgB9sAAAD10VmDxPLlyz3ZBwAANVZaeFIVJacsr+vd2FeN/PxrVONSXf3T7Xkk8vPzdeDAAVVVVUmSnE6nysvLtXPnTo0fP77WGgQAwF0VJae0Y5U1j7//UvdRD9YoSPxy9U+bzaaxY8dq48aNZ12cqz5xK0gkJSXpySefVHl5uWvqzJ+f4mjbti1BAgDwm+fJ1T/37dunkydPatSoURo7dqzKyso0e/ZsZWZmytvbWw8++KCioqK0YcMGvfXWWyotLVV5ebmeffZZ/eEPf7D0uN1a/XPx4sUaOnSoNm7cKD8/PyUmJmrp0qVq2bKlHnjgAUsbAgCgPvLU6p9ZWVl66623lJiYqFWrVik7O1vLly/XqVOnXMHhlVdeUXl5uVauXKnFixdr7dq1Gjt2rJYuXWr5cbt1RuLIkSN67bXX1KZNG3Xq1Em5ubm64YYb9MQTT+ill17i8VDgN8TKa9BWXHcGLhaeWv0zOjpaTZqcngY8IiJC//3f/62vvvpKI0eOVIMGDRQYGKj169dLkl555RVt3rxZBw4c0JYtW9SggVvnDy6IW0GicePGrp1fccUV2r17t2644QZ17txZhw4dsrwpABcvK69B1/S6M3Ax8dTqn15eXq6fq6qq5OXlJbvdXm3iyEOHDqlFixYaMWKEBg8erF69eqljx45KSEiw9qDl5qWNHj16uBYc6dKli/7+979LkrZv3+5KRQAA/Jb9cvXPa6+9VmFhYVq8eLHCw8Ndq3/Onz+/WoiQTt9b8fHHH+vQoUNurf65adMmlZeXq6CgQH//+9/Vr18/9erVSx9//LGcTqdOnDihu+66S19//bVsNpvGjRun3r17a+PGjXI4HNYftzuDHn74YY0ZM0Zt27bV6NGjtWTJEvXu3VvFxcWKjY21vCkAAOojT6z+6ePjozvuuENFRUV64IEH1L59e7Vt21Zz587V4MGDJZ2eVLJnz57q3LmzBg0aJJvNpn79+ikzM9PyY3Z79c+SkhKVlJSoefPmysvLU1pampo3b65BgwZZ3lRtYvXPC8Pqn/j/fso5aumljd8FX25JLUC6uOeRsMJLL70k6fTTHRcLt85IPPbYYxo2bJj69OkjSQoMDNSdd95Zq40BAHChGvn5XxR/8GviXKt/du/evQ46Oje3gsTJkycVFxengIAADR48WEOGDFG7du1quzcAAH5z6tvqn27dbLls2TJ98cUXiouL05YtW3TrrbfqtttuU0JCgn788cdabhEAAFys3H6g1N/fX3feeadWrlypTZs2KSIiQgsXLlT//v3d3llycrKioqI0cODAX30EZePGjYqJidGtt96qqVOnqry83O3aAADA8y5oZgqHw6HPPvtMixYt0htvvKGmTZvqnnvuceuzOTk5io+P14oVK5SUlKRVq1Zp7969rvdPnTqlOXPm6K233tL69etVVlb2q9eIAADAxcOteyS++uorrVu3TqmpqSotLdWAAQP017/+VX379nXrURXp9IIlYWFhatasmSQpMjJSKSkpmjhxoiTJ19dXmzdvlre3t0pKSnTixAn5+fmZHRUAAPAIt4JEbGysevbsqUcffVS33HKLmjZtesE7ys3NVWBgoGs7KChIO3bsqDbG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\n" + "image/svg+xml": "\n\n\n\n \n \n \n \n 2020-12-14T17:48:08.125699\n image/svg+xml\n \n \n Matplotlib v3.3.1, https://matplotlib.org/\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n", + "image/png": "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zMzU9u3bFR8frxYtWigsLEyffPKJfH199cYbb+irr77Sn/70J61du1ZlZWUuf95OBYlWrVqpRYtzXTt16qQDBw5Ikrp3766jR4+6vCgAAJqa3r17a//+/fbVP/v27XvB6p/333+/Hn/8cY0aNcp+v/Orf3766acaPnx4nY9jMpnsX1utVplMJnl7eztMHHn06FGVlpbqrrvu0vHjx9W3b19NmDDBtU/4v5wKEr1797YvONKjRw/985//lCTt2rVLAQGeWxwFAIDG4qerf958882Kjo7W0qVLFRMTY1/985VXXnFYQlw6d23Fp59+qqNHjzq1+ueWLVt09uxZlZSU6J///KcGDhyovn376tNPP5XNZtPJkyd177336ptvvpGXl5cmTZqkfv36afPmzbJYLK5/3s50mj59uiZOnKiOHTtq3LhxWrZsmfr166eysjIlJCS4vCgAAJoid6z+6efnp9/+9rcqLS3VI488oi5duqhjx456/vnn7Uc05s6dqz59+qh79+6688475eXlpYEDByorK8vlz9mpINGtWzdt2bJFFRUVCgwM1Jo1a7Rp0ya1adNGd955p8uLAgDACJ9W/uo19rEGGdcZI0eO1MiRIyVJQUFB+uabbySdO7I/Z86cGu93Kdcb3nTTTfrd737ncJuvr68WLFhwQd9FixY5bNdWg1FOBYknn3xSo0aNUv/+/SVJYWFhGj9+vMuLAQCgPloGhdR74ihPq231z169enmgoto5FSSKi4uVmJio0NBQDR8+XCNGjFDnzp0bujY0EJ8WJocWANB4NLXVP5262HLFihX617/+pcTERG3btk2/+c1vdPfddyslJUWnTp1q4BLhav3aReiqwAD1axfh6VIAAE2cU0FCkkJCQjR+/HitWrXK/lnXRYsWadCgQQ1ZHxrAL1oHafQvO+sXrYM8XQoAoIlzeq0NSbJYLPrqq6/0ySefaOvWrQoMDHTqM68AAKB5cipIbN++XR9//LE2btyoyspKDRkyRH/60580YMAApz6qAgAAmiengkRCQoL69OmjJ554Qr/+9a8VGBjY0HUBAIAmwKkgsWnTJnXo0KGhawEAoF6Ky06prNL160kEtAxQSECwy8dtDpwKEoQIAEBTUFZZpjc+XerycScPm1RnkDhz5oxmzpypN954w+H2f/zjH9q7d69+//vfa/DgwXrnnXe0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DvsBAEDj47ZrJKRzH/9ctmyZqqurdddddykxMVGJiYmaOnWqevbsqf3792vOnDkqLS1VVFSUXnzxRQ5dAQDQiLk1SAAAgOaFmS0BAIBhBAkAAGAYQQIAABhGkAAAAIYRJAAnvPfee/ZZV+GcM2fOaPLkybX26dq1q5uquTx8/fXXmjBhgtP9Bw8erOPHj19w+8yZM5WamurK0tCMuW1CKqApu+eeezxdQpNTUlKiffv2eboMAA2MINFAvv76ay1btkwtW7bUd999p65du+qVV15RWlqa3n77bXl5eSkqKkpz585VQECABg4cqNjYWGVlZclkMum1115Thw4dtHv3br344ouqrKxUSEiI5s+frw4dOnj66TV6X3/9tZYuXSofHx8dP35cgwcPlr+/v7Zs2SJJWr58uW655RZ9++23kqTU1FRt27ZNCxcu1EsvvaR///vfatGihYYMGaIpU6boz3/+syTpd7/7nceeU1Pz/PPPKz8/X5MnT9Ydd9yhv/3tb7JarYqKitKzzz7rMBttWVmZFixYoJycHFksFiUmJiouLs6D1TddxcXFmjhxovLz89WrVy89++yzWrNmjT766CNVVFTIx8dHr776qq655hpJ0uuvv679+/fLz89P8+fPV7du3SRJn3/+uf7+97+rurpajz76qIYNG+bJp4VGjFMbDWjnzp165pln9Nlnn+nEiRNavXq1li5dqpUrVyotLU2tWrXS66+/LunclOH9+/fXunXr1LdvX6WkpOjs2bOaM2eOXn31Va1du1YPPPCA5s6d6+Fn1XTs2rVL8+fP14cffqiUlBS1adNGqamp6tq1qz755JOL3ic3N1dffvml1q9fr/fee08HDx5slKtANgVz5sxReHi4/t//+39as2aNVq1apY8++kht27bVW2+95dB3yZIlioqKUmpqqlJSUrR06VIdO3bMQ5U3bcePH9fcuXO1fv16lZWV6b333tOWLVu0cuVKffzxx7rtttuUkpJi79+pUyetW7dOjz32mGbOnGm/vaKiQmvWrNGbb76pP/zhDw5LGAA/xRGJBnTttdcqMjJSktS5c2eVlJToV7/61bklqSWNHTtWs2bNsve/9dZb7ffbsWOHjhw5omPHjunRRx+19yktLXXjM2jafvnLX+rKK6+UdG4Z8P79+0uS2rVrp9OnT1/0PhEREfLz89O4ceP0q1/9Sk888QTruNTT119/raNHj2rMmDGSpOrqavXo0cOhT3p6uiorK/Xhhx9KksrLy5WTk8PRNwNuuukmXX311ZKk+Ph4paam6tVXX9Unn3yiI0eO6F//+pe6d+9u73/33XdLkmJiYjRjxgz7z8aoUaPk7e2tiIgI3XDDDdq1a5eGDBni9ueDxo8g0YB++gfIy8tLQUFBDn/AbDabzGbzBf29vLxks9lktVrVvn17ffTRR5Iki8WiwsJCN1Xf9Pn4+Dhsm0ymC/qcX2X2/PfB29tb77//vrZt26Yvv/xS48aN08qVK91Sb3NlsVh05513as6cOZLOncawWCwOfaxWq15++WVFRUVJOrdoX+vWrd1ea3Pg7f1/v9ZtNptOnz6tsWPH6t5779WgQYMUGhrqcO3KT38ubDab/f4/vd1qtV7w8wScx6kNN9u6datOnTolSVqzZo369etXY99rrrlGJSUl9lVTP/zwQz3xxBPuKPOyEBISopycHNlsNm3dulWS9M033+jee+9V37599dRTT6lz5846fPiwhyttmry9vWU2m9WvXz9t3rxZJ0+elM1m07x58/S3v/3NoW90dLT9UzH5+fkaPny4fvjhB0+U3eRlZWXpxIkTslqtWrdunQYNGqROnTrp/vvvV8+ePbVlyxaHIJeWliZJ2rx5szp37ix/f39J0ieffCKbzabc3Fzt3btXPXv29MjzQePHEQk3CgwM1COPPKIJEyaourpaUVFRmj9/fo39fX199ac//UkvvPCCqqqqFBgYqJdeesmNFTdvjz/+uCZNmqTQ0FD16dNHxcXF6tGjh2644QbFxcWpVatWuvHGGzVo0CBlZ2d7utwmp23btmrXrp1eeOEFTZkyRffdd5+sVqu6d++uhx9+2KHvlClTNG/ePMXFxclisWjGjBnq2LGjhypv2rp06aLZs2eroKBA0dHRGjdunNLT0zVs2DDZbDb17dtXOTk59v5HjhzRiBEjFBAQoIULF9pv9/f31+jRo2U2m7VgwQK1adPGE08HTQCLdgEAAMM4tQEAAAwjSAAAAMMIEgAAwDCCBAAAMIwgAQAADCNIAAAAwwgSAADAMIIEAAAw7P8DChYCZ3N60D4AAAAASUVORK5CYII=\n" }, "metadata": {} } @@ -4051,7 +4048,7 @@ "g = sns.catplot(\n", " data=res_df, kind=\"bar\",\n", " x=\"distractor\", y=\"p value\", hue=\"embedding\",\n", - " ci=\"p error\", palette=\"dark\", alpha=.6, height=6\n", + " palette=\"dark\", alpha=.6, height=6\n", ")\n", "g.despine(left=True)\n", "g.set_axis_labels(\"\", \"p value\",fontsize=15)\n",