{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Replicability of functional connectivity-based multivariate BWAS - figures\n", "\n", "Plots from this notebook are saved into the directory `fig`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Imports" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "import math\n", "import numpy as np\n", "from scipy import stats\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n", "sns.set(rc={\"figure.figsize\":(3, 3)})\n", "sns.set_style(\"white\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Define Plotting function\n", "This function takes a dataframe created in the notebook `multivariate_BWAS_replicability_analysis.ipynb`\n", "and recreates the \"Replication plots\" from the target paper (Fig.4) for a given target variable and feature set." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "def plot(target, feature, df, alpha=0.05, cv_only=True, filetag=None, ylim=None, xlim=None):\n", " sns.set(rc={\"figure.figsize\":(3, 3)})\n", " sns.set_style(\"white\")\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " if not cv_only:\n", " sns.scatterplot(x='r_replication', y='r_discovery_overfit', hue='n', data=tmp, palette='Greens_r', linewidth=0, hue_norm=(0,tmp.n.max()*1.5))\n", " sns.scatterplot(x=[tmp.loc[tmp.n==200, 'r_replication'].mean()], y=[tmp.loc[tmp.n==200, 'r_discovery_overfit'].mean()], color='red')\n", " sns.scatterplot(x=[tmp.loc[tmp.n==tmp.n.max(), 'r_replication'].mean()], y=[tmp.loc[tmp.n==tmp.n.max(), 'r_discovery_overfit'].mean()], color='purple').set(title='Discovery without CV (overfit)')\n", " plt.axhline(0, color='gray')\n", " plt.axvline(0, color='gray')\n", " plt.axvline(0.088, linestyle='dotted')\n", " plt.axhline(0.088, linestyle='dotted')\n", " plt.axvline(0.088, linestyle='dotted')\n", " plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", " if ylim:\n", " plt.ylim(ylim)\n", " if xlim:\n", " plt.xlim(xlim)\n", " sns.despine()\n", " if filetag:\n", " plt.savefig('fig/overfit_scatter_' + target + '_' + feature + '_' + filetag + '.pdf')\n", " plt.show()\n", "\n", " for n in tmp.n.unique():\n", " tmp2 = tmp[tmp.n == n]\n", "\n", " if (tmp2['p_discovery_overfit']<alpha).sum() == 0:\n", " replication_prob = 'no discovery'\n", " else:\n", " # #(significant replications among significant discoveries) / # significant discoveries\n", " replication_prob = (tmp2.loc[tmp2['p_discovery_overfit']<alpha,'p_replication']<alpha).sum() / (tmp2['p_discovery_overfit']<alpha).sum() * 100\n", " print(\"Replication probability at n =\", n, ':', replication_prob, '%')\n", " \n", " sns.scatterplot(x='r_replication', y='r_discovery_cv', hue='n', data=tmp, palette='Greens_r', linewidth=0, hue_norm=(0,tmp.n.max()*1.5))\n", " sns.scatterplot(x=[tmp.loc[tmp.n==200, 'r_replication'].mean()], y=[tmp.loc[tmp.n==200, 'r_discovery_cv'].mean()], color='red')\n", " sns.scatterplot(x=[tmp.loc[tmp.n==tmp.n.max(), 'r_replication'].mean()], y=[tmp.loc[tmp.n==tmp.n.max(), 'r_discovery_cv'].mean()], color='purple').set(title='Discovery with CV')\n", " plt.axhline(0, color='gray')\n", " plt.axvline(0, color='gray')\n", " plt.axhline(0.088, linestyle='dotted')\n", " plt.axvline(0.088, linestyle='dotted')\n", " plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", " if ylim:\n", " plt.ylim(ylim)\n", " if xlim:\n", " plt.xlim(xlim)\n", " sns.despine()\n", " if filetag:\n", " plt.savefig('fig/scatter_' + target + '_' + feature + '_' + filetag + '.pdf')\n", " plt.show()\n", "\n", " for n in tmp.n.unique():\n", " tmp2 = tmp[tmp.n == n]\n", "\n", " if (tmp2['p_discovery_cv']<alpha).sum() == 0:\n", " replication_prob = 'no discovery'\n", " else:\n", " # #(significant replications among significant discoveries) / # significant discoveries\n", " replication_prob = (tmp2.loc[tmp2['p_discovery_cv']<alpha,'p_replication']<alpha).sum() / (tmp2['p_discovery_cv']<alpha).sum() * 100\n", "\n", " print(\"Replication probability at n =\", n, ':', replication_prob, '%')\n", "\n", " return {'r_rep_200': tmp.loc[tmp.n==200, 'r_replication'].mean(),\n", " 'r_rep_max': tmp.loc[tmp.n==tmp.n.max(), 'r_replication'].mean()}\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Possible targets:\n", "'age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj'\n", "## Possible features\n", "'netmats_parcor', 'netmats_pearson'" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cognitive ability, PCA+SVR, pearson correlation\n", "This basically reproduces Fig. 4 of the target paper with a highly similar methodology." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUkAAADlCAYAAADeIwWJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABX/klEQVR4nO2dd3zN1//Hn3dkJxKZMmy1R2K3qBFbImapVVur1VaXlJZS2lLqi0b9WkpbqvaOrXatorFCjZAdssjOvTm/PyKX23sTN4REnOfj4fHIPevzvjfXK2e8z/utEEIIJBKJRGIUZXEbIJFIJCUZKZISiURSAFIkJRKJpACkSEokEkkBSJGUSCSSApAiKZFIJAXwQovk5MmTCQoKKm4zio2RI0eyYcOGfOsDAwOZO3fuM7To6fPBBx+wZ8+eZ/7cjIwM3nzzTRo1asS7777L5s2bGT58eL7tQ0ND6d+//zO0UJIf6uI24GnRrl077ty5g0qlQqVSUa1aNQICAujXrx9KZe7fhmnTphWzlcXL4sWLdT+vX7+eNWvWsHLlyqf+3IiICHx9fblw4QJqdf5fwRs3bjB37lyOHz+ORqPBw8ODXr160a9fP1599VUWLFjAyy+/rNfnq6++IiYmhvnz5xuMFxoaSmhoKHPmzCny9/QoduzYwZ07dzh+/LjuPXfv3l1XX6NGDXbt2kXFihUBqFmzJnZ2duzbt4927do9c3slDyjVM8lFixZx5swZ/vzzT0aNGsVPP/3EpEmTitusQqPVaovbhGfOrVu3eO2113B3d2fLli38/fffzJs3j/Pnz6PRaOjatSubNm3S66PVatm2bRs9evQwOuaqVavw9/dHoVA8g3egb1dUVBSVKlUq8I/Cf/H392fVqlVP0TKJSYhSStu2bcWRI0f0yv755x9Ro0YNcfnyZSGEEBMmTBDfffedEEKI+Ph4MXr0aNGoUSPRpEkT8frrrwutViuEECIqKkq8/fbbolmzZqJp06Zi6tSpQgghtFqtCAoKEm3atBHNmzcXH3/8sbh7964QQogRI0aI3377Te/5/v7+YufOnUIIIa5evSqGDh0qmjRpIjp27Ci2bdumazdhwgQxefJkMXLkSNGgQQPx008/iZdfflloNBpdm507dwp/f3+D933r1i3RqFEjne2TJk0SzZs319V/9NFHYunSpUIIIQYNGiRWr14trl69KurWrStq1qwpvL29RaNGjXR2fPHFF2LUqFHC29tb9OnTR9y8eVM31t9//y169eolGjZsKHr16iX+/vvvfD//+fPniw8//FAIIUTr1q1F9erVhbe3t/D29hanT582eB8ffvihGDVqlEH5w8/29vYWaWlpurL9+/eL5s2bi+zsbKN92rVrJ06ePKl7/ax+f/369RN16tQRtWvXFt7e3mL16tVi3bp1on///kIIIQYMGCCqV68uGjRoILy9vXVjxcTEiHr16onMzMx8PwfJ06dUzyT/S/369SlXrhynTp0yqFu6dClubm789ddfHDlyhA8++ACFQoFWq2XMmDF4eHiwb98+Dh48SNeuXYHcJeqGDRv49ddf2bNnD2lpabolvJ+fH1u3btWNf/XqVaKiomjTpg1paWkMHz4cPz8/jh49yty5c5k6dSpXr17Vtd+6dStvvvkmp0+fZvDgwTg4OHD48GFd/aZNm4zOmMqXL4+trS0XL14E4OTJk1hbW3Pt2jXd66ZNm+r1qVq1KlOnTsXb25szZ87ofT7BwcG88847nDx5kgoVKuj2KJOSkhgzZgyDBw/m+PHjDBs2jDFjxpCYmPjI38Py5ct1tpw5cwYfHx+DNn/99RedOnXKd4yGDRvi6urKrl279D4TPz8/o7O1tLQ0IiIiqFKliq7sWf3+fvnlF8aMGUOXLl04c+YMffv21bNtxYoVOvvPnDmj+365ubmhVqu5fv16/h+m5KnzQokkgKurK8nJyQblarWa27dvExUVhZmZGY0bN0ahUBASEkJcXByffPIJ1tbWWFhY0LhxYwC2bNnC0KFDKV++PDY2NnzwwQcEBwej0Who3749oaGhREZG6tp26NABc3Nz9u/fj6enJ71790atVlO7dm06derEjh07dPb4+vrSqFEjlEolFhYW9OjRg82bNwO5AnX48GH8/PyMvscmTZpw8uRJbt++DUCnTp04ceIE4eHhpKSkULNmTZM/r/bt21O/fn3UajXdu3fn0qVLAOzfv5+KFSvSo0cP1Go1fn5+VKlShT///NPksQsiKSkJFxeXAtsEBAToltwpKSns3buXnj17Gm177949AGxsbHRlz/L397jY2NjobJcUDy+cSMbGxmJvb29QPmLECCpWrMjw4cPx9fXlxx9/BCA6OhoPDw+js5O4uDg8PT11rz09PdFo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\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : 11.0 %\n", "Replication probability at n = 100 : 17.0 %\n", "Replication probability at n = 200 : 43.0 %\n", "Replication probability at n = 300 : 72.0 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUkAAADlCAYAAADeIwWJAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAABiKUlEQVR4nO2dd3SURReHny3pPSG90DsEAiF06b0EREQpCgiIIPqhIogIiCiCHQQbXRQUQWroRXrvvYb03nt29/3+WLJh2ZRNCCTAPOdwTnbeeee9u2x+uTNz516ZJEkSAoFAICgQeXkbIBAIBBUZIZICgUBQBEIkBQKBoAiESAoEAkERCJEUCASCIhAiKRAIBEUgRLICMX36dBYuXFjeZpQbo0aN4t9//y30+pQpU/juu++eoEUCASjL24DnhY4dOxIXF4dCoUChUFCjRg0CAwMZNGgQcrn2b9WsWbPK2cryZfHixbqf169fz9q1a1m9enWpx8vJyeGXX35h8+bNxMTE4OjoSPPmzRk/fjy//vorWVlZzJs3T++ea9eu8dJLL3Ho0CHs7e1L/WzBs4MQySfIzz//TKtWrUhNTeXEiRN8/vnnXLhwgTlz5pS3aSVCrVajUCjK24xieeedd4iOjubrr7+mXr16ZGZmsmnTJo4ePUr//v0ZOXIkGRkZWFpa6u7ZuHEjHTp0EAIp0CGm2+WAjY0NnTp14vvvv+fff//lxo0bgP50MiEhgTfffBN/f38CAgIYPHgwGo0GgMjISN5++21atGhB8+bNdR6oRqNh0aJFdOjQgZYtW/Lhhx+SmpoKaKeyq1at0rOjb9++7Ny5E4Dbt28zYsQIAgIC6NatG0FBQbp+U6ZMYcaMGYwePZrGjRuzbNkyWrVqhVqt1vXZuXMnffv2NXivoaGh+Pv762yfNm0aLVu21F2fNGkSy5cvB2DYsGGsXbuW27dvM2PGDM6dO4efnx/+/v66/ikpKYwZMwY/Pz8GDhxISEhIgZ/xkSNHOHLkCIsWLcLX1xelUomNjQ1Dhgxh4MCB+Pn54eLionv/oBX/zZs3ExgYWOj/neD5Q4hkOeLr64ubmxunTp0yuLZs2TJcXV05evQohw8f5r333kMmk6FWq3nzzTfx8PBg7969HDhwgJ49ewLaKeq///7LypUr2b17NxkZGToB7d27N1u2bNGNf+vWLSIiImjfvj0ZGRmMHDmS3r17c+TIEb777js+/fRTbt26peu/ZcsWxo4dy5kzZxg2bBj29vYcOnRId33jxo3069fP4H14e3tjbW3NlStXADh58iSWlpbcvn1b9zogIEDvnurVq/Ppp5/SuHFjzp49q/f5BAUF8fbbb3Py5El8fHwKXaM8cuQIvr6+uLu7F/r59+vXjw0bNujdo1KpaNeuXaH3CJ4/hEiWMy4uLiQnJxu0K5VKYmNjiYiIwMTEBH9/f2QyGRcuXCAmJoYPP/wQS0tLzMzMdJ7W5s2bGT58ON7e3lhZWfHee+8RFBSESqWic+fOXLt2jfDwcF3fLl26YGpqyv79+/H09GTAgAEolUrq1atHt27d2L59u86eTp060bRpU+RyOWZmZvTr149NmzYBkJSUxKFDh+jdu3eB77FZs2acPHmS2NhYALp168aJEycIDQ0lLS2NOnXqGP15de7cWecZ9u3bl6tXrxbYLykpCWdn5yLHCgwM5OTJk0RFRQGwYcMGevfujYmJidH2CJ59hEiWM9HR0djZ2Rm0v/HGG1SuXJmRI0fSqVMnfv31V0A71fbw8ECpNFxOjomJwdPTU/fa09MTlUpFfHw81tbWtGvXjq1btwJazzBvehweHs6FCxfw9/fX/du8ebNO1AADjywwMJB9+/aRkZHBtm3b8Pf3x8XFpcD3GBAQwPHjxzl58iTNmjWjefPmnDx5kpMnT+Lv76/buDKGSpUq6X42NzcnIyOjwH729vZ69heEh4cH/v7+bNq0ifT0dPbs2VOgNyx4vhEbN+XIhQsXiI6OpmnTpgbXrK2tmTJlClOmTOHGjRu8/vrrNGzYEHd3dyIjI1GpVAZC6eLiovMUASIiIlAqlTg5OQHaKfePP/5Is2bNyM7Opnnz5oBWAJs1a8ayZcuMtt3V1RU/Pz927tzJxo0befXVVwvt26xZM+bNm4ebmxvNmjWjadOmzJgxAzMzM5o1a1bgPTKZzGhbCqJVq1asXLmSqKgo3NzcCu3Xv39/fvvtN5ydnfHy8qJBgwaP9FzBs4fwJMuBtLQ09u3bx3vvvUffvn2pXbu2QZ99+/Zx7949JEnCxsYGhUKBTCbD19cXZ2dnvvnmGzIyMsjOzub06dOAVgRXrFhBaGgo6enpfPfdd/To0UMnpu3atSMiIoL58+fTs2dPnQfXvn17goOD2bBhA7m5ueTm5nLhwgXdumFhBAYGsmTJEm7cuEHXrl0L7VelShXMzMzYtGkTAQEBWFtb4+TkxI4dOwoVSScnJ6Kjo8nJyTHqM32YVq1a0apVK8aPH8+lS5dQqVSkpaWxevVq/vnnH12/rl27EhERwYIFC4QXKSgQIZJPkLFjx+Ln50e7du34+eefGTFiRKHhP/fu3WPEiBH4+fkxaNAgXn31VVq0aIFCoeDnn3/m3r17dOjQgRdeeIFt27YBMGDAAPr27cvQoUPp1KkTpqamfPLJJ7oxTU1N6dKlC0eOHNFbP7S2tmbJkiUEBQXRtm1b2rRpw9dff12sQHXp0oXw8HC6dOmChYVFkX0DAgKwt7fXTdsDAgKQJIn69esX2L9FixbUqFGDNm3a6DzekjJ//nzatWvHxIkT8ff3p0+fPly6dIlWrVrp+lhaWtKtWzeioqLo06dPqZ4jeLaRiaS7gkehc+fOzJo1S094BIJnCeFJCkrNjh07kMlktGjRorxNEQgeGxVq4+bu3btMmTKFpKQk7O3tmTt3LlWqVNHrEx8fz0cffaTbvGjevDnTpk0rcLdX8PgYNmwYt27dYt68eSXanRYInjYq1HT7tddeY8CAAQQGBrJx40bWrVvHypUr9fp8/vnnKJVKJk+eTG5uLoMHD2bEiBG6gGqBQCAoSyqMCxAfH8+VK1d0Gwq9e/fmypUrJCQk6PWTyWSkp6ej0WjIyckhNzcXV1dXo56hUqkICwtDpVKVuf0CgeDZpMLMUSMjI3F1ddUlTlAoFLi4uBAZGYmjo6Ou37hx45gwYQJt2rQhMzOTIUOGFBhnWBBRUVF06tSJPXv24OXl9Vjeh0BL3nns4cOHl/helVp7zlupqDB/w58rcnNzCQsLIysrq7xNeSKYm5vj5eVV6EmrCiOSxrJ9+3Zq167NihUrSE9PZ/To0Wzfvp3u3buXt2mCMkKIY/kSFhaGjY0NVapUeeSg/oqOJEnEx8cTFhZG1apVC+xTYb6N7u7uREdH6zLLqNVqYmJiDI7DrVq1ir59+yKXy7GxsaFjx44cP368PEwWPCZ2nwhh94mCs/sIHj9ZWVk4OTk98wIJ2uU7JyenIr3mCiOSTk5O1K1bV5epZsuWLdStW1dvqg3g5eXFgQMHAG1S1aNHj1KzZs0nbq/g8bHnVAh7TgmRLE+eB4HMo7j3WmFEEmDmzJmsWrWKbt26sWrVKj799FMARo8ezcWLFwGYOnUqp0+fpk+fPvTr148qVarw8ssvl6fZgjJmzrg2zBnXprzNEAiACrYmWb16ddauXWvQ/ttvv+l+9vHxKVEiBoFAIHgUKpRICgQAO44FA9CtRZVytUNQcejYsSOmpqaYmZkB8MEHH9C2bVvOnTvH9OnTyc7OxtPTk6+++kqX9aqsqFDTbYEA4OC5cA6eCy++o6BC8cfhTVR5tx3yIbWo8m47/ji8qUzHnz9/Phs3bmTjxo20bdsWjUbDpEmTmD59Ojt27MDf35+vv/66TJ8JQiQFFZDZY1sze2zr8jZDUAL+OLyJMYs/5l5cBBIS9+IiGLP44zIXyge5dOmSXmb+V155RS+bflkhRFIgEDwyH//9DRk5+mE0GTlZfPz3N2X2jA8++IA+ffowc+ZMUlJSdFn683B0dESj0ZCUlFRmzwQhkoIKyNbDd9l6+G55myEoASFxkSVqLyl//PEHmzZtYt26dUiS9ERr1AuRFFQ4TlyJ4sSVqPI2Q1ACfCoVXJWysPaSkneoxNTUlMGDB3PmzBnc3d2JiIjQ9UlISEAul5d5zXQhkoIKx6ejW/Lp6JbFdxRUGD5/+X0sTc312ixNzfn85fcfeeyMjAxd/XhJkggKCqJu3bo0aNCArKwsXcnhNWvWPJbjySIESCAQPDJDWmsrb3789zeExEXiU8mdz19+X9f+KMTHxzNhwgTUajUajYbq1aszY8YM5HI58+bNY8aMGXohQGWNEElBhWPTAW0Bsr4vVC9nSwQlYUjrvmUiig/j7e3Nhg0bCrzWpEkTNm/eXObPfBAx3RZUOM7fjOP8zbjyNkMgAIQnKaiAfPJG6aojCgSPA+FJCgQCQREIkRRUONbvu8X6fbfK2wyBABDTbUEF5Nq9hOI7CQRPiAolksaUlAUICgrip59+QpIkZDIZy5Yto1KlSk/eYMFjYerwgPI2QSDQUaGm2zNmzGDw4MHs2LGDwYMHM336dIM+Fy9e5Mcff2Tp0qVs2bKFP//8Exsbm3KwViAQPCnmzp1Lx44dqV27Njdu3NC13717l0GDBtGtWzcGDRpEcHCwUddKQoURSWNLyi5fvpyRI0fi7OwMgI2NjS7HnODZYO2eG6zdc6P4joIKxZ+ntlL10+4o/9eYqp92589TW8ts7E6dOvHHH3/g6emp116UY2WM02UMFUYkiyop+yC3b98mNDSUIUOG0L9/fxYtWoQkSeVhsuAxcTcihbsRKeVthqAE/HlqK2/+NYuQxEgkJEISI3nzr1llJpT+/v4GRQGLcqyMdbqMoUKtSRqDWq3m+vXrLFu2jJycHEaNGoWHhwf9+vUrb9MEZcSHw/zL2wRBCfl46wIych9KlZabxcdbFzDYv9djeWZRjpUkSYVee7i4YHFUGE/S2JKyHh4edO/eHVNTU6ytrenUqRMXLlwoD5MFAsF9QhMLztpUWPvTRIURSWNLyvbu3ZtDhw4hSRK5ubkcO3aMOnXqlIfJgsfEml3XWbPrenmbISgB3g5uJWovC4pyrIx1uoyhwogkGFdStlevXjg5OdGzZ0/69etHjRo1eOmll8rTbEEZEx6TRnhMWnmbISgBn/eagKXJQ6nSTMz5vNeEx/bMohwrY50uY5BJz9GuR1hYGJ06dWLPnj14eXmVtznPNMuXLwdg+PDh5WqHoORcvXqVunXrlvi+P09t5eOtCwhNjMLbwY3Pe00os/XI2bNns3PnTuLi4nBwcMDe3p6tW7dy+/ZtpkyZQkpKCra2tsydO5dq1aoBFHntYYp6z0IkBY8FIZJPL6UVyaeZot5zhZpuCwQAq7ZfZdX2q+VthkAACJEUPCFuR9+j91ejsRjegLqTurHm6JZC+8YlZRKXlPkErRMICuepi5MUPH2oNWq6z32DW9H3ALgWcYfBC9/Dw96FF+oantP+3ytNnrSJAkGhCE9S8Ng5eO2UTiDzkCSJ5QfXl5NFAoHxCJEUPHYK2xssrH3F1ius2HrlcZokEBiNEEnBY6dtHX+qOhtGE7ze9sUC+6dm5JCakfO4zRIIjEKIpOCxo1Qo2T55KV0atEYuk1PNxZuVY7+ifb2Ca9m8PbAxbw9s/GSNFAgKQWzcCJ4ItdyrsvOj5eVthuApJDExkQ8//JCQkBBMTU2pXLkys2bNwtHRkXPnzjF9+nS9uttOTk4ARV4rCcKTFFQ4lmy6xJJNl8rbDEEJ2XxtLx2XvE7d73vSccnrbL62t0zGlclkjBo1ih07drB582a8vb35+uuv0Wg0TJo0ienTp7Njxw78/f35+uuvAYq8VlKESArKhOzcbBbv+5tRv03lu23LUGvUpR4rJ1dNTm7p7xc8eTZf28snu+cTkRqDhEREagyf7J5fJkJpb29P8+b5SzONGzcmIiKCS5cuYWZmhr+/NrXeK6+8wvbt2wGKvFZSxHRb8MhIkkTPr0az9/JRXdu46n1pUqV+qcZ7a0CjsjJN8IT47vAKslTZem1Zqmy+O7yCPnU6ltlzNBoNq1evpmPHjkRGRuLh4aG75ujoiEajISkpqchr9vb2JXqm8CQFj8zuS4f1BBIgIzuT6OS4crJI8KSJTI0tUXtp+eyzz7C0tGTo0KFlOm5RGC2Sffv2ZfHixQblFASCm1H3CmzPzMkqsL04fttwkd82XHwUkwRPGHcb5xK1l4a5c+dy7949vv/+e+RyOe7u7kREROiuJyQkIJfLsbe3L/JaSTFaJCdMmMDFixfp2bMnQ4cOZc2aNSQlJZX4gYJnjxfqNCuw3d5KVLF8XpjY+nXMlfoF+cyVZkxs/XqZjP/tt99y6dIlFi5ciKmpKQANGjQgKyuLU6dOAbBmzRq6d+9e7LWSYvSaZJcuXejSpQtpaWns2rWLLVu28OWXX9KiRQt+/vnnUj38YYytuw1w584d+vfvz+DBg5k8eXKZPF9QOhp41+KT/uOZvSG/KJurXSWcrB1KNd7ofg3L0rzHRmZOFham5sV3fA7IW3f87vAKIlNjcbdxZmLr18tkPfLmzZv88ssvVKlShVdeeQUALy8vFi5cyLx585gxY4ZemA+AXC4v9FpJKVU+ydzcXP777z9WrlzJqVOnuHKlbI6QvfbaawwYMIDAwEA2btzIunXrWLlypUE/tVrN8OHDcXFxwcXFxWiRFPkkHy+3ou5x4vZ56nvV5Oy+48CzmU9y/5XjvLPyMy6GXqe6qw/zXv2QF5t1K2+zygyRT1Ifo6fbkiRx9OhRpk6dSuvWrfnxxx954YUX2LNnT5kYWZISkL/++ivt27cv1MsUlA813CozuHVfGlXO/7KlZ2fw8Zb5+M0bSPefxrLr+tEiRtDy07rz/LTu/OM0tdTEpSbQ++sxXAzV1uC5HR3CoAX/41rE7XK2TPC4MHq63bZtWywtLenZsyerV6+mevXqZWpIUeUhH6xLce3aNQ4dOsTKlStZtGhRmdogKHteXTmZrZcP6F7vuXGc3eN/o12NwsvGmpooiE9LZMD34zkTfIUmVerx2Uv/o55XzSdhcpFsOLWb9OwMvTaVWsWao1uZOeCdcrJK8DgxWiQXLVqEr6/v47SlWHJzc/nkk0+YM2eOTkwFFYvwhCj2Xj5GUnoKZqZmegIJoJE0LDr0V5Ei2a+DJ7U/GEl8WiIAwbFhHLh2kutf78TR2v5xml8sJoqCf2UKaxc8/Rj9P3vnzh1MTU31yrdeu3aNa9eu0a9fv0c25MESkAqFosASkLGxsYSEhDBmzBgAUlJSkCSJtLQ0Pvvss0e2QfBoLNm/lrFLp6NSqxju1QVrC8sC+yVlphQ5zl/HgnQCmUdcaiJ/HwtibOfBZWZvaejv34UP/vySuNR8+yzNLBjaOrAcrRI8Toxek/zhhx8Mata6ubnxww8/lIkhxpSA9PDw4Pjx4+zdu5e9e/fy+uuv8/LLLwuBrAAkpacwYcUsVGqVri0tMwNHC1uDvv19OxU51tnzchraGpYJTntomlse2FrasHfq7/Ro1A5Ha3teqNOMHZOXUtnZs7xNEzwmjPYk09LSsLa21muzsbEhJaVor6AkzJw5kylTprBo0SJdCUjQ1t1+5513aNjw6QgNeR45ffdSgcHj9Wx8SLDL4ErUHcyUprzRoj+3gm/j/mcrlHIFo9q/zLT+41DI85dP6vtU4cjt43rjKBVKXmzW9bG/D2No6FOboA8Xl7cZgieE0SJZvXp1duzYQc+ePXVtu3btKtMNnOrVq7N27VqD9t9++63A/hMmPL7C54KSUcO1MnKZHI2k0WtvVrkhXw+Zwt34MBwsbPlk7fd8s/N33fWZ6+cjk8H0F/P/L//3cks8Kyfx3qrThCVE4eXoxndDp1LNxeeJvR9BxWLcuHGEhYUhl8uxtLTkk08+oW7dukXGVpck7roojI6TPHXqFGPGjKF169Z4e3sTEhLC0aNH+fXXX2natGmJH1weiDjJx8uEFbP48b4ADvfqgqnShE/em4KXk3aZRqPRYDOqMRnZ+pUQvRzdCF1w0GA8tUZNbEoCzraOep7mg+RqVGg0asweOu3xuAhPiCImJR5fnzqF2vS0U9o4yf1hx/j96nriMhOoZOHIsLov0t6rRZnYlJqaio2N9gTX7t27WbhwIf/++2+RsdXGxl1DGcVJ+vv7s2XLFho2bEhmZia+vr5s2bLlqRFIweNn/mufsGHiT7zVeTBVnb3wr9pAJ5AAElKBKdRyH1jHBPh+zRm+X3MGhVyBm71zgWKk1qj57dIaBm97h0FBbzP7+AKSsstu6cfARlUur//8IT7vtKPJx/2o+r8OHLlx5rE972ljf9gxFp5fSWxmAhIQm5nAwvMr2R92rEzGzxNI0C79yWSyImOrSxJ3XRwlilvw8PDQ7SwXRJ8+fdi8eXOJjRA8G8hkMgL9OxPo35nly5cbXFfIFbzasjfLD+hXSXytTT+915XsLYp91rpb29h8Z7fu9Yno83x/dikzW/yvRDZvv3GQ+Ud/JzQ5kmZeDZnW/i2qOXob9Fu4axUrD/6rex0aH8nL898h+If9KEX4D79fXU+2Wr8uUbY6h9+vri8zb/Ljjz/m8OHDSJKkS7ZTWGy1JElGxV0bQ5mmSgsLCyvL4QTPIAten87wF17EVGmCpZkF47sM5bOB/9PrM7R7XYZ2L3q691/4CQBkyHRtZ2Muk5qTZrQt5yKv8t62L7mTGEquRsWRkLOM+neagWcLsPnsPoO28MRozt27avTznmXiMgv20AprLw2ff/45+/fvZ+LEicybN6/Mxi2OMv0TKJPJiu8keCq5FHmTqJR4WlVthKVp8Z5eYVibW7HszbksHv0FoPUuU3PS2H33MCk5aQS4Naa6XeEbNGk56aTkpFHFthKtPatjYWJGRFo8R8KvkZGbg0Jm/Drhhiu7DTaaIlJjOBZ6jrZV9IPdXW0Na6PIZDKcbUrmlTyrVLJwJLYAQaxkUfafT79+/Zg+fTpubm6FxlZLklRs3LWxiHmCoEgyc7IYuPwDtl3Rbqw4WNry52tz6Vqn1SONm7fOGJUey+RDX5KYnQzA6uubqBHZH09rN97oV5MNp3YBENi0M/8Eb2Nb8H48rR3pWDn/9JeHtROdKzciKVOGpYmhgKs1Km6n3CQuKwZLpRU17GpjbVJ4GreC9jL/12M4607uIEeVq2t7uXlPER95n2F1X2Th+ZV6U24zhSnD6hZcNrgkpKenk5KSohO4vXv3YmdnpxdbHRgYaBBbXdS1kiBEUlAg0clx/Lp3DRuv7Ods7E1de2JGCq+v+ph7M3diqjR55OesvblVJ5B5BKuu46awpNrEjnT0b0SP5s3ZEbGJxOxYZEhUt3czGMfe3JouXm2ISopl/o6VXAm/RYsajRnfZQgXkk8Rkxml6xuWHkIHj64E1u3MXxe3IZEviu42zrTwaWwwfkD1Rhz45E++27acyKQYevt14N3uZZMr8Vkgb93xcexuZ2Zm8u6775KZmYlcLsfOzo6ff/4ZmUxWaGw1FB53XVLKVCRLkXVNUAGJTIyh2ScvEp4YjczODJmp/hQ2Ji2B8xHXaebT4JGfdTfFcB1b5X2FDTeP0bNLCwb4t9G113T0wFSh1BO1Bxm69kMi4uIJvxNJRmomG0/v5ujdkwzv21mvX64mh7upt/DzaMw3PSaz4NgqQpIiaO7diI/bj8VUUbD4N6/RmDUTvi/9m33Gae/Vosw2aR6kUqVK/P333wVeKyy2urhrJcFokbx27Zreue2CmDVr1iMbJCh/ftrzJ+GJ0doXGkNBUsgVeNq5PNIzzgZfJjYlgao23txKCta7ZqEwJ0ERxuAa7Qzu87Z1Zn/IRarYueq1hyfFE5OahNxUjmdNd+5cuIeVnQVq+4KrLt5MvEMDx8b0rN2OnrUNnyMQ5GG0SOYluQ0MDKRPnz64uBj+kvTp06dMjROUD7ceqFkjZeSCmUJvU25k8354lFIkz4ZfZvyqWRy/fA6NWoNbJWc6dQsgRaXdlZYjQ3alGW7JVSloG1AG+DpXIUedi4lciUaSyFXn4mnvxEfdBrL72nmOB1/HycMBB1d7wlLjyVWrDLL0HAg7w8IdQXSoEcD/2g3FyqzgZBwCgdEieejQIfbv38+mTZv48ccf8fPzIzAwkK5du2JhUfrdTkHZodao+XHn76w7sQN7K1ve6fYanRu0LvE4L9RpxuqjW+4PKiElZiG3NKW7XztebNSZ4QElz3iTpcrm/aAv2XPnGJhB9UZViAqOISo5no07D9HRP4Bmlesz0u8lPo3azr3MOE6HZuNhr7+rLJPJqGSZnzRDIZOhkGtP21ibWdCvUQty1Cpq+3ng5ViJsKR4joffoJlnTcwUJmgkiZuJEdxOjuJ46AX23TjJvpsn2D1enMUWFIzRIqlUKuncuTOdO3cmNTWV7du3s3jxYmbOnEmXLl0YNGiQOH1Tzryz4jMW7f5D93rL2X1s/eA3ejTWn06uPbeTjRf34Whpy9jWL1PPTf/8/cj2L7H13H623I8NNEHJ/JemFpqm7Hb0PaKS4vCv1gAzE/3jgbnqXJZeWcv2u/vJ1ahxrWRPTHwycoUct6ouqKLisbW15mzYNQ5cO4tZjgU1qmr4L+McR+6Au60j/pVrlOhz6N+ohc5zdLK2JUetYt+986glibTcLNJzs8jMyiEjU1snet/Nk5y4d5GAyiKBisCQEm/cpKens3v3brZu3Up0dDS9evXC3d2dSZMm0a5dO2bMmPE47BQUQ1J6Cov36y9uS5LEt9uW6onk1M0/MHfPUt3rpcc2sH/CUvx96uvaTJWmbP7gV07evsDd2DDa1vbH3cFwep2jymHYokn8fTwIAGdbR9a8/T0d67fU9Vl1bQNb7+4FQC6XYWdrBUB0XBJKhYKAxrWwsdLORNLSs1h9eSP3roRSs4YPb3TrSSVrw1RrxfHw1NpUoaRr1SYcDLtCdEYSarWaS9eD9fpEpoga4YKCMVok9+/fz8aNGzlw4ABNmjRh4MCBdO7cGTMzrecwZMgQOnToIESynEjOSNWL4csjJiU/wDcpI4Xv/1uldz0zN4u5e5aydsQ3Bvc2q+5Ls+r62egT0pPZf+skHnYuHL16WieQALEpCQya/y69/DpgHaHC0syCUBfD89Q21pZExyXhXMkOW2vtWqCNqQWBNVvgZGHDHoUJkgSVrA3fT3FIklTgoQaZTMYLXvVp4V6XjaePEJeQb5eVqQXti8iULni+MVokv/nmG/r168dHH31U4KaNvb09U6dOfSRjjElttHDhQoKCgpDL5ZiYmDBx4kTatm37SM8FbQKDg9dPYaY0pVWtJk/d6aHKzp74+tThQsg1vfa+TfJLekalxpOtynn4Vu4lRBi0PYhao+ZIyFl2XD/C/L1/kn4/i4+DibVB37i0RNac2sIIn66kSZkkZaVionz4FIx2xzzPgwRo61UfJwttgLeLW/GhZHnhZg//PxX5/yYDU6Wcgc3bYGNlwfpTR5Crlfw6aCZ2FqJGuKBgjBJJtVpNvXr1GDZsmK4weEEMHDjwkYyZMWMGgwcP1qU2mj59ukFqI19fX0aOHImFhQXXrl1j6NChHDp0CHPz0tc/vhhynZ5fjSIsQRtw3MCrFjumLMXDwbWYOysWf47/ln7fvsWtaO3utKtdJdrXba67XtPZB297N0KTovTu61gzoNAxEzKSGL7+I27EBQPg5mpHQrIctVoiLSsTLJSQmX/W2cRMSeV63sgytGkBUlLTcXLQnzInp2ozjGskCTlgpjDB1cped71hE8Oz0w/zqH/EutVvQrMqNTkRfIsGbtWY/s/3HL91ngZetXiv5wg8HQ0D1gXlz48//siCBQvYvHkztWrVYt26dSxfvhyNRoO3tzdffvkl9vb2ANSuXZtatWohl2u/i/PmzaN27dolfqZRCS4UCgWHDx9+rN6VsamN2rZtq9tNr127NpIkkZSU9EjPHrNkmk4gAS6F3WDSn6WLzi9P6nnWwMbcSvc6OjmOXl+P5mKItvypQq5g6eBZODywO9y6amM+6jKq0DF/OrFGJ5CgLfpeycEO10r2VPZ0oZKbg15/zxruyOT535P4xFTiE1PIValRqdQkJKUSG689YZOUnA6ASqNGVUAKtceJTCbDydqWbvX9eHvddD77dyE7Lx7i221LaTnzZRLTk4sfRKBHaGow20M28e/dNWwP2URoanCZjn/58mXOnTuHp6f2KOjt27f5/vvvWbFiBVu3bsXX15dvv/1W7541a9awceNGNm7cWCqBhBJkAXr99ddZsGABubklXycyhqLSHhXGhg0b8PHxwc2t9H/107MyOHbrnEH77ktHSj1meXHo+inO3rui15adm8Nv+/7Sve5YqzkhM3eyZcxCjk5cxYF3VxQ51TwdcbnQazKZDCcnO1xdnAFQmCgwszRMfhufmMrdkCjuhETprQUmJKUSE5eESqPmWnz+yZtdW0zZtUU7Y5EkiYzc7GLeeemRy2TU9dFPwBwaH8mqQxsf2zOfRUJTgzkbf5JMtXaWkKnO4Gz8yTITypycHGbNmsXMmTN1bTdu3NA7j92uXbvHkqrR6DXJVatWERcXx7Jly3B0dNTzKvfv31/mhhXHiRMn+OGHH1i6dGnxnYvAwtQcF1snYlLi9dqrPIWJC1IyC04T9nC7pakFPeq1KbDvw1Sx9+RKzK3CO8gg00KNzN4MKS0XjUZCLi94xpG3qWJtZY6luRm5Kq33KJPJOBl1k7TcLGrYu+Hu5Uje10smk2FpYkZmbg4WJoUv9ZjLLHCN90QVo8LERUmUUzhZUmah/R8kN9dweh+RGGPUvQItlxMvoJb0ZwNqSc3lxAt421R55PF/+OEH+vbtq1dRoE6dOly8eJHQ0FC8vLzYsmULGRkZuj0NgGHDhqFWq3nhhReYMGFCkcuFhWG0SH711VclHrwkGFNSNo+zZ88yadIkFi1aRLVq1R7puXK5nE/6j2fCivwjlXKZnGn9xj3SuOVBx/otcbJ2MCjH+lJA91KPOTbgFbZd/w+piJWWnFwVMhMFkhWkpmdgZ2Old11SQ6caLVh3fg91q3tha5N/uuXB8/5X40MBiRaN7QyeUZxAOh11Y9sbO1BlqlBaKOmypDPxLaOKFUpJkth57KTutbWDFfbOdlzKvsVfF4N4uUGPp24TrzzI8yCNbS8JZ8+e5dKlS3zwwQd67VWrVmXatGlMnDgRmUxGp07aKpxKpVbW9u/fj7u7O2lpaUyaNImFCxcyceLEEj/faJEMCCh8cb8sKC7tUR4XLlxg4sSJzJ8/n/r16xcyWsl4u+swqrv48OeRzZiZmPJG+4G0rOlXJmM/SSxMzdn43k+M/O0jbkTexdbCmil93qT3AzvcJaVWpSqMrPMic/cuRmmiwMreChPT/K9NcmoGOfc9MZmpgpj4ZHJz1UgmWvGLS0ihpn0Vvu7+IQevntITSNDfgJEho6pdyTfLXOM9dQIJoMpUseuN3fQ42I17jgV7wZIkoZCZ0LCSH1MCJf4+HkRIcgzeVT0IT4rnZuI9ZuxZQHRaHO+0fK3ENj1vWCgsCxREC8WjH/c8efIkt2/f1olgVFQUb7zxBnPmzKFXr1706tUL0GrDn3/+qavqmudgWVtbM3DgQJYtW1aq5xtdCCwnJ4eFCxeyZcsWkpKSOH36NIcOHSI4OJihQ4eW6uEPc/v2baZMmUJKSooutVG1atX0SsoOGDCA8PBwXF3zf5mM3bV6XgqBSZJEeEIUTjYOWJiWftf/QT7fsIjvty8nKTOV5o0acyc9grSMLNIz9cvIyuUyvNwq0SOnEQB7ra/Q2qspDjnW7Iw/RJXKha8f13PyoblHLXZs0nqN3foahisVhOe1KmzrucOgvUdQN8LrBBd5r1qjQXF/9zNvOSAzN4d/zh7mSmQINqZWHB37F8pntOhXQZSmEFjemuSDU26FTIGfU7MymW4/SMeOHfn555+pVasWsbGxODs7k52dzfjx42nTpg3Dhw8nOTkZMzMzzM3NUalUfPzxx9jZ2RUapljUezbak/ziiy+Ijo7m66+/ZvTo0QDUrFmTOXPmlJlIGlNSdt26dWXyrGcZmUymV4CrLPi43zg+7jcOjUaDXC6nw3cjOBBvWAjLzsYKM1MTeEDfjoafJTE8BY/qhtm9H8TbthIAPlVLttNt4qJEaaHUeZIASgslSpfiv955Agn5Xq2FiSkvN2nDnB1rScvJIFed+1yJZGnIE8LLiRfIVGdgobCkvoNvmQvkw3z00UdERESQm5tLz549ee01rdd/584dpk+fjkwmQ6VS4efnx7vvvluqZxgtkrt372bnzp1YWlrq4o5cXV2Jjo4u1YMFTydyuZzs3GzOXbmARpWNzEyhlyXIzNTkgb4yPN2dMFUqcbK3ITax6LCazPuB7nUblkwko5zC6bKkM7ve2K23JhntFE4hqSeLxUxpQhVHF5zMXbAwKRtv/FnH26bKYxdF0GYmz2Px4oITk/j5+ZXZTrfRImliYoJarf/lTUhI0O0iCZ49rkfcYcKKWey7epxqLt58OuAdXmnZm/i0JJIytKE8Uo4achRgY4pMJiM7OxcbKwvkchnmpiZYWWgFxsHBGltbS9LSM7G2KjhrVGp26Rb5s6RM4ltG0eNgN1QxKpQuSqJLsLtdGC5Wznza4X8luic2JZ5vgpZy4vYFfH1q80HPN8rcqxc8WYwWye7duzN58mQ++ugjAGJiYvjiiy90i6aCZ4tcVS7d5o7kXlw4ADci7zJ44Xu42jkTkhqFg4sTiUlJkKOGbDWSKoumdRozuFVv9oYexSRHycMJIRUKOQlJqSQmp+Ht4WzwTMf78ZrbNmjXJHv0M25NErRCec/xFuTt8xnpQWokCXkBu9e2Skd+C5xj9PMBsnOzeeGzwVyLuAPAvivHWH9yJxfmbMHequSJOgQVA6ODySdOnIiXlxd9+/YlJSWFbt264eLiwvjx4x+nfYInwJ2YEKKSYkl44JTJ5rN7CcmKQeZojszeHMwUSJLE4N8nM3L1dJKlTOR2ZshstcHj9dyqs+mtH5nY/jXWDZ6PqbLgv7/2VtZE3ktAU0DG86z70+1qNdVUq/l4TuA8vE8pSRJuFt5Us6mBl5UPrhbuNHBsTHvPTiUee+PpPTqBzCM0PpI/jzx9teifp1Isxb1Xoz1JU1NTpk6dytSpU0lISMDBwUHEjz3lXAy5zqsLJ3I54S5yCxOQywjwacDSwZ8xZ/9SZBb31xcVIDMxQ5ORS0ymfgymzEzB3Nem8H6XEbq1alOFCXZmNiRkJRk8Myw2jsT0FEJDo/H2dtULPL8SH0o1ezdql01kV4E8/J1VyOU4mTtSy75ku7kFEZUUW2B7ZNLTFZhubm5OfHw8Tk5Oz/zvuCRJxMfHF5n7wWiRHDduHH369KFTp06lKssoqDicuHeRyZu+4+DtM2hUauRW+YHaJ0Iu0evX8QVmBpKZFbzDa25ujlwuJyI5hr/P7kAjabA3tSM5K1WvX2JyGtGxSVSp6k62Ws3d0CjMzUyxsjTH3taKxKw0tt05Tf1KPliZmKOQFHTJ9sYyNoksFwcuOaWTLeVPwQubKhdGYWnU0nPSHuijISozkvTcNJzNXbAzczDoXxjdG72AbJXMwDPp2bi90WNUBLy8vAgLCyM2tmDRf9YwNzcvMiSwRMHkS5YsYdq0aXTu3JnevXvTunVrnffwNHH4fASDvLxQqTV88ssRujavTIem3mTlqPh08TF6tqxKWz9P0jNzmb3sOH3aVKOVrwfJadl8ufIk/dvVIKC+G4kpWcxbdYqXOtakaR1XYhMz+Xb1aQZ1rkXjWi5Exafzw19nGdytDg2rVyIsJpWF/5zntR71qFvVkXuRKfz87wVG9K5PLR8H7oQn89vGi4wObEg1TztuhCSybMtlxvb3pbK7LVfvJrBy2xXGv9QILxcbLt6O488d13h3kB9uTlacuxHDX7tv8N6rTXF2sOD0tWj+2XuTD4f642BrzonLUfy99xorwmaTkB2LK3WpYtqC05o/UZGNu6wBPrJmnEzQ5pz0kPniLWvKCc0KJDT42nTAMqsaxzXaoFxvWVPcZQ1oXsWXg7dP88ai33CiBlct/mGAPAALkwbE77cj1ms38YmpOKQ1xs+iGTGy3QDYJvpillOJqEq7UavVOCY3JTbTmv3Z5pjIlXQ1kbPhwA7+F/Q9WFiw49Ol3HIyp0UHbWzmqcMmJGdm07mzHJlMxrGDWs+3RVttfoEj/5mgVEgEtFGhljRsCcrGw8GaZq20U/mDu02wspFwaJoNLvDVqpOoLWKp3US7KbVvhwm1vVwY31ubiu+L5SeoU9mRFztoM6V/tuQ4jWpWou8L2szuf2yJ4sMOn/Hj4S9Iz86gpeNYmtWvpDuY8NGiQ3Ty96FzgE+h370544w7Lvo4MTExoWrVquVtRoXBaIUbPnw4//zzD+vWrcPb25svvviCtm3bMnv27Mdpn6CMiU1LJDU7vdh+dVyqGLT1adCeSlYPZf2xc+V8xA06/jgKe3srnBxseSGgAXY2lqTlZOBs5citOxEkpWqfWZDn5+Rgg7WVBWpJo21wC6WDlwnWQbvg/vluMjMxDdqJfZa+N5upyiboziki0hLIVasKXV9Ky84kPiuVsNR4ctTaeEoNEreiIpDJtJ50uirN4NRIbFY06bkFn4kviLZ1Aoj48RBHZ/5N29r+9LyfFX7nhYNcCr3JvC2/8cue1c/Vmt/TjtEnbh7m2rVrzJs3j6NHj3L16tWytuux8LycuCmKHw/8ybvri04DV6OSN6NbDWTLpf0cvHMGW3Nr3nlhMDN7jCM+PYmOC0dxOVJ73C8vP6WTgw0t/PJLDte66YwkQdu+HZi1dxGZ2TmERMRSycEGC/P8TEGulex1JR3y0Gg0zM5tSuOX3zawLTpoDUfqaL+yao2GDTePkZKTL2yO5tZ0q9oEc6XhWe9td04TlZ6IUibH3tya1JxMrt0NRa3W8FbAq7SoXoOw9HsG9wW4tMbTyrvIz6woNpzaxYvfj9cTxkm9RjFv8ORSjyl4cpRorhwSEsKiRYvo1asXI0aMoHLlyvz++++PyzbBY2BAoy5YFnBU0UZpgZ25NXKZnFtxoUze9C234kI59cEaYj7fz6c9xyOTyZiy+XudQAK6BL4uTvYGY8pksPTa33h5VKJmVQ/aBtQnJS0TzX2xkMtkBme5AbKz1NxRyODhKpwWFiQ7aQU1OTudfSEX9AQSICErjZBC6tXkebEqSUNcZgqJaWnkqtRoJImFx/9k27XDBd5na2KYcKMkfL11iYHnuHD3H2RkP1ocp+DJYLRIDhgwgP79+3P37l0+/PBDDh48yIwZM/D3F7VBniZUGjXf9puEr3stABq412Db2J9ImHcEOwsbNHlTXiAyJZZ5e5Zhosg/RbP96qECx80pIN3Yw5iaKPHxdObOvUhM0QafF7SRYnq9Lb+dMSF04bx8obSwIOKnr5ibuJ8Vl/aw/sZRQlMLFsM7SYY5SNNzs7gbH4WN0gq1RkNKWgaR0foJndddOICk0f+VqGpTAxvTR4txjE42tDMjO5O0rEfPkCN4/Bi9cfPGG2/QsWPHRyqTICg/snKzef2Paaw7vwtJkqjq5Mmxiatodr+MamRyLCGJhuJyKkQ/6W5aAd6PQiEnLDKOaj5umJoU/ZWysjDH2daRbCkbmUZGRmY2lhb6iXoz7G6Qlp7FG6QwedNCnBKzSHCw4A/1JWKzk4p9r5HpiRwOu0Jj12pYmZgTk57EwZDLXLx+j6DhU5l9cBG3Ywzfa7Yqlwv3ounf4AWyNZlUtq2Mq+Wjn5bp7deB77cv12trVs0XF7uiz7ILKgYlWpNMTk5m3759REdH4+rqSvv27Z+qY4nP25rknktH+HHXKpIzUrF2sGXrDX0vsEYlH659vEmbBECtovKn3Yh6aKrat0EH/h31PQCnQ68Q8M2rumtWluY4O9piolSiUqlJy8zE3dkReztrfEM8USoU3KylH0Zy/U449kobklXa8CClQoGbiwOWFmZIkkRKagbRcUm6/hbmpni5VzI6Xi8rOwe5TEZMfDJ3Q6Ko7OlKriqXkMg4atj7cHbyP1yOucUb66eS9FCIEoCDwoETty8jk8noU789K4bOxtbcsOBZSUjNTGPQgv+x7fx/ANT1qM76iQup41G9mDsFFQGjPcmzZ8/y5ptvUq1aNTw8PNi3bx9ffPEFv/zyC35+T1/uxWedoHP76f31mPyqgvZmyEz0d4ZvxYVwPSaYOq5VUSqUzO07kRF/fKKbcttb2PBpz/zkw2fC8jfolAoF7s75BwqUSgV21lZcvR2GDKhr54pGI+llKk9MTuNuaBQNq+avQ6rUasIi41Ao5EgaCY0kIdNov5aSXEVmVg5p6ZnYWBuXl9DcTLth4+WuzSh0/updZMhoVbURQWN/4rt9S1l9cgvx6cnYOFqT9UDcpYXcnJN3tOUvJEli06V9TNr4Lb8Mmm7UswvDxsKaoA8XczcmlLSsDBr6lK7WiqB8KFGqtBkzZuid1Q4KCmL27Nlllr7MmJKyarWa2bNnc/DgQWQyGWPGjHnkKo3PIgabBQUcA1TIFThZ5W9KDPXvjZ9nHdad3421mQWDm/bC7X76MgA/z/zda2sr8wLLuVpbmJGYkk5OrgoTCe6ERGFqoiAuMYXIGO1pHRuZJenor8ep1flroR5xPQEId9kEQFp6ltEi+SCerk681WAwAxp3w8REwTt7ZhKXm4BbHUcqqe2IiEqALOhUvSVdarTi5cUfGmyw/HthT6lEMujKQebsWkxIYiSda7Xgiz7vUtWl9DvkgvLD6I2b4OBgevToodfWrVs3QkJCysyYvJKyO3bsYPDgwUyfbvjl3Lx5MyEhIezcuZO//vqLBQsWEBYWVsBozzcPbxZImYYxhK8H9MXZWv/0VH33GkzvPpb3OryuJ5AA/j71GR4QiIOtNQ62BU9B87RYrdaQlZ3DzeBwLl6/R2RMInZm1khpORy+cUFvo+dBu0xNlGQ6XCfB8pKuLT0zC40mX0SNRSaX0devI45Wdqy+vom43PyNGqVCgZuzA7Y2llxNuknXmq2xMTMUYvtS1OM+evc8/Ra/y5G75whLimb5iY30/kXkOHhaMXpN8qWXXuL111+nT58+uratW7eyZMkS1q9f/8iGxMfH061bN44fP66rcdO8eXN27typdwxyzJgxvPjii3Tvrq3bMmvWLDw8PBg1qvCyqHnkrUm+9dZbT9Vaamm4ExNKaLz+5oSFmTnWllbkqlVUsrLHw87F6LW+yKRYIpNiUMs0SIXln5UksnO1xcDcFFoPNUqdbNAHmQxk2nPTMpkMtUqNXJJhbWuJUnk/S7hGIidXhfq+6irkMkxNTZDJtENIUuEFx3TvV2FOdfvKANxMCiZbXXjVRaVMiSlmhCbo1ySv4eyDp51Lkc95mOsxwQZruwBNvOrqlfwtiOHDh5foWYLHj9HT7alTpzJ27Fh+//13PDw8CA8P5969e/z8889lYkhRJWUfFMnIyEg8PDx0r93d3YmKijIY73mnciVPMrIziU9LArT1b+p71sTKrOBcjkVxK+oe4Yna5MoW1uYY5EDLy0smk2FmaqKdOj/g+CkUcpQKBSq1On9aLelPsU1NlTqBVGu03wETE1Bn595vk0jPyEIjSahUauRyGfY2Voam3MdcYY63Tf73xFSuLFIkVZIKS1MLajj7EJ0ajwwZ7raVcLV1Ii41kcycLOwsbbC1KH4TpzCvVy2V3BsWlD9Gi2STJk3YtWsX+/fvJyYmhg4dOtCuXbun0iN76aWXnovdbYDg2DBSMtNo6F27VBld5m9fwee7Vule12xa3cCDezhxhEwmo01iTVQqNSfdgqnmk1/XJjg0mss385do5HIZSpmcJlWr4eRsrx3vXEvtOI2PcuLcdUyUSqws80PPnMwd+LzTRFbe+Zu4bP2sRAB3Q6N5ve4AxnQcrmu7En+TaUe/QaUpPJ7T0SyH5d2+0b3Oysmm65fDOXj9lK5tQtdhzH+96DXKjRf38eKS/+m1edu78duY71EqjP6VE1QQjF6TzCvTEBgYyOjRowkMDEQmk5VZ+YYHS8oChZaUdXd3JyIiP0NNZGQkbm6FF5d63qni7IWvT51SCaRGo2H2xkV6bWmJhueY88a2trKgqrcrNat6YGNlgbmZiZ5AAlTxdsXRXuuNOdhZU9XLjcrerijN8gPW8bwLnneRJAmlQm4QRxmflcjRqDPEFxAzqdFoyMzKZu2VbVyNuU2uWuuJ1nOqyTdtP6Z75Xa0cPXDTG54bPFBzxNg1eGNegIJsGDn71wKvWFw74MENuzA3L4TcbDUBqE39a7HpjELhEA+pRgtkuPGjTOY1kZFRfH224bna0vDgyVlgUJLynbv3p21a9ei0WhISEhg9+7ddOvWrUxsqAjkqHL5++wOvtu3Uu/4X0nYe/ko0//5nhUH1pOZk1X8DcDV8Fv8vPtPdl86rNtIyczJIjZF/1RK9L1YUhPTDDaBTE2UuLs4YHI/mFwul2FpUfDBA9dKDni7O1PJwVbnlSalpOumqTLnKGTOUSSnpmNtZVmgwG+5uxepgPTjsfHJKBUKklUp9F45FrdpHZizS1sHpaqdN+MaDWNq8/GMazQM+QNzdTOFKYPrBOqNderOxQLtP333UoHtD/JBx+FEfraXuC8OcuL91fh61Cr2HkHFxOg/bcHBwQZlW2vXrs2dO3cKuaPkzJw5kylTprBo0SJdSVlAr6RsYGAg58+fp2vXrgCMHz8eb+9nI7QiIT2Z9gtGcDnqtrZh4zd8Hfg+EzsYX/f5nRWzWLAz/zz9N0FLOTR9NbaWhe/Szlq/gBnr5uted6jXgqBJi7Eyt6RFjcYcu3VOd02j1hB5KwpbZ1vcquRvaNhYWxQQElTw88xNTVCp9DOPZ+fkEhIei72tFQrJgoyMbJKzCi8cpihk0yY7J1f3s4lSiUqWy7StC6jq5MkrTXrolgY6eLfEx9aTQ+EnMFWY0sGrJW5W+iUlGlcuOBFvI586BbY/jInCBAdLk+I7Cio0Ru9ud+nShcWLF1O5cmVd27179xg5ciR79ux5bAaWJRX9xM3MbYv4bMcvem1mSlNCZu6kknXxyV+vR9yhziRDr/rrwVN4v9cbBd4THBtG9Ymd9M5sA/w8chZvdnqVS6E36PnVKN1OeT3PGvzyxmfM272E6zl3dcLoaG9DJcf8M861bmoF54x7CNbW+ZtFaemZREYnFFmCxjOmL5AfJ1lQslwLc1ODOjm5uSruhuov/6jUajIys2noVBsHlSXrT+7ExsKKd7q+xvQX3y5yGSIjO5P2s4dy8s4FXdsb7QeyePQXRVgveNYw2pMcMGAAEyZMYOLEiXh7exMSEsIPP/wgArnLkJMPnZMGyFblcDHyJh1qBhR7/4XQ6wW2nw+5Vug9x2+dNxBIgGO3zvFmp1dp4F2LO9/t5eC1U5iZmNKyph9qjZqzf94kU8rEycEGmUxGSloGjvbWekmYNRqJQ3vO4lnHAzsbK1JSM8jIzMK+kBhLexMbFAoFSTbndW1qtVoX8fAgqWmZBIfFUMPbA5WkQq3SJq1QKOR6u+ZKhQJba0vupN3j1jntrCchLYmZ6+fjYGXLO91fL/SzsTSz4OD0P1l/cifXI+/SpnZTOjdoXWh/wbOJ0SI5ZswYlEolc+fOJSoqCjc3NwYOHMiIESMep33PFY08ahlk2TFRKKnrWs2o+5tWrY9MZlg+wL9qg0Lvqe9Vs9h2pUJJh/otSMvO4Hz4dSQkIpK1Z7JT0zMxNzchN1dFVGwitat5Ym1lQU6Oioy0TCrbeZCclEtIeDCgXbu0s7HS8+AkScJZZs+mEdpwsl9PreVM+GVuxVhyLToYT7dKKB7KgJ+VnUP/mt3oXL8ZCy+uRKGU4+Rgi72dNWGRcWRn5+r1V5jIsbSxICM1P0HHioP/FimSAGYmZrzaqk+RfQTPNkaLpFwuZ9SoUUYFbQtKx//aD2XtuZ3cic8/QTS1y2iDky+FUc3Fhyl93mTOpvzY1ebVG/FG+8K9/QbetRj+wossP5B/IKCORzVGtX9Zr99Ph/7mo83fk5qdjrWpJaYKE3LUuajUatLSteuL2TlpHDur9WY9LFpjZWrJvxMX8eOx1Wy4uhu5XE5OrorM7BzMTU2Qy+VkZ2YTHRzL9GFv4WhpT2RyLMev3mTX9dPYWCqo4uGGBn1P10Su5Itu7/Gaf196/fMGCtN8wVXI5VRysCU8Kt7gvcoU2iD2vLm+Ql5YVLxAkI/RInns2DE8PT3x9vYmNjaWr7/+GrlcznvvvYezs2ENZUHJcbFx4sykv1lzdjthiVF0r9uGllUblWiMLwa9z4CAbuy7cowarpXp7deh2NCTpWO+5MVmXdl/5QQ13HwY2joQmweCpi9F3mTCui90HmpaTvF5EJ1sHGjgURO1UsO+sGOFTrFlMhmabA3dGmnryAxa/gGqe374MoDr8r/RYBj8bqY05UXfzpwIuaAnkHnkJbnQQwLPGu5IGonkuBRiQuLodb+0wsMcuH2ayRu/5Wz4NZp61WNe4Hu0riaSuDyvGL1x06NHD5YsWYKHhwfvv/8+AGZmZiQkJJTZqZvHTUXfuKmofLlrCR9vnW/QPiKgH6ZKE3ZdP8Kd+HC9a69ZtyWgcgPOu0Sy/+6JIsfv5tWaH16axp24MGrO7kUltIW2FJVisbUu+BjfwAbd6VK1DTNOfIuNlb6QpmdkERKuXQ5QKORYmViQnqufBzMuPJ74iETGdxnKj8Nn6NrDk6Kp80VfMh4InbI2s+TGtC242oj8j88jJQom9/DwQKVScejQIWbNmsXMmTM5e/bs47RPUAFwtil4Z71VtcYsenkaadmZKBRyHO1tcK1krxOt0KQozkcWvmmUh29VbUhNXnmFOG4Rxy0yMnMKvWfr9f00r9yA2IhUvY0alUrNzbvhBIdFcyc0irsh0QYCCWDrqA2JWrhrFbXe78LCnauQJIm/z+7QE0iAtOwM/jm3s9j3IXg2MXq6bW1tTVxcHDdv3qR69epYWVmRk5ODSlV82n7B083Ljbvx2fZfdPVsAHwc3HnZTxtu5OngipW9CUqldo3P1toS81RTkrJTSTRJKXb8dlWaAeBoZUdT73pcDtWuyaamp2BjZaF3JDGPHHUujX7sh7ONI2cu3MLSyhyNpCEqJlEvw5Ba0hQYQvTgBOpmVDBvr/iUlMw0zGwLPtsuqhs+vxjtSQ4dOpSXXnqJDz74gCFDhgBw5swZqlUzbudV8PRiY27FwXdXMLb1y7So7MtbbQZx4J3lWN9PLdahblOdQOZh1DFISWJiy9ep4VSZJcfW4zW9M6dDr9BIPoBG8gFIag1ht6NIijEMKldptJtFsRkJ2NpaEnErkuDr4Qa1diRJIiXBMAN5UqyheM/fuZKBjbthYaIvylamFrzUuGvx70fwTFKiEKAuXbqgUCjw8fEBwNXVVdTdfk7wdnBj4cCPC7ympuSzicbOdVjQdxrONk6EJEby1t+zUd8XvlsabZkDKTUHcjVE34ulVTU/UuUZJGSmkJ6rv3Ekk8mwc7QhKyQWyVyJTJn/t1/KzCU+MZE3273C/uATxCTHExkeU6DwJmek4u3gxuYxC/hw47ecC79OE6+6fN3vA6MjDATPHiU6cV+1atUiXwueTwK8fAm6caBE91iaWOB8fyNk57WjOoEEiEcb9C0zVSDlatcb3S1c2XZmE0pTOZ6uhhsoSoUSJJASs5DMFcgUcqQcNeRqGNNlKDM7TwC0p2gW7/ub77cv526sfrLmlwK0OUo71Azg5AdrSvR+BM8uRYpkjx492LZtGwDt2rUrdAq1f//+MjdM8PTwYv2u/Bd8kn13jgPaOEZbM2tSsg0zBuWx9ew+frT/nbe7DsPDTj+EzALtRlG6RnvE0Ne7Nuuv7iNHnUtOJuSqVJgo87+6CpmcNSO+40bIHUyVptTxqMbyA+uJSYmnt18HhrXpp+traWbBO91fZ1jbfgxb9AFB94tz9WzUjh9em1Ymn4fg2aLIEKBTp07p6mqfOFF4GEdAQPFH5ioCIgSoYBLSkvj7WBDp2Zn0b9aFai4+pRrnYvQNwlOi8fdowJa1G8nIzeSsdTj7wo6jfKDUrKSRuHc1FHsTWyIXHkEjaWjx7RBdobHm8hEgwdHYhSDByvHfMPzvT3T3mygVODvaYWVhTm3nqkxoMZTONVqVyubYFG3QubOtCO8RFEyJSso+7QiRNORK2E3azR5CXKo2ea1SoWTBa59Q060K/tUaYldE9qCiWL58OenZGbx94DtMzExw9nbC0saC3Oxc4sITSE/WritmLLuIhak5SRkpNJ/zCjfjQ3CUKiNlq0nIvo2TtQOZudlkWkvIHsr882rTnqwaNufRPgCBoBiKnG7/8MMPRg3y7rvvlokxgtIRnhTN+YgbNHSvibdD0QmIY9MSmLt7KUfvnqeuWzVCw0J1AgmgUqt4a5k2uNrKzJKfRnzKsLb9SmVXXumI3OxcIm4ZlthoU9sfC1PtTrK9pS1r3viK9rOHEp+pTWorl8nxdnLj3L2rIFcis84/SeNgYcvULuKIrODxU6RIPphkNzs7m507d9KgQQM8PT2JiIjg4sWLuryOgvJh9o5f+GzHr6g0KhRyBZM7jeSzXgUnQlapVXT88Q2uRGk3Ro7du4Bc0j/P/CDp2RmMWjyVbr5tcbEr+XTUVFF4LsUqzl78MnKWXptflfpc/Wo7X274k//unSFeHcGt1EjMrM2wsrFErdGQlpGJWqVhx/9+op5b9RLb9DC3o++x9vh2zExMebVlb9zsxRFbgT5FiuScOflTmYkTJ/LNN9/oZQHfuXMn27dvf2QjMjMz+eijj7h8+TIKhYLJkyfToUMHg367d+9m0aJF5OTkIEkSAwYMYOTIkY/8/KeVs2FXmbEtv7yCWqPmi12/0bNe2wLPfAddPaQTyDw0MgnMlZBZcBhPjiqX/VeP83KLniW2z9nWiWou3tyJCdW1edi7sHTMHDo3bF1gggkLMwvOXzbBStOUS5oL2NlY4lklP6lybo4KYtT4+dQrsT0Ps/HUbgbOf0dX4mHmuvnsmboS/2oNH3lswbOD0cHkBw4coHPnznptHTt25L///ntkI5YsWYK1tTW7du3i559/Ztq0aaSnpxv0c3Z25qeffmLLli2sWbOG1atXc+rUqQJGfD7Yff1YIe1HC2yPTUsosN2imAqK3k7uRV7PIyoplvdXzaH97CHcir5HRnYmdhY2yGUyFHI5zas34visf+jW6IVCM/D8dXY7l1Tbua7ZjUwmw8nBVu+6iamS9s1b6OWtLA2SJPHeH1/oBBIgJTONj//+9pHGFTx7GP1Nq1y5Mn/88Yde2+rVq3WB5Y/Ctm3bGDRoEABVqlShQYMGHDhgGHfXqFEjXF1dAbCxsaF69eqEh4cb9HteKGz90cfRo8D2HnXbYFJARqC/3vyGH1+fwUd9x+Jobad3rWP9lrSsWXwGnMycLNrOepVvty3lv6snCE+I5kzwZc7eu4JGklBrNBy/fZ4/j2wucpyMnEySCCWJUEyUCoM8kgBp6uKzEBVHamaanoebx7l7Vx95bMGzhdHB5LNnz+btt99m8eLFuLq6Eh0djVKpZMGCBY9sREREBJ6enrrXxtTSvn37NufOnePTTz995Oc/rfT37YSvRy0uRORX76vrWo2XCzlC52HnwrLBs3ln3RwSMpKxMDHn466j6ePbAXy1fd7s+Ao/7FjBzahgmlatz8TuxiVVXndiB7ei7xXb76fdf/JhnzFFvqfPt6xGpVaTropFrdEYCGV9l4ITBZcEW0sbarlX5UbkXb32pkUkKBY8nxgtkvXq1WPHjh2cP3+emJgYnJ2dady4MSYm+YvzeRnLH6Z///56ZWAf5MiRIyU2OiYmhnHjxjFjxgydZ/k8YqY0Zd/bS/jp8N+cDr1CY8/ajGvzim7HuCBebdqD/r4duR4TTBVHD+ws9EN8Kjt78mKzroxZPI0tZ/excNcfzHzxHcZ3HVqkLVH3M5UXR7aq8Mw+AG42lWhlNoiErGSOaZaRnpKNnb2Fbl/J0cKOzAxtRcn+vh0xKWJzqDh+GDaN/t+NIys3Wzu2tT1zBr1f6vEEzyZlGifZpEkTzpw5U+L7evXqxZdffknDhtoF8zfffJN+/frRo0cPg77x8fG89tprDB8+vMT1dUScZPGkZqbh8047kjL0E0Ds+3gV7es1L/S+K2E3aTClly5bznCvLgAsD9ul169HQAds7ezwsndlfNtXqOqk///wxq8fse6w9uROsjoUJJg64C2qVfZh04X9bL1wSPeMllUasWvcr0X+USiO8IQo1p3YgbmpGS8FdMfR2r7UYwmeTR5t9fshSqu33bt356+//gK0pWsvXrxI27ZtDfolJiYyYsQIhgwZIgqQPSZ2XjxkIJAAfx3bWuR99bxqMv+1Twpc88zD3cuDHXePs/bcTr7b/zvNvnmV23H564JZOdmsOryRZFUoyapQXVjSP0e209S1AVvOH9T7jh0NPs+q00XblUdCerLes/LwdHTjne6vM6bjK0IgBQVSpiJpVHqsAnjjjTdISUmhS5cuvPnmm8yaNQtra226/x9++IHVq1cD8OuvvxIcHMxff/1FYGAggYGBrFu3rszsF2gDyAvC2ly/XZIkvt65DP85A+m5YCyXw2/ydtdh7J66wuBeU6UJ69//iejsJL32xIwUFhz4U/daI2lQazTYKj2wVeZvPuXk5nA2vODkvefCik7qq9aoGff3bDymd6TW7N40mNOf8+EFV5UUCAqiRFmAHheWlpbMn29YHgD0T/NMnjyZyZMnPymznks6N2hlsKFhbmJmUEys3XevczjkfunXaNg59yV2vfULHeq2YMXYeRzevp8cVS6V3bwY1q4/2YWkUwtOyF+rtjSzYECzboTe1NZ2P5rwk7ZPXDhLd/9d4P1+XnWLfD8/HfqLX46s1b2+Gn2Hl5d9wLWPN5X6j7rg+cJoT1KjMazNLHj2UCqU7PloBa+17U/lSp50btCKnVOWUccj/3TLpYgb+QJ5H0kO49doc4u+1rY/LWo0ppK9I6HqBL7Yu4Rhv3+EmdKwQFfnWvrrnL+Omk3laklcSd2k137oykl8rFz02lpXbcxQ/15Fvp9/L+wxaLsVF6IXESAQFIVRnqRarcbPz49Tp05halpAJbr7PEe5Mp5pvJzcWTF2XqHXT967XGB7eEqM7ueYtATi0pN0rzWShly1CjkyNPcXG61kZpio5HT7cgQRiTH0aPQCn/Qfz+qJs6jybnuS4/THD7kXwraPl3Im7Bq1XavQp367YitB2lvaGrTJZDIcCmgXCArCKJFUKBRUqVKFxMTEIkNugoKCyswwQcWlW73W2k2Vh2ardZzzkzAnZxrmktRIGjQp2SBJoJZIVWcwdkl+CrRLYTc4H3KNBYO/xdGsMvfQPyhgqjThher+dK3b2mhbJ7QdzKaL+9FI+TOhfg074uNg3CkigcDoNck+ffowduxYXnvtNYNYyJYtWwLaIHDBs4+HnQujm/fnt+Pr4f66npmkZOWI/LP+5iaFzDjUEqgKX7rZefEQs1bsoaFdIGfD9WNoR7Z7CXNTsxLZ2r5mM7aN/Ylv960kJi2e3vXbMbnT83veX1ByjI6T7NixY8EDyGTs2WO47lMREXGSZcvp4Ess+m8N3vZuTO4xSi9e8bclizkTdpVfE3fr2hxMrImPiCloKD1slG6sfWc+dxOv8vOe1WTmZvNqy958HPgWJsrSB48LBKVBJN0VPBaWL19OrlpFnA/ciLlH2+pNcFBaMeD7t41au/6w92jmvvrhE7BUICiaChECJHg2MVEo+ajLcL22HZOX8tPuP0nNSuelgO5sPrOXref26/VxMKlMblbpMqLncTnsJgt3rSI2JYG+TToxtE2gCPkRlAohkoInSpeGbejSsI3u9bA2/ag2sSPRD2xl17PthSa59Ekszty9TJtZr5CZkwXAPye2c/LOBea/Pr30hgueW8r0xI1AUFIszSz4b9of9G3SiUo2DrSt7c8Hrzbng8GFnxMvjq+2/qYTyDx+3rNGV/SrLAmLj2TGPz8wdsknbDmzt8zHF5Q/wpMUlDu1Paqx8f2fy2y8kLhIg7ZcdS4RiTFlWhXxRuRdWs58mYT7tXx+2buGKX3eZM4rH5TZMwTlj/AkBRWOi7fjuHg7rviOhdCloWEcpYeDK/W9anI3JpReX41COawOld9px297/yr1c77aslgnkHl8u23pY/FYBeWHEElBhePPHdf4c0fRiSuKYlKvUXRukF+H29HanpVj56GQK+j11WiCzv2HWqMmJD6CMUumEfTQxpGx3Ii6a9CWo8olOPb5zZb/LCKm24IKx7uDii8XURRW5pbs+mgF54KvEJuaoCtde+L2ea5G3Dbov/zAeno2bl/i57St7c+Bayf12hyt7WngXau0pgsqIEIkBRUONyerMhmncRX9ioqyh89R3kcuK92EalLv0ey8eJiTdy4AYGZiys8jZz1SEmBBxaNCiKSxJWXzyM7O5sUXX8TMzIz169c/QUsFhZGelcHnG39iy9l9uNlVooetHw5WdsXfWADnbmhP5TSu5VJMz5LhX60hDbxqcSlMPwPQiHYDSjWenaUNx2f9w74rx4hOjqNzg1ZlujEkqBhUCJF8sKRscHAwQ4YMYefOnVhZFexRfPfddzRq1Ihr10q/biUoW15dOJHN90NgLoZex9PLkkaV65RqrL92a0WsrEVSJpOxddJvvPv7bLafP4C3kzsfB75FN1/DLPglGbNj/ZZlaKWgolEhRHLbtm18+eWXgH5J2YJq3Jw6dYrg4GBGjBghRLKCcCcmRCeQDxKeEF2q8d57temjmlQoPpU8+Hfiosc2vuDZo0KIpLElZTMyMvjiiy/46aefCA4OfoIWCooiJcMwLRqASqMu1XjODhaPYo5AUKY8EZEsq5Ky8+bNY/Dgwbi6ugqRrED4+tShuqsPt6ND9NqdbRxLNd7pa1oPtGmd57dcsKDi8ERE8t9//y3yuoeHB+Hh4Tg6an+pIiMjad7c8Fja6dOnOXDgAIsWLSI7O5vk5GT69OnD5s2bH4vdAuOQy+Ws/99Chix8n0thNzAzMcXT0RUPh9KtKf6z9yYgRFJQMagQ0+28krINGzbUlZT95ptvDPo9KIbHjx9n7ty5Yne7guDrU4eLc7dyLzYceytb/v279FUsPxzqX4aWCQSPRoU4cWNsSVlBxaeysyd2lo+W5szB1hwHWxFrKKgYVAhP0tiSsg/SvHlz4UU+o5y4rN20C6jvVkxPgeDxUyFEUiB4kH//uwUIkRRUDIRICiocU15rVt4mCAQ6hEgKKhx21iWriCgQPE4qxMaNQPAgRy5EcORCwXG1AsGTRniSggrH5kN3AGjl61HOlggEQiQFFZBpI0pf30YgKGuESAoqHFYWJuVtgkCgQ6xJCiocB8+Gc/CsKIEgqBgIT1JQ4Qg6qq0d09bPs5ieAsHjR4ikoMIxY1SL8jZBINAhRFJQ4TA3FV9LQcVBrEkKKhz7Toey73RoeZshEADCkxRUQHYevwdAh6be5WyJQCBEUlAB+ezNVuVtgkCgo0JMtzMzM/nf//5Hly5d6N69O/v27Su079WrVxkyZAg9e/akZ8+e/Pfff0/QUsGTQKmQo1RUiK+mQFAxPEljS8pmZGTw9ttv880339C4cWNUKhWpqanlZLXgcbH7hLZWTucAn3K2RCCoICJpbEnZLVu20LRpUxo3bgyAUqnEwcHB6Oeo1drqfQVVYhSULUlJSQCEhYWV+N5Ne88AUMfj+fQm3dzcUCorxK+mgAoiksaWlL116xZKpZLRo0cTExND/fr1mTx5MnZ2dkY9JzY2FoAhQ4aUjeGCYvnpp59Kfe+OZWVoyFPEnj178PLyKm8zBPd5qkrKajQajh07xpo1a6hUqRJz5szhyy+/ZM6cOUbd36BBA/744w+cnZ1RKBRGP1cgeJK4uYmM7BWJp6qkrLu7O82bN8fFRVuqtE+fPkydOtVoO8zNzfH3F5X4BAKB8VSIRZ+8krKArqRs27ZtDfr16NGDCxcukJaWBsCBAweoXbv2E7VVIBA8X8gkSZLK24iMjAymTJnC1atXkcvlTJo0ic6dOwPakrIuLi68+uqrAGzYsIHFixcjk8nw8vLis88+o1KlSuVpvkAgeIapECIpEAgEFZUKMd0WCASCiooQSYFAICgCIZICgUBQBEIkBQKBoAiESAoEAkERVIhjiU+SzMxMPvroIy5fvoxCoWDy5Ml06NDBoN/x48cZM2YMVapUAcDU1JS1a9fqri9cuFAXJN+/f3/Gjx9fLnbu3r2bRYsWkZOTgyRJDBgwgJEjRwKwfv16vvjiC92RTy8vLxYuXPjItt29e5cpU6aQlJSEvb09c+fO1X1OeajVambPns3BgweRyWSMGTOGgQMHFnutrDDGxoULFxIUFIRcLsfExISJEyfq4nOnTJnCkSNHdLkBunfvzltvvVWmNgqeEqTnjAULFkgff/yxJEmSdPfuXalVq1ZSWlqaQb9jx45J/fv3L3CMEydOSL1795YyMzOlzMxMqXfv3tKJEyfKxc5z585JUVFRkiRJUkpKitS5c2fp5MmTkiRJ0rp166QJEyaUqV2SJEnDhg2TNmzYIEmSJG3YsEEaNmyYQZ9///1XGjlypKRWq6X4+Hipbdu2UmhoaLHXnqSNBw4ckDIyMiRJkqSrV69KTZs2lTIzMyVJkqTJkydLv//+e5naJHg6ee6m29u2bWPQoEGAfsahkhAUFES/fv0wNzfH3Nycfv36ERQUVC52NmrUCFdXVwBsbGyoXr064eGPrxxrfHw8V65coXfv3gD07t2bK1eukJCQoNcvKCiIgQMHIpfLcXR0pHPnzmzfvr3Ya0/SxrZt22JhYQFA7dq1kSRJl71IIMjjuRNJYzMOgfaIZP/+/Rk4cKDe+fPIyEg8PDz0xoiMjCw3O/O4ffs2586do0WL/GqDJ06cIDAwkCFDhrB///5HtisyMhJXV1ddghCFQoGLi4vB+y/oM8qzv6hrZYGxNj7Ihg0b8PHx0UsusWzZMvr06cO4ceO4fft2mdkneLp45tYkyyrjUP369fnvv/+wsbEhNDSUESNG4OrqSqtWZVNaoKzszCMmJoZx48YxY8YMnWfZvn17evbsibm5OVeuXGH06NGsXLmS6tWrP5LtzxonTpzghx9+YOnSpbq2iRMn4uzsjFwuZ8OGDYwaNYrdu3eL7FHPIc+cSJZVxiFra2vdz97e3nTu3JkzZ87QqlUr3N3d9QQuMjISd3f3crETtNPLESNGMGrUKL1ExXn3AtSrV48mTZpw4cKFRxJJd3d3oqOjUavVKBQK1Go1MTExBu8/7zPy9fXV2Z/nPRZ1rSww1kaAs2fPMmnSJBYtWkS1atV07Xl/aAD69evHnDlziIqK0vPuBc8Hz91029iMQzExMUj3j7UnJSVx+PBh6tSpoxtjw4YNZGVlkZWVxYYNGwyyqD8pOxMTExkxYgRDhgwx2CGOjo7W/RweHs65c+ceOWuSk5MTdevWZcuWLYA2W3zdunX1BDnP/rVr16LRaEhISGD37t1069at2GtlgbE2XrhwgYkTJzJ//nzq16+vd+3Bz+7gwYPI5XI94RQ8Pzx3CS6MzTi0atUqVq9ejVKpRK1W069fP0aNGqUbZ8GCBWzYsAHQehoTJkwoFzvnzp3LH3/8QdWqVXX3vvbaawwYMIBvv/2WPXv26KaII0aMoH///o9s2+3bt5kyZQopKSnY2toyd+5cqlWrxujRo3nnnXdo2LAharWaWbNmcfjwYQBGjx6t24gq6lpZYYyNAwYMIDw8XE/85s2bR+3atRk+fDjx8fHIZDKsra358MMPdWVDBM8Xz51ICgQCQUl47qbbAoFAUBKESAoEAkERCJEUCASCIhAiKRAIBEUgRFIgEAiKQIikoFjCwsKoXbs2KpUKgFGjRhUbDF8apk+fXiZZigSCskSEAAmKJSwsjE6dOnH58mWUyrI5pLV+/XrWrl3L6tWry2Q8geBxITzJp5g8z66s+gkEAkOESD5ldOzYkV9//ZU+ffrQuHHjQgWwoH7nzp3jlVdewd/fn759+3L8+HFd/2HDhvHNN9/w0ksv0aRJE956661C04YNGzZMLwHx33//TY8ePfDz86Nnz55cvnwZgF9//ZXOnTvr2nft2gVoT8PMmDGDc+fO4efnh7+/P6BNdPvdd9/pjdulSxcCAgIYO3as3lHB2rVrs3r1arp27Yq/vz+ffvopYlIkeCyUWyZLQano0KGD1LdvXykiIkKXINaYflFRUVJAQIC0f/9+Sa1WS4cOHZICAgKk+Ph4SZIkaejQoVKbNm2k69evS+np6dLbb78tvf/++5IkSVJoaKhUq1YtKTc3V9f377//liRJkoKCgqQ2bdpI58+flzQajRQcHCyFhYXprkVFRUlqtVraunWr1KhRIyk6OlqSJG1C4FdeeUXP5smTJ0vffvutJEmSdOTIESkgIEC6dOmSlJ2dLc2aNUsaPHiwrm+tWrWkMWPGSMnJyVJ4eLjUvHlz6b///iuLj1gg0EN4kk8hw4YNw93dHXNzc6P7bdy4kRdeeIF27dohl8tp3bo1DRo04L///tP1DwwMpFatWlhaWvLuu++yfft21Gp1kc/4559/GDVqFL6+vshkMipXrqzLlNOjRw9cXV2Ry+X07NmTypUrc+HCBaPe4+bNmxkwYAD169fH1NSU9957j3PnzhEWFqbrM3r0aGxtbfHw8KB58+Zcu3bNqLEFgpLwzKVKex4wNi3bg/0iIiLYvn07+/bt07WpVCq99GsP9vfw8CA3N5fExMQinxEZGYmPj0+B1zZs2MCyZct0mdIzMjKKHS+PmJgYvcw8VlZW2NvbEx0djZeXFwDOzs666xYWFqSnpxs1tkBQEoRIPoXIZLIS93N3dycwMJDZs2cX2v/BzN2RkZGYmJjg4OBQZEZvd3d3QkJCDNrDw8OZNm0ay5cvx8/PD4VCQWBgoNHvwcXFRa8MRUZGBklJSSJdmeCJI6bbzwl9+/Zl3759HDx4ELVaTXZ2NsePH9crm7Bp0yZu3bpFZmYmP/zwA926dSs2E/dLL73E0qVLuXTpEpIkce/ePcLDw8nMzEQmk+lyOK5bt46bN2/q7nNyciI6OpqcnJwCx+3duzfr16/n6tWr5OTk8O233+Lr66vzIgWCJ4XwJJ8T3N3dWbRoEV999RXvv/8+crkcX19fZs6cqesTGBjIlClTuHPnDgEBAXrXCqNHjx4kJSXx/vvvExMTg6enJ/PmzaNevXqMHDmSV155BZlMRr9+/WjSpInuvhYtWlCjRg3atGmDTCbT22kHaNWqFe+++y4TJkwgJSUFPz8/vZ1vgeBJIYLJBYB2k6dv375lXv9aIHjaEdNtgUAgKAIx3X5KiYiIoFevXgVe27p1a5kW1hIInmfEdFsgEAiKQEy3BQKBoAiESAoEAkERCJEUCASCIhAiKRAIBEUgRFIgEAiK4P94avaNSUdBDgAAAABJRU5ErkJggg==\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : no discovery %\n", "Replication probability at n = 100 : 0.0 %\n", "Replication probability at n = 200 : 25.0 %\n", "Replication probability at n = 300 : 62.16216216216216 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "text/plain": [ "{'r_rep_200': 0.10612941902239685, 'r_rep_max': 0.17595802104381736}" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_pearson', df=df, cv_only=False, filetag='PCA-SVR_ylim', ylim=(-0.6,0.8))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : no discovery %\n", "Replication probability at n = 100 : 0.0 %\n", "Replication probability at n = 200 : 25.0 %\n", "Replication probability at n = 300 : 62.16216216216216 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "text/plain": [ "{'r_rep_200': 0.10612941902239685, 'r_rep_max': 0.17595802104381736}" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_pearson', df=df, cv_only=True, filetag='PCA-SVR', ylim=(-0.6,0.8), xlim=(-0.5, 0.6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cognitive ability, PCA+SVR, partial correlation" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : no discovery %\n", "Replication probability at n = 100 : 90.9090909090909 %\n", "Replication probability at n = 200 : 100.0 %\n", "Replication probability at n = 300 : 100.0 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "text/plain": [ "{'r_rep_200': 0.2713589974517626, 'r_rep_max': 0.34611199458096925}" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, filetag='PCA-SVR', ylim=(-0.6,0.8), xlim=(-0.5, 0.6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cognitive ability, Ridge, pearson correlation" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : 40.625 %\n", "Replication probability at n = 100 : 78.66666666666666 %\n", "Replication probability at n = 200 : 100.0 %\n", "Replication probability at n = 300 : 100.0 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "text/plain": [ "{'r_rep_200': 0.31597434384989187, 'r_rep_max': 0.38191979503949747}" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('res/results_Ridge.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_pearson', df=df, filetag='Ridge', ylim=(-0.6,0.8), xlim=(-0.5, 0.6))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Cognitive ability, Ridge, partial correlation" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : 64.86486486486487 %\n", "Replication probability at n = 100 : 97.5 %\n", "Replication probability at n = 200 : 100.0 %\n", "Replication probability at n = 300 : 100.0 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "text/plain": [ "{'r_rep_200': 0.4062055329971098, 'r_rep_max': 0.47903946590450225}" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('res/results_Ridge.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, filetag='Ridge', ylim=(-0.6,0.8), xlim=(-0.5, 0.6))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAT8AAADlCAYAAAAldPBWAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA9qklEQVR4nO3deVxU1fvA8c8Mi4AbgoKAC2lpmBoKopXmAoooiJWGuXxzw8o0v2rmGrhlapqpSf5S00rTLFcQxdy+ipa5YGhuuaDsKLiyz3B+f5CTE4szODAs5/169Yq599x7n8vyeO5ynqMQQggkSZKqGKWxA5AkSTIGmfwkSaqSZPKTJKlKkslPkqQqSSY/SZKqJJn8JEmqkipt8gsKCmLFihXGDsNoRo4cybZt24pcP2XKFJYsWVKGEZW+CRMmsG/fvjI/blZWFu+++y5ubm588MEH7Ny5k+HDhxfZ/uLFiwwYMKAMI5QKJSqgrl27ilatWglXV1fh5uYmAgICxA8//CDUarWxQyuXtmzZIgYMGKC1bPLkyeLzzz83+LFiY2NFs2bNRG5ubrHtrl27JsaOHSs8PDxE27Ztha+vr/jmm29Eenq6cHNzE8eOHSuwzSeffCLGjh1b6P4uXLggfHx8RF5enkHOQx/btm0Tb7zxRpHn3KxZMxETE6O1bOTIkWL//v1lEZ5UhArb81u5ciVRUVEcPHiQwMBAVq1axfTp040dlt7UarWxQyhzN2/e5M0338TBwYHQ0FBOnTrF0qVLOXfuHCqVil69erFjxw6tbdRqNbt27aJv376F7vPHH3/Ez88PhUJRBmegHVdCQgLOzs6YmprqvJ2fnx8//vhjKUYmPZGxs29JdO3aVRw9elRr2R9//CGaN28uLl26JITQ7tmkpqaKUaNGCTc3N9GuXTvx1ltvaXqJCQkJ4v333xft27cXHh4eYtasWUIIIdRqtVixYoXo0qWL6NChg5g0aZK4f/++EEKIESNGiO+//17r+H5+fiIiIkIIIcSVK1fE0KFDRbt27USPHj3Erl27NO0mT54sgoKCxMiRI8WLL74oVq1aJV566SWhUqk0bSIiIoSfn1+B875586Zwc3PTxD59+nTRoUMHzfoPP/xQrF27VgghxODBg8XmzZvFlStXRMuWLcXzzz+v6Sk/imPmzJkiMDBQuLq6in79+okbN25o9nXq1Cnx+uuvi7Zt24rXX39dnDp1qsjv/7Jly8TEiROFEEJ07txZNGvWTLi6ugpXV1dx+vTpAucxceJEERgYWGD548d2dXUVGRkZmmWHDh0SHTp0KLJ31a1bN3HixAnN57L6+QUEBIgXXnhBtGjRQri6uorNmzdr9bQHDhwomjVrJl588UXh6uqq2VdSUpJo1aqVyM7OLvL7IJWuCtvz+7fWrVtTv359Tp48WWDd2rVrsbe359dff+Xo0aNMmDABhUKBWq3mnXfewdHRkQMHDnD48GF69eoFwNatW9m2bRvfffcd+/btIyMjg9mzZwPg6+tLWFiYZv9XrlwhISGBLl26kJGRwfDhw/H19eXYsWMsWbKEWbNmceXKFU37sLAw3n33XU6fPs2QIUOwtrYmMjJSs37Hjh2F9nAaNmxIjRo1OH/+PAAnTpzAysqKq1evaj57eHhobdO0aVNmzZqFq6srUVFRWt+f8PBwxowZw4kTJ2jUqJHmHuDdu3d55513GDJkCMePH2fYsGG888473Llz54k/h/Xr12tiiYqKok2bNgXa/Prrr3h7exe5j7Zt22JnZ8fevXu1vie+vr6F9q4yMjKIi4ujSZMmmmVl9fP79ttveeedd/Dx8SEqKor+/ftrxbZhwwZN/FFRUZrfL3t7e0xNTbl27VrR30ypVFWa5AdgZ2fHvXv3Ciw3NTXl1q1bJCQkYGZmhru7OwqFgujoaFJSUvjoo4+wsrKiWrVquLu7AxAaGsrQoUNp2LAh1atXZ8KECYSHh6NSqfDy8uLixYvEx8dr2nbv3h1zc3MOHTqEk5MTb7zxBqamprRo0QJvb2/27NmjicfT0xM3NzeUSiXVqlWjb9++7Ny5E8hPPJGRkfj6+hZ6ju3atePEiRPcunULAG9vb37//XdiY2N5+PAhzz//vM7fLy8vL1q3bo2pqSl9+vThwoULABw6dIjGjRvTt29fTE1N8fX1pUmTJhw8eFDnfRfn7t271KtXr9g2/v7+mkvfhw8fsn//fl577bVC2z548ACA6tWra5aV5c+vpKpXr66JXSp7lSr5JScnU7t27QLLR4wYQePGjRk+fDienp58/fXXACQmJuLo6FhobyIlJQUnJyfNZycnJ1QqFampqdSoUYPOnTuza9cuIL8n0KdPHwDi4+OJjo7G3d1d819oaKgmWQE4ODhoHcvf35+DBw+SkZHB7t27cXd3x87OrtBz9PDw4Pjx45w4cYJ27drRvn17Tpw4wYkTJ3B3d0ep1P1HWrduXc3XFhYWZGRkaM7d0dFRq62joyPJyck677s41tbWWt+Pwvj7+3P8+HGSk5PZs2cPjRo1okWLFoW2rVmzJgDp6emaZWX58yup9PR0TexS2dP9Dm05Fx0dTXJyMm5ubgXW1ahRgylTpjBlyhQuX77M22+/TatWrXBwcCAxMRGVSlUgAdrZ2Wl6BgAJCQmYmppia2sL5F86ffnll7Rr147s7Gzat28P5P9htGvXjrVr1+ocu729PW3atGHv3r3s2LGDt956q8i27dq1Y+HChdSvX5927drh5uZGcHAw1apVo127doVuo+9DADs7OxISErSWJSYm0qlTJwAsLS3JzMzUrHs8MehyrJdeeom9e/fyxhtvFNnGyckJNzc3du7cyeHDh4t80AFgZWVFo0aNuH79OjY2NppzKKufX0kkJyeTm5urdakula0K3/N7+PAhBw8eZMKECfTp04fmzZsXaHPw4EFu3LiBEIKaNWtiYmKCQqGgdevW1KtXj8WLF5ORkUF2djanTp0C8v84vv32W2JjY0lPT2fJkiX4+PhokmTnzp1JSEhg2bJl9OrVS9Pj6tKlCzExMWzfvp3c3Fxyc3OJjo7W3Jcrir+/P2vWrOHy5cv06NGjyHbOzs5Uq1aNnTt34uHhQY0aNbC1tSUiIqLI5Gdra0tycjI5OTk6fU87d+5MTEwMoaGhqFQqwsPDuXLlCl26dAHg+eefJzw8nNzcXM6ePUtERIRmWxsbG5RKJbGxsUXu/4MPPiAqKooFCxZoEueNGzf48MMPuX//vqbda6+9xoYNG4iKisLPz++JMZ84cULzuax/fsWpW7duge/H77//TocOHTA3Ny/xfqWnU2GT37vvvkubNm3o3LkzK1euZNiwYXz66aeFtr1x4wbDhg2jTZs2BAQE8NZbb9GhQwdMTExYuXIlN27coGvXrrz66qvs3r0bgDfeeIM+ffowePBgPD09MTc35+OPP9bs09zcnO7du3Ps2DGt+3M1atRgzZo1hIeH06lTJzp27MiiRYuemHi6d+9OfHw83bt3x9LSsti2Hh4eWFtbay6/PDw8EELwwgsvFNq+Q4cOPPvss3Ts2FHTwylOnTp1WLlyJWvXrqV9+/asXr2alStXanpV//3vf7l58yYeHh4sX75cKzFZWlry7rvv8tZbb+Hu7s6ZM2cK7L9Ro0Zs2rSJ+Ph4fH19cXNzY+zYsbRs2VLrvl2PHj24d+8eHTp0KPI2wCNvvvkmoaGhiL/LU5b1z684Y8aMYcqUKbi7uxMeHg7k32eULzobl0IIWcy0vPDy8mL27Nm8/PLLxg6lQpo4cSI+Pj54eXkZO5RiXbx4keDgYPmen5HJ5FdOREREsGjRIiIiIvR6aCFJUslUmgceFdmQIUO4cuUKCxculIlPksqI7PlJklQlVZpuhkqlIi4uDpVKZexQJEmqACrNZW9SUhKenp7s37+fBg0aGDucElu3bh0AQ4cO1XvbrJz8xG9hXml+rJKB5ebmEhcXR1ZWlrFDKXUmJiZYW1tTt27dQm8nyb+SSkQmPelJ4uLiqFmzJs7OzmVeAacsCSHIzc0lOTmZuLg4GjVqVKBNpbnslWDZj1Es+zHK2GFI5VhWVha2traVOvFB/kgjc3NznJyctIY9Pk4mv0rkaHQCR6MTntxQqtIqe+J7XHFvT8jrpErkx096GzsESaowZM9PkqQqSfb8KpHPf8gvyjBhYMHKNpJUXnXr1g1zc3NNbcQPP/yQTp06cebMGYKCgsjOzsbJyYnPPvtMU5XHEGTPrxI5cT6ZE+cNU3NPkh7ZcHQnzuM6oxzUDOdxndlwdKfBj7Fs2TJ27NjBjh076NSpE3l5eUyaNImgoCAiIiJwd3dn0aJFBj2mTH6VyMa5vdg4t5exw5AqkQ1HdzJq9XRu3E5AILhxO4FRq6eXSgJ83Llz57Qqqw8YMECrmrYhyOQnSVKRpm9eTEaO9gvRGTlZTN+82KDH+fDDD/Hz82PmzJncv39fU2X9ERsbG/Ly8rh7967BjimTXyWy4LsTLPjuxJMbSpKObt5O1Gt5SWzYsIGdO3eyZcsWhBCaiaZKm0x+lUj0ldtEX7lt7DCkSqRR3cLnKylqeUk8Ksprbm7OwIEDOX36NA4ODlpTKaSlpaFUKrG2tjbYccvkae+CBQuIiIggPj6e0NBQmjVrVqCNWq1m7ty5HDlyBIVCwahRowpMA1ge5KpyCd6yjO+ObEOhUNC7TRdu3Irntyt/4OLUlI/7vk/E2SNs+nUXluYWvOf5FpN8Awt9sfRiwlU+3DCfo5dP09zhGeb0/y8PMh9yLSUW68C2tHV+gQUDJtGuaWsWhn7NJzu+4kFWOiZKE8xMTGlk68jEXsMJ7BbAscunOXJnHrGZt9k49iNQKCBHhUKpBFMlQp2H4qGKakozMnOyUFiZobAwRQAIAUpF/v8VCngsVMXfHwT/FP8xUSioV9ea6pYWqNRq0u494MHDTKpbWmBnWxtTU5Mnfh9NTU2ws61NdStLinrntl41awaZtsT2TiZpdaw4YpXM83ZOmCkL37+F0pL6t51QpagxtTclyTaOrLzMQtvezUrncvwd3Bu35Ocr4WSoMqluasnQFv3xdn5Vq+3mqAjm7V1F3L1kujd/icV9P8SxdvGVpSuLT96cyKjV07Uufa3MLfjkzYkG2X9GRgZqtZqaNWsihCA8PBwXFxdatmxJVlYWJ0+exN3dnU2bNtGzZ0+DHPORMilpdfLkSZycnBg0aBArV64sNPlt376d0NBQVq1axd27d+nbty8//PCDzkUK4uLiyqSwwaQf5rNo15oi1ysVSvJEntayzwdPY7zPMK1lWTnZNJ3gScKdf57OmpmYMsTJk7y8PNbF/QJALcsafPzaGCb9ML/IY/7f8DmM/XY2OWYCZc2i54QQQiDSslBYmqKwMiv2PIvToH5dLC20j5OSeo96NrV0Hj3g3MAOc/OiY6hXzZo5Sc/g+N4kyMwES0serFnB0ZfqkCkKDsq3UFhi+2t9fhmxD1WmClNLU7qv8SL1pSSyROEJMEuVw8bzh7WSPcCCjlNxsWkKwIHLx+nx1Ts8/mfi6tScU5M263Se5c2FCxdwcXHRa5sNR3cyffNibt5OpFFdBz55cyKDXuljkHhiY2MZO3YsarWavLw8mjZtyowZM7Czs+P06dMEBwdrvery+IyDuirqnMuk5/foiU1xwsPD6d+/P0qlEhsbG7y8vNizZw8jR44sgwh1t+pg8b/0/058AKsO/Fgg+YX/cUgr8QHkqlXk5Wlvfz/zIUv3rCv2mIvDvyFHnYubzTAUCgWnxaZC2ykUCkQ1E7Ao+Y/d3My0QOIDsK5VXefEZ2lhXmziAxhk0hLH90bnJz6AzExqjngflyNbOW1TMPnZpzqxe0QEqsz8yjaqTBW/jNiHzxFvbthcKdAewMLUHPvqtUnO0J7rectf4cxoPxaAb45v59/9gzPxlzhx8xztGrXU6XwrukGv9DFYsvu3hg0bsn379kLXtW3bltDQ0FI5LpSjl5z//XTHwcGBpKQkI0ZUuFy1/vUCC9smV4+6gyq1uvj1efn7slH+XbmiuL780w7rLGJ7fYaL6pIkbe5k/JP4HsnMxCLlHtgUbK9KUWkSn2ZZpgpViqrQ9o8oFQUvoVXin+93UT/vkvweSOWLfOChpyGv+Ou/TceC2/Ry7YxNDWutZQoUBRKDhVk1RnYt/t7nO93eQqlU8sv9T9if91mR7YQQkK2G7JL/4ebkqMjOyS2w/N6DDJ33kZGZ/cTkn2ZjBf+exc7Skiy7gpPSA5jZmWJqqf1vuamlKaZ2Rf/7nqNWkZSeVmC5f9N/pg4d7F5wvPRz9RrRoXHr4sKXKoByk/z+/XQnMTGR+vXrGzGiwn0+eBrDO/ejmpk5FmbV6OPmiWvj/PsJTewasnbUfAa81BtTE1NqWFRngs9wpvm/V2A/NS1rsPuj1bg3aQWAc70G/DDmc1o2aIZVNQsAWjg9y44JXzHrjXGM834bUxPtP2SbGrWZ0++/fOQXyNZxK6hJNURGLiJP5N/fy1EjVPmX0UKVh7ifg4lQIh7mIjJV+W2EQPx9qa3Z7u//CiOEID45lfTMLIQQqNRqbqXe4869hyTduoP60b7+tY/HPwshiE9MJSsrW/P53+02qM6R8NVn/yRAS0tuf/0F52wKT7JJtvF0X+OlSYCP7vkl28ZrtXt0rIzcbCIvXaZn466Y/t37M1WY8lbzPrSp10LT3q9lF5a9MYX6tfLvNXV51p2dgcvlXCuVQJnO4dGtW7ciH3hs3bqVXbt2aT3w2LBhAw0bNtRp32X1wOMRlVqFQqHA5O8nj9m52VQzq6ZZn6vKRalUatYX5/FtH1VyfmvQW1r7A8jLyyMrJwsLcwtUeSpMlaZaf4SzVv9GXp6aSUNe5F5GOnVrWWOiNCFHnYsCMFGYYG5mTmZ2JgpFfi9TgYKM7ExUQoWVmSXqPDV5CBRA2sP71K9Tj7SHd8hR5VLNzBzyoE6N2jzITCflQRrOto5kq3NJz05HpcoDBKkZd7GpXpsctYr07AzqWdmQnptBRm42tx/epYmtA+nZWWTmZFPD0hJQkpZ5D2cbR0xNlCQ/SCPxbgr1alrjnJaFadItcuxsSK5vy/2cdBQKwa37t8HKBNM8cKxmh5nClAyyqZ5aDVWKGis7S/LqqclRQi1LC8xFNVTKXKqb1sLUzAQrcyvMTfLvOwohyFRlYWlqUeQluRCCXLUKc9OSPygqD0rywKOiM+oDj7lz57J3715u377NsGHDsLa2ZteuXQQGBvLBBx/QqlUr/P39+eOPP+jRI/+S4/3339c58RnDv3th/05UZnr8kfx726KWKZVKrCysADBXFnzocC0+/8Z9Dcsa1LCsUWSsltW0LyfNzQp/QlzLqhYAjnUK9sAtzC2oVzt/kHl10LqEf4aCVXP14VTHEc0unvlnuU7XAc76H0+hUGBlVvxE8QqFosInPklbpZm9rax7fqXlaebwkKQnkT2/f8gbF5IkGc2CBQvo1q0bzZs35/Lly5rl169fJyAgAG9vbwICAoiJidFpnT5k8qtEgr4+RtDXx4wdhlTJ/HByF8/M6onpf115ZlZPfji5y2D79vT0ZMOGDTg5OWktDw4OZuDAgURERDBw4ECCgoJ0WqcPmfwqkdjkh8QmPzR2GFIl8sPJXbzz42xu3klEILh5J5F3fpxtsATo7u6uGdv7SGpqKufPn8fX1xcAX19fzp8/T1paWrHr9FVuXnKWnt7aj3s8uZEk6WH6ruVk5P6rpFVuFtN3LWdgIe9AGkJiYiL29vaYmOS/KWFiYoKdnR2JiYkIIYpcZ2NTzNvshZA9P0mSihR7p/BRVkUtr0hk8qtEpn91lOlfHTV2GFIl0rCQ15yKW24IDg4OJCcno/57WKdarSYlJQUHB4di1+lLJr9KJCk1g6RU3YeZSdKTfNJ7LFZmFlrLrMws+KT32FI7pq2tLS4uLoSFhQEQFhaGi4sLNjY2xa7Tl7znV4msmdHd2CFIlcyj+3rTdy0n9k4SDevU55PeYw12v6+oARAzZ85kypQphISEUKtWLRYsWKDZprh1ehE6mjNnTqHL586dq+suSlVsbKxo1qyZiI2NNXYoT2Xt2rVi7dq1xg5DqqTOnz9v7BDKXFHnrPNl79atWwtdvnNn6c7iJOlu8pdHmPzlEWOHIUkVwhMve3/++Wcg/8bio68fiY2NNWhNfenp3HlQsMinJEmFe2Ly27FjBwC5ubmaryF/oHfdunVLfr0tGdzXU+U9P0nS1ROT3/fffw/AkiVLGD9+fKkHJEmSVBaKTX5CCE19s3HjxhWYX+IRWdixfPhw2WEAFn3w6hNaSpJUbPJr27YtUVFRALRo0aJAocdHyfHChQulF6Gks/TMguXlJUkqXLHJLzw8XPP1/v37Sz0Y6el8NdnT2CFIUoVR7PXq45OGf/nllzg5ORX6nyRJUkncuXOHwMBAvL298fPzY8yYMZoKLWfOnKFPnz54e3szfPhwUlNTNdsVt05XxSY/lUrFnTt3AIiIiNB751LZGr/kEOOXHDJ2GFIlE3rxAN3WvI3LF73otuZtQi8eMNi+FQoFI0eOJCIigtDQUBo2bMiiRYvIy8tj0qRJBAUFERERgbu7O4sWLQIodp0+ir3sDQgIoEuXLtSpU4fMzEy6dOlSaLtDhw7pfWDJ8HJUhT+QkqSSCr14gI/3LSNLlT/TXsKDFD7etwwAv+e7PfX+ra2tad++veazq6srGzdu5Ny5c1SrVg13d3cABgwYgKenJ59++mmx6/RRbPIbP348AwYMID4+nhEjRrBw4UJ9z00qQysmPf0voyQ9bsnRbzWJ75EsVTZLjn5rkOT3uLy8PDZu3Ei3bt1ITEzE0dFRs87Gxoa8vDzu3r1b7Dp9Bl088T0/BwcH7OzsaNmyJa6urpibFz7TlyRJlU/ig1t6LX8ac+bMwcrKisGDB/PLL78YfP//plNVFxMTE65cuYKpacmLwFy/fp0pU6ZosvOCBQtwdnbWapOamsrUqVNJTExEpVLRvn17ZsyY8VTHrUrGLT4IwNKJXY0ciVRZONSsR8KDlEKXG9KCBQu4ceMGK1euRKlU4uDgQEJCgmZ9WloaSqUSa2vrYtfpQ+e3k/v27cvGjRv12vnjdJl0ZOXKlTRt2pTQ0FB27tzJn3/+yd69e0t8TEmSns74V97GwlR7DmkL02qMf+Vtgx3j888/59y5c6xYsUJzZdmyZUuysrI4efIkAJs2baJnz55PXKcPnbtU0dHRrF+/njVr1lC/fn2tF543bNhQ7LaPJh1Zu3YtkD/pyJw5c0hLS9MqQqhQKEhPTycvL4+cnBxyc3Oxt7fX95yqLNnjkwzt0X29JUe/JfHBLRxq1mP8K28b7H7fX3/9xf/93//h7OzMgAEDAGjQoAErVqxg4cKFBAcHk52djZOTE5999hmQP6KsqHX60Dn5vfnmm7z55pt6HwCKn5Dk8eQ3evRoxo4dS8eOHcnMzGTQoEG4ubmV6JiSJBmG3/PdDP5w45HnnnuOS5cuFbqubdu2hIaG6r1OVzonv9dee+2pDqSLPXv20Lx5c7799lvS09MJDAxkz549JerSVkXvf5b//pV86itJT6bzPT8hBJs3b+Y///kPfn5+AJw4cUJrCFxRdJ10ZP369fTp0welUknNmjXp1q0bx48f1+d8qjRzUyXmprLIhCTpQue/lKVLl/Lzzz8TEBBAYmIiAPXr12f16tVP3FbXSUcaNGjA4cP5lUlycnL49ddfee6553Q+mapuyfguLBnfxchRSFLFoHPy27ZtGytXrqR3796ahx0NGjQgNjZWp+1nzpzJ+vXr8fb2Zv369cyaNQuAwMBAzp49C8C0adM4deoUfn5+9O3bF2dn5xLfZ5QkSSqOzvf81Go11atXB9Akv/T0dKysrHTavmnTpvz0008Flq9atUrzdaNGjTRPhCX9vbcgv/KOrO4iSU+mc8+vc+fOfPrpp+Tk5AD59wCXLl1K167y9YryorqlGdUtzYwdhiRVCDr3/KZOncrkyZNxc3NDpVLRpk0bXnnlFTmHRzkiKzhLFdHo0aOJi4tDqVRiZWXFxx9/jIuLS7GjwnQZMfYkOie/GjVqsGLFCm7fvk1CQgIODg7Uq2fYIS6SJJU/h+J+4/sLW7mdmUZdSxuGuLxOlwYdDLb/BQsWULNmTQD27dvHtGnT2LZtm2ZUmL+/Pzt27CAoKIjvvvsOoNh1utL5sveTTz4hOjqaunXr0rp1a5n4yqFRn/7CqE9Lf0C4VHUcivuNFX98x63MNARwKzONFX98x6G43wx2jEeJD+Dhw4coFArNqDBfX18gf1TY+fPnSUtLK3adPnTu+QkhGD16NFZWVvj6+uLr60uTJk30OphUuurUtDB2CFIl8/2FrWSrc7SWZatz+P7CVoP2/qZPn87Ro0cRQrB69epiR4UJIXQaMfYkOie/GTNmMG3aNH799VfCwsIICAigYcOG+Pn5MWzYMD1PVSoNC8Z0MnYIUiVzO7Pw3lRRy0vqk08+AWD79u0sXLiQcePGGXT/hdFrOIBSqeSVV17h008/JSwsDGtra1ngVJIqsbqWhfekilr+tPr27cvx48epX79+kaPCdB0x9iR6Jb+MjAx27NjBqFGj8Pb2xsTEhPnz5+t1QKn0jJj7CyPmynt+kuEMcXmdaibaBYyrmZgzxOV1g+w/PT1dM2IM4MCBA9SuXbvYUWG6jhh7Ep0vez/44AOOHDlCixYt6N27N/Pnz9f7YFLpqm+r2wvnkqSrR/f1Sutpb2ZmJuPGjSMzMxOlUknt2rVZuXIlCoWCmTNnMmXKFEJCQqhVq5bWa3XFrdOVzsmvVatWTJkyRat2vlS+fPLeK8YOQaqEujToYNCHG4+rW7cumzdvLnRdUaPCnrROVzonv8DAQFQqFSdOnCA5ORl7e3vatGkjS8xLklQh6Zy5rl69ynvvvUdWVhYODg4kJiZSrVo1Tel5yfiGzckv+b/24x5GjkSSyj+dk9+sWbN48803GTFihKawwZo1a5g5cybff/99qQUo6a6hfQ1jhyBJFYbOye/ixYusXbtWa+6Ot99+m5UrV5ZKYJL+Zo962dghSFKFofOrLnZ2dvz+++9ay06ePImdnZ3Bg5IkSSptOvf8xo8fz+jRo+nSpQuOjo4kJCRw6NChEs2aJJWOt2dFAPBtsLeRI5Gk8k/nnp+npydbt27lueeeIz09neeee46tW7fi5eVVmvFJemjiVJsmTrWNHYYkVQh6vafyzDPPMHr06CLX+/n5PfV0clLJBY8snXexJKksfPnllyxfvpzQ0FCaNWvGli1bWLduHXl5eTRs2JD58+djbW0NQPPmzWnWrBlKZX7/beHChTRv3lyv4xn0Jb24uDhD7k6SpHIg9kEMf96JJlOdgaWJFS/UaU3Dms4GPcaff/7JmTNncHJyAvJfrfviiy/YsWMHNjY2hISE8PnnnzN79mzNNps2bdJMrVESBp3n8PEnwVLZGxK8hyHBe4wdhlSJxD6IISr1BJnqDAAy1RlEpZ4g9kGMwY6Rk5PD7NmzmTlzpmbZ5cuXtcbrdu7c2eBXlWU2yev169cJCAjA29ubgIAAYmJiCm0XHh6On58fvr6++Pn5cfv27bIKscJzca6Di3MdY4chVSJ/3olGLdRay9RCzZ93og12jKVLl9KnTx8aNGigWfb8889z9uxZYmNjEUIQFhZGRkYGd+/e1bQZMmQI/v7+LF68WDO3kD7KbGyaLmWnz549y5dffsm3335LvXr1ePDgAebm5kXsUfq3acPaGzsEqZJ51OPTdbm+oqKiOHfuHB9++KHW8meeeYYZM2Ywfvx4FAoFnp75MxI+Gk576NAhHBwcePjwIZMmTWLFihWMHz9er2MbtOcnhCh0ua5lp9etW8fw4cM1JfJr1qxJtWrVDBmiJEl6sDQpvFJQUcv1deLECa5evYqnpyfdunUjKSmJESNGEBkZSe/evfn555/56aefePnll7G3t6dGjfxRTI9q99WoUYP+/ftz+vRpvY+tc/K7ePHiE9s8fjPyccWVpH7c1atXiY2NZdCgQbz22muEhIQUmVClggYF7WZQ0G5jhyFVIi/UaY2JwkRrmYnChBfqtDbI/keNGkVkZCQHDhzgwIED1K9fnzVr1tCxY0du3boFQHZ2NsuWLWP48OEA3Lt3j6ysLABUKhURERG4uLjofWydL3uHDh2KnZ0d/v7++Pn5FTqyw8/PT+8AHqdWq7l06RJr164lJyeHkSNH4ujoSN++fZ9qv1VF62frGjsEqZJ59FS3tJ/2Fmbq1KkkJCSQm5tLr169+M9//gPAtWvXCAoKQqFQaKbRLUnZe52TX2RkJIcOHWLnzp18+eWXtGnTBn9/f3r06IGlpWWx2z5edtrExKTIstOOjo707NkTc3NzzM3N8fT0JDo6WiY/HU3+TztjhyBVQg1rOpdJsoP8Ss6PrF69utA2bdq0MciTX50ve01NTfHy8mLZsmUcPnwYHx8fVq9ezcsvv8xHH33EqVOnitxW17LTvr6+REZGIoQgNzeX3377jeeff76EpyZJklQ0vR94pKens2/fPnbt2kVycjK9e/emcePGTJo0iVmzZhW53cyZM1m/fj3e3t6sX79e0zYwMJCzZ88C0Lt3b2xtbenVqxd9+/bl2WefpV+/fiU8tarnrRnhvDUj3NhhSFKFoPNl76FDh9ixYweHDx+mbdu29O/fHy8vL83T2EGDBtG1a1eCg4ML3b6ostOrVq3SfK1UKpk6dSpTp07V9zwkoF0Le2OHIFUAQogqMyAhLy+vyHU6J7/FixfTt29fpk6dWujDDmtra6ZNm1ayCCWDmDDQzdghSOWchYUFqamp2NraVuoE+OjWWXJycpFD4HRKfmq1mhYtWjBkyJBiXzru379/ySKVJKlMNGjQgLi4OM1rJJWZqakptWvXpm7dwt+C0Cn5mZiYcPTo0Ur9L0VlEDB9FwA/ftLbyJFI5ZWZmRnPPPOMscMoF3R+4PH222+zfPlycnNzSzMe6Sm80tqRV1rLqUUlSRc63/Nbv349t2/fZu3atdjY2Gj1Ag8dOlQasUl6+iCgjbFDkKQKQ+fkJ8vVl39ZOSoALMzlXMqS9CQ6/5V4eHiUZhySATyaw0Pe85OkJ9P5nl9OTg5LlizB09MTN7f8VyoiIyNZv359qQUn6efVNk682sbJ2GFIUoWgc/KbN28ely9fZtGiRZr7fc899xwbN24steAk/bzfz5X3+7kaOwxJqhB0vuzdt28fe/fuxcrKSjNpiL29PcnJyaUWnKSfew+zAahdQ9ZAlKQn0Tn5mZmZoVZrl7NOS0vTzKYkGd+oT/cB8p6fJOlC58venj17MnnyZGJjYwFISUlh9uzZ9O4t/9DKC0/3Rni6NzJ2GJJUIeic/MaPH0+DBg3o06cP9+/fx9vbGzs7O95///3SjE/Sw6jXWjHqtVbGDkOSKgSdL3vNzc2ZNm0a06ZNIy0tjTp16sjhbuXMrTv5k8rUq2OY+RUkqTLTuec3evRodu/eTU5OToERHlL5MGbRQcYsOmjsMCSpQtA5+Xl4eLBmzRpeeuklJk+ezJEjR4qtlSWVvZ4dGtOzQ2NjhyFJFYJeExgNHTqUmJgYwsLCmDdvHvfv38fHx4cZM2aUZoySjob5tTR2CJJUYehdxt7Z2ZkxY8awZMkSmjdvzoYNG0ojLqkE4pIfEJf8wNhhSFKFoNcI+Js3bxIWFsauXbtIS0ujZ8+ejB49urRik/Q0cdlhQL7nJ0m60Dn5vfHGG8TExNCtWzc++ugjXnnlFUxNZfWQ8sSvYxNjhyBJFYbO2WvEiBF069YNCwuL0oxHegqDffSftV6Sqiqd7/n16tWL7Oxstm/fzv/93/+xfft27t69q/OBrl+/TkBAAN7e3gQEBBATE1Nk22vXrvHiiy+yYMECnfcvwfWEe1xPuGfsMCSpQtA5+UVFRdG9e3c2bdrEpUuX2LRpEz169CAqKkqn7YODgxk4cCAREREMHDiQoKCgQtup1WqCg4Px8vLSNTTpb1NWRDJlRaSxw5CkCkHny9558+YRHBysNZY3PDycuXPnsmXLlmK3TU1N5fz586xduxYAX19f5syZQ1paGjY2Nlptv/76a7p06UJGRgYZGRn6nEuV91qXZ40dgiRVGDr3/GJiYvDx8dFa5u3tzc2bN5+4bWJiIvb29piYmAD5s8HZ2dmRmJio1e7ixYtERkYydOhQXcOSHjOge3MGdG9u7DAkqULQOfk1btyYXbt2aS3bs2cPDRs2NEggubm5fPzxx8yaNUuTJCX9XIq5w6WYO8YOQ5IqBJ0ve6dNm8a7777L999/j6OjI/Hx8dy4cYOVK1c+cVsHBweSk5NRq9WYmJigVqtJSUnBwcFB0+bWrVvcvHmTUaNGAXD//n2EEDx8+JA5c+aU4NSqnqBVxwD5np8k6ULn5Ne2bVt++eUXDh06REpKCl27dqVz5846FTO1tbXFxcWFsLAw/P39CQsLw8XFRet+n6OjI8ePH9d8Xr58ORkZGUyePFm/M6rC3vR8ztghSFKFoXPyS05OxsLCAn9/f82ye/fukZycjL29/RO3nzlzJlOmTCEkJIRatWppXmMJDAzkgw8+oFUrWYfuab3RrZmxQ5CkCkPn5Dd69GjmzZtH7dq1NcuSkpKYMWMGP/300xO3b9q0aaHtVq1aVWj7sWPH6hqa9LezV24B0OrZekaORJLKP72e9jZvrv0ksXnz5ly7ds3gQUklM3ft78xd+7uxw5CkCkHnnp+NjQ03btygceN/6sXduHFDTmBUjgz0ft7YIUhShaFXYYOxY8cyfvx4GjZsyM2bN1m6dCn9+/cvzfgkPfi/2tTYIUhShaFz8hs1ahSmpqYsWLCApKQk6tevT//+/Rk2bFhpxifp4eSFJADcXeobORJJKv90Tn5KpZKRI0cycuTI0oxHegqfrT8FyPf8JEkXOie/3377DScnJxo2bMitW7dYtGgRSqWSCRMmUK+efLpYHgzt/YKxQ5CkCkPnp72PDzubP38+KpUKhULBxx9/XGrBSfrxedkZn5edjR2GJFUIer3k7OjoiEqlIjIykgMHDmBmZkanTp1KMz5JD79GJwDwUmtHI0ciSeWfzsmvRo0a3L59m7/++oumTZtSvXp1cnJyUKlUpRmfpIcvfsyvrSiTnyQ9mc7Jb/DgwfTr14/c3FymTZsGwOnTp2nSRM4bUV4E+sshgpKkK71edenevTsmJiY0atQIAHt7e+bOnVtqwUn68fJoZOwQJKnC0Gv6tWeeeabYz5JxHY6KA+DVNg2MHIkklX/FJj8fHx92794NQOfOnVEoFIW2O3TokMEDk/S34uc/AJn8JEkXxSa/x4uIfvbZZ6UejPR03u/3orFDkKQKo9jk5+7urvnaw8Oj1IORno7s8UmS7opNfkuXLtVpJ+PGjTNIMNLT2fd7/mRS8sGHJD1ZsckvKSlJ83V2djZ79+6lZcuWODk5kZCQwNmzZ+nRo0epBynpZtWOs4BMfpKki2KT36effqr5evz48SxevBhvb2/Nsr1797Jnz57Si07Sy38D2hg7BEmqMHQe23v48GG8vLy0lnXr1o3//e9/Bg9KKpmXWjvK0R2SpCO95u3dsGGD1rKNGzdqXniWjG/3sRh2H4sxdhiSVCHo/JLz3LlzGTNmDKtXr8be3p7k5GRMTU1Zvnx5acYn6WHdrj8BZGUXSdKBzsmvRYsWRERE8Mcff5CSkkK9evVwdXXFzMxM0+ZRhefCXL9+nSlTpnD37l2sra1ZsGABzs7OWm1WrFhBeHg4SqUSMzMzxo8fL6vG6GHSYDdjhyBJFYZew9vMzMy03v37t169enH69OlC1wUHBzNw4ED8/f3ZsWMHQUFBfPfdd1ptWrduzfDhw7G0tOTixYsMHjyYyMhILCws9AmzypLl6yVJdzrf89OFEKLQ5ampqZw/fx5fX18AfH19OX/+PGlpaVrtOnXqhKWlJZA/LaYQgrt37xoyxEptx+Gr7Dh81dhhSFKFYNDkV9TY38TEROzt7TWVoE1MTLCzsyMxMbHIfW3fvp1GjRoVeRktFfRDxEV+iLho7DAkqULQ67K3rPz+++8sXbqUb775xtihVCgzhskhiJKkK52TX15eHkplyTqKDg4OJCcno1arMTExQa1Wk5KSgoODQ4G2UVFRTJo0iZCQEFkoVU+tnpUTSUmSrnTKZmq1GldXV3JycoptV9Q9P1tbW1xcXAgLCwMgLCwMFxcXbGxstNpFR0czfvx4li1bxgsvyJnI9LXlwGW2HLhs7DAkqULQKfmZmJjg7OzMnTt3im0XHh5e5LqZM2eyfv16vL29Wb9+PbNmzQIgMDCQs2fzx6TOmjWLrKwsgoKC8Pf3x9/fn0uXLul6LlXe5v1/sXn/X8YOQ5IqBJ0ve/38/Hj33Xf5z3/+U+AhxEsvvQRQ6GXsI02bNuWnn34qsHzVqlWar7ds2aJrOFIhZge+bOwQJKnC0Dn5bdy4EaDAiA6FQsH+/fsNG5VUIs2d6xg7BEmqMHROfgcOHCjNOCQD2PRL/i2CAd2bGzkSSSr/DPqen2Rc2w5dYduhK8YOQ5IqhHL5np9UMvPf72jsECSpwpDJrxJ5xrG2sUOQpApDXvZWIut3X2D97gvGDkOSKgSZ/CqR0MhrhEZeM3YYklQhyMveSmTxB68aOwRJqjBk8qtEGtjXNHYIklRhVLrL3qN/JACgUucxNSSSg6diAcjKUTE1JJIjUfEApGfmMjUkkmPR+e3vPcxmakgkv/+ZP13nnftZTA2J5NTFZABu3clkakgkZy6nAJCUms7UkEjOXr0NQFzKA6aGRHLhen6NwhuJ95kaEsnlm/lDAq/F32NqSCTX4u8BcPnmHaaGRHIj8T4AF66nMTUkkgfZ+T+Ss1dvMzUkkqTUdADOXE5hakgkt+5kAnDqYjJTQyK5cz8LgN//TGLY7AhWbv0DgGPRCUwNiSQ9MxeAI1HxTA2JJCtHBcDBU7FMDYlEpc4D8uf8nRoSqfk+RvwWw4yVRzWfdx29TvCqXzWfdx6+ypw1xzWftx68wrx1v2s+/7T/Mgu/P6n5vOmXSyzecErzef2eC3yx6Z/Ct9/uOs+XP53RfF6z8xxfbflD83nV9rOs2n5W8/mrLX+wZuc5zecvfzrDt7vOaz5/sek06/f8c/9z8YZTmvcgARZ+f5Kf9v8zDnreut/ZevCf14TmrDnOzsdqIwav+pVdR69rPs9YeZSI32I0n6eGRGrmTS7sd08qfypd8qvK0u5nceBknLHDkKQKQSGKKsVSwcTFxeHp6cn+/ftp0KCBscMpsXXr1gEwdOhQvbe9dScDgHp1rAwYkSRVTvKeXyUik54k6U5e9lYiX287y9fbzj65oSRJMvlVJvtP3mT/yZvGDkOSKgR52VuJfD3Vy9ghSFKFIZNfJVK7RjVjhyBJFYa87K1EVvx8hhU/nzF2GJJUIcjkV4kcjorn8N8vcUuSVDx52VuJfBvsbewQJKnCKLOe3/Xr1wkICMDb25uAgABiYmIKtFGr1cyaNQsvLy+6d+9e6IRHUtEszE2xMJf/nkmSLsos+QUHBzNw4EAiIiIYOHAgQUFBBdqEhoZy8+ZN9u7dy48//sjy5cuJi5PDtXS17Mcolv0YZewwJKlCKJPhbampqXh7e3P8+HFMTExQq9W0b9+evXv3ak1cPmrUKF5//XV69uwJwOzZs3F0dGTkyJFPPMaNGzfo0aMHgwYNolatWqV2LqXt1q1bANSrV0/vbX/5K7+qS/fnHhg0Junp9evXj/r162NqKnvm5UWZ/CQSExOxt7fHxMQEyJ8E3c7OjsTERK3kl5iYiKOjo+azg4MDSUlJOh3jUdLYsGGDASOvmK7sM3YE0r999dVXFX7ceWVTaf4ZatmyJRs2bKBevXqaJCtJ5Un9+vWNHYL0mDJJfg4ODiQnJ6NWqzWXvSkpKTg4OBRol5CQQOvWrYGCPcHiWFhY4O7ubvDYJUmqnMrkgYetrS0uLi6EhYUBEBYWhouLi9YlL0DPnj356aefyMvLIy0tjX379uHtLV/fkCTJ8Mqsnt/Vq1eZMmUK9+/fp1atWixYsIAmTZoQGBjIBx98QKtWrVCr1cyePZujR/MrCAcGBhIQEFAW4UmSVMVUmmKmkiRJ+pDD2yRJqpJk8pMkqUqSyU+SpCpJJj9JkqokmfwkSaqSqnzyy8zM5L///S/du3enZ8+eHDx4sNB2+/bt4/XXX8fX15fevXvzzTffPNVxy0uVG13iWLFiBb1798bPz4/XX3+dI0eOlHkMj1y7do0XX3yRBQsWGDQGfeIIDw/Hz88PX19f/Pz8uH37tsFjkcqAqOKWL18upk+fLoQQ4vr16+Lll18WDx8+LNDuzJkzIikpSQghxP3794WXl5c4ceJEiY87ZMgQsX37diGEENu3bxdDhgwp0Gbbtm1i+PDhQq1Wi9TUVNGpUycRGxtb4mOWNI7Dhw+LjIwMIYQQFy5cEG5ubiIzM7NMYxBCCJVKJQYPHiwmTJgg5s+fb7Dj6xNHdHS08PHxESkpKUKI/N+FrKwsg8cilb4q3/PbvXu35kVqZ2dnWrZsyeHDhwu0e/HFF7G3twegZs2aNG3alPj4klVNTk1N5fz58/j6+gLg6+vL+fPnSUtL02oXHh5O//79USqV2NjY4OXlxZ49e0p0zKeJo1OnTlhaWgLQvHlzhBDcvXu3TGMA+Prrr+nSpQvOzs4GOXZJ4li3bh3Dhw/XVN2pWbMm1arJuVMqoiqf/BISEnByctJ81qWSzNWrVzlz5gwdOnQo0TGLq3Lz73YlrXJjyDget337dho1amSwQfq6xnDx4kUiIyMZOnSoQY5b0jiuXr1KbGwsgwYN4rXXXiMkJAQhxwlUSJWmqktRXnvtNRISEgpdd+zYMb33l5KSwujRowkODtb0BKuK33//naVLlz71/U595ebm8vHHH/Ppp58avWKPWq3m0qVLrF27lpycHEaOHImjoyN9+/Y1alyS/ip98tu2bVux6x0dHYmPj9cUWUhMTKR9+/aFtk1NTWXYsGGMHDkSHx+fEsdUFlVuDBkHQFRUFJMmTSIkJIQmTZqUaQy3bt3i5s2bjBo1CoD79+8jhODhw4fMmTOnzOKA/N+Xnj17Ym5ujrm5OZ6enkRHR8vkVwFV+cvenj178uOPPwIQExPD2bNn6dSpU4F2d+7cYdiwYQwaNIj+/fs/1THLS5UbXeOIjo5m/PjxLFu2jBdeeMFgx9c1BkdHR44fP86BAwc4cOAAb7/9Nm+++abBEp+ucUD+vcDIyEiEEOTm5vLbb7/x/PPPGywOqQwZ93mL8aWnp4uxY8cKLy8v0aNHD/HLL79o1n3xxRfihx9+EEIIMX/+fNGqVSvRp08fzX8///xziY975coV0a9fP9GjRw/Rr18/cfXqVSGEECNHjhTR0dFCiPynm0FBQcLT01N4enqKTZs2PcWZljyO119/XbRv317r3C9evFimMTxu2bJlpfK0V5c41Gq1mDdvnujZs6fo1auXmDdvnlCr1QaPRSp9sqqLJElVUpW/7JUkqWqSyU+SpCpJJj9JkqokmfwkSaqSZPKTJKlKksmviouLi6N58+aoVCoARo4c+cQXw0siKCiIFStWGHy/klRS8lWXKi4uLg5PT0/+/PNPTE0NM+Bn69at/PTTT2zcuNEg+5Ok0iB7fuXUo56YodpJkqRNJr9ypFu3bnz99df4+fnh6upaZGIrrN2ZM2cYMGAA7u7u9OnTh+PHj2vaDxkyhMWLF9OvXz/atm3Le++9V2RJqiFDhmgVTd28eTM+Pj60adOGXr168eeffwL55aW8vLw0y3/55Rcgv+pJcHAwZ86coU2bNri7uwMwZcoUlixZorXf7t274+HhwbvvvktycrJmXfPmzdm4cSM9evTA3d2dWbNmycopkuEZdXyJpKVr166iT58+IiEhodhiof9ul5SUJDw8PMShQ4eEWq0WkZGRwsPDQ6SmpgohhBg8eLDo2LGjuHTpkkhPTxdjxowREydOFEIIERsbK5o1ayZyc3M1bTdv3iyEECI8PFx07NhR/PHHHyIvL0/ExMSIuLg4zbqkpCShVqvFrl27xIsvviiSk5OFEEJs2bJFDBgwQCvmyZMni88//1wIIcSxY8eEh4eHOHfunMjOzhazZ88WAwcO1LRt1qyZGDVqlLh3756Ij48X7du3F//73/8M8S2WJA3Z8ytnhgwZgoODAxYWFjq327FjB6+++iqdO3dGqVTyyiuv0LJlS/73v/9p2vv7+9OsWTOsrKwYN24ce/bsQa1WF3uMn3/+mZEjR9K6dWsUCgWNGzfW1D708fHB3t4epVJJr169aNy4MdHR0TqdY2hoKG+88QYvvPAC5ubmTJgwgTNnzhAXF6dpExgYSK1atXB0dKR9+/ZcvHhRp31Lkq4qfUmriqawclJPapeQkMCePXu05h9RqVRapbkeb+/o6Ehubi537twp9hiJiYk0atSo0HXbt29n7dq1mmrWGRkZT9zfIykpKVrVYapXr461tTXJyck0aNAAQFMpGcDS0pL09HSd9i1JupLJr5xRKBR6t3NwcMDf35+5c+cW2f7xisSJiYmYmZlRp06dYqs2Ozg4cPPmzQLL4+PjmTFjBuvWraNNmzaYmJjg7++v8znY2dlpTQGQkZHB3bt3q1xxWMm45GVvJdCnTx8OHjzIkSNHUKvVZGdnc/z4ca2S9zt37uTKlStkZmaydOlSvL29n1gVuV+/fnzzzTecO3cOIQQ3btwgPj6ezMxMFAqFptbdli1b+OuvvzTb2drakpycTE5OTqH79fX1ZevWrVy4cIGcnBw+//xzWrduren1SVJZkD2/SsDBwYGQkBA+++wzJk6ciFKppHXr1sycOVPTxt/fnylTpnDt2jU8PDy01hXFx8eHu3fvMnHiRFJSUnBycmLhwoW0aNGC4cOHM2DAABQKBX379qVt27aa7Tp06MCzzz5Lx44dUSgUWk+eAV5++WXGjRvH2LFjuX//Pm3atNF6EixJZUG+5FwFDBkyhD59+jx1BWpJqkzkZa8kSVWSvOwthxISEujdu3eh63bt2mXQSYwkqaqSl72SJFVJ8rJXkqQqSSY/SZKqJJn8JEmqkmTykySpSpLJT5KkKun/AbFFFJkA49MvAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : 64.0 %\n", "Replication probability at n = 100 : 97.0 %\n", "Replication probability at n = 200 : 100.0 %\n", "Replication probability at n = 300 : 100.0 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x216 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Replication probability at n = 50 : 64.86486486486487 %\n", "Replication probability at n = 100 : 97.5 %\n", "Replication probability at n = 200 : 100.0 %\n", "Replication probability at n = 300 : 100.0 %\n", "Replication probability at n = 495 : 100.0 %\n" ] }, { "data": { "text/plain": [ "{'r_rep_200': 0.4062055329971098, 'r_rep_max': 0.47903946590450225}" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.read_csv('res/results_Ridge.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, cv_only=False, filetag='Ridge', ylim=(0,1.1), xlim=(-0.3, 0.7))" ] }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_null_Ridge.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, cv_only=False, filetag='Ridge', ylim=(0,1.1), xlim=(-0.4, 0.4))" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_null_Ridge.csv')\n", "plot(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, cv_only=True, filetag='Ridge_null', ylim=(-0.45,0.45), xlim=(-0.4, 0.4))" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Inflation histograms" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(3, 1.5)})\n", "sns.set_style(\"white\")\n", "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "tmp = df.loc[(df.target=='CogTotalComp_AgeAdj') & (df.connectivity=='netmats_pearson')]\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_overfit, color='orange', alpha=0.5)\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_overfit, color='black',fill=False)\n", "\n", "\n", "df = pd.read_csv('res/results_Ridge.csv')\n", "tmp = df.loc[(df.target=='CogTotalComp_AgeAdj') & (df.connectivity=='netmats_pearson')]\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_overfit, color='red', alpha=0.5)\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_overfit, color='black',fill=False)\n", "sns.despine()\n", "\n", "plt.savefig('fig/hist_inflation_overfit.pdf')\n", "plt.show()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(3, 1.5)})\n", "sns.set_style(\"white\")\n", "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "tmp = df.loc[(df.target=='CogTotalComp_AgeAdj') & (df.connectivity=='netmats_pearson')]\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_cv, color='orange', alpha=0.5)\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_cv, color='black',fill=False)\n", "\n", "\n", "df = pd.read_csv('res/results_Ridge.csv')\n", "tmp = df.loc[(df.target=='CogTotalComp_AgeAdj') & (df.connectivity=='netmats_pearson')]\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_cv, color='red', alpha=0.5)\n", "sns.histplot(tmp.r_replication - tmp.r_discovery_cv, color='black',fill=False)\n", "sns.despine()\n", "\n", "plt.savefig('fig/hist_inflation_cv.pdf')\n", "plt.show()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(3, 1.5)})\n", "sns.set_style(\"white\")\n", "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "tmp = df.loc[(df.target=='CogTotalComp_AgeAdj') & (df.connectivity=='netmats_pearson')]\n", "sns.histplot(tmp.r_discovery_cv - tmp.r_replication, color='blue', alpha=0.5)\n", "sns.histplot(tmp.r_discovery_cv - tmp.r_replication, color='black',fill=False)\n", "\n", "tmp = df.loc[(df.target=='CogTotalComp_AgeAdj') & (df.connectivity=='netmats_pearson')]\n", "sns.histplot(tmp.r_discovery_overfit - tmp.r_replication, color='red', alpha=0.5)\n", "sns.histplot(tmp.r_discovery_overfit - tmp.r_replication, color='black',fill=False)\n", "sns.despine()\n", "\n", "plt.axvline(0, color='gray')\n", "\n", "plt.savefig('fig/hist_inflation_cv_vs_overfit.pdf')\n", "plt.show()" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# False positives with biased and unbiased estimates\n", " Evaluated via a null model" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(3, 1.5)})\n", "sns.set_style(\"white\")\n", "\n", "df = pd.read_csv('res/results_null_PCA_SVR.csv')\n", "\n", "def fpr(x, alpha=0.05):\n", " return (x<alpha).sum()/len(x)\n", "\n", "df_fpr = df.groupby('n')['p_discovery_cv'].agg([fpr])\n", "sns.lineplot(x='n', y='fpr', data=df_fpr)\n", "df_fpr = df.groupby('n')['p_discovery_overfit'].agg([fpr])\n", "sns.lineplot(x='n', y='fpr', data=df_fpr)\n", "sns.despine()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(2, 1)})\n", "sns.set_style(\"white\")\n", "\n", "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "tmp = df[df.target == 'CogTotalComp_AgeAdj']\n", "\n", "num_perm = 1000\n", "\n", "\n", "# helper functions to compoute conf. intervals for correlation\n", "def r_to_z(r):\n", " return math.log((1 + r) / (1 - r)) / 2.0\n", "\n", "def z_to_r(z):\n", " e = math.exp(2 * z)\n", " return (e - 1) / (e + 1)\n", "\n", "def r_confidence_interval(r, alpha, n):\n", " z = r_to_z(r)\n", " se = 1.0 / math.sqrt(n - 3)\n", " z_crit = stats.norm.ppf((1 + alpha)/2) # 2-tailed z critical value\n", "\n", " lo = z - z_crit * se\n", " hi = z + z_crit * se\n", " # Return a sequence\n", " return (z_to_r(lo), z_to_r(hi))\n", "\n", "r_ci_lo = [r_confidence_interval(0, 0.95, n=n)[0] for n in df.n.unique()]\n", "r_ci_hi = [r_confidence_interval(0, 0.95, n=n)[1] for n in df.n.unique()]\n", "\n", "tmp['inflation_cv'] = tmp.r_discovery_cv - tmp.r_replication\n", "tmp['inflation_overfit'] = tmp.r_discovery_overfit - tmp.r_replication\n", "\n", "sns.lineplot(x='n', y='inflation_cv', data=tmp, ci='sd', color=\"blue\")\n", "sns.lineplot(x='n', y='inflation_overfit', data=tmp, ci='sd', color=\"red\")\n", "sns.lineplot(x=df.n.unique(), y=r_ci_lo, linestyle='dotted', color='gray')\n", "sns.lineplot(x=df.n.unique(), y=r_ci_hi, linestyle='dotted', color='gray')\n", "sns.despine()\n", "plt.savefig('fig/curves_biased_vs_unbiased.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(2, 1)})\n", "sns.set_style(\"white\")\n", "\n", "df = pd.read_csv('res/results_null_PCA_SVR.csv')\n", "tmp = df[df.target == 'CogTotalComp_AgeAdj']\n", "\n", "num_perm = 1000\n", "\n", "\n", "# helper functions to compoute conf. intervals for correlation\n", "def r_to_z(r):\n", " return math.log((1 + r) / (1 - r)) / 2.0\n", "\n", "def z_to_r(z):\n", " e = math.exp(2 * z)\n", " return (e - 1) / (e + 1)\n", "\n", "def r_confidence_interval(r, alpha, n):\n", " z = r_to_z(r)\n", " se = 1.0 / math.sqrt(n - 3)\n", " z_crit = stats.norm.ppf((1 + alpha)/2) # 2-tailed z critical value\n", "\n", " lo = z - z_crit * se\n", " hi = z + z_crit * se\n", " # Return a sequence\n", " return (z_to_r(lo), z_to_r(hi))\n", "\n", "r_ci_lo = [r_confidence_interval(0, 0.95, n=n)[0] for n in df.n.unique()]\n", "r_ci_hi = [r_confidence_interval(0, 0.95, n=n)[1] for n in df.n.unique()]\n", "\n", "sns.lineplot(x='n', y='r_discovery_cv', data=tmp, ci='sd', color=\"blue\")\n", "sns.lineplot(x='n', y='r_discovery_overfit', data=tmp, ci='sd', color=\"red\")\n", "sns.lineplot(x=df.n.unique(), y=r_ci_lo, linestyle='dotted', color='gray')\n", "sns.lineplot(x=df.n.unique(), y=r_ci_hi, linestyle='dotted', color='gray')\n", "sns.despine()\n", "plt.savefig('fig/null_biased_vs_unbiased.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_null_PCA_SVR.csv')\n", "tmp = df[df.target == 'CogTotalComp_AgeAdj']\n", "\n", "binwidth = 0.05\n", "\n", "sns.histplot(tmp.r_discovery_cv, color='blue', alpha=0.5, binwidth=binwidth)\n", "sns.histplot(tmp.r_discovery_cv, color='black',fill=False, binwidth=binwidth)\n", "\n", "sns.histplot(tmp.r_discovery_overfit, color='red', alpha=0.5, binwidth=binwidth)\n", "sns.histplot(tmp.r_discovery_overfit, color='black',fill=False, binwidth=binwidth)\n", "\n", "plt.axvline(0, color='gray')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Replication Probabilities" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "PCA-SVR, pearson" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " axes[i_target].fill_between(tmp.n.unique(), replication_prob, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('PCA-SVR, pearson')\n", " plt.savefig('fig/replication_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Ridge, pearson" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " #fig.xlim((50,500))\n", " #fig.ylim((0,100))\n", " axes[i_target].fill_between(tmp.n.unique(), replication_prob, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('Ridge, pearson')\n", " plt.savefig('fig/replication_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "PCA-SVR parcor" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " axes[i_target].fill_between(tmp.n.unique(), replication_prob, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('PCA-SVR, parcor')\n", " plt.savefig('fig/replication_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "Ridge, parcor" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " axes[i_target].fill_between(tmp.n.unique(), replication_prob, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('Ridge, parcor')\n", " plt.savefig('fig/replication_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Multivariate Statistical Power" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"whitegrid\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " power = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " power[i] = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() / len(tmp2['r_discovery_cv']) * 100\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=power, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " #fig.xlim((50,500))\n", " #fig.ylim((0,100))\n", " axes[i_target].fill_between(tmp.n.unique(), power, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('PCA-SVR, pearson')\n", " plt.savefig('fig/power_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"whitegrid\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " power = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " power[i] = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() / len(tmp2['r_discovery_cv']) * 100\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=power, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " #fig.xlim((50,500))\n", " #fig.ylim((0,100))\n", " axes[i_target].fill_between(tmp.n.unique(), power, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('Ridge, pearson')\n", " plt.savefig('fig/power_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"whitegrid\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " power = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " power[i] = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() / len(tmp2['r_discovery_cv']) * 100\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=power, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " axes[i_target].fill_between(tmp.n.unique(), power, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('PCA-SVR, parcor')\n", " plt.savefig('fig/power_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(4, 4)})\n", "sns.set_style(\"whitegrid\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/results_' + model + '.csv')\n", "df_null = pd.read_csv('res/results_null_' + model + '.csv')\n", "\n", "fig, axes = plt.subplots(6, sharex=True, sharey=True)\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:cyan']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " power = np.zeros(len(tmp.n.unique()))\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " power[i] = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() / len(tmp2['r_discovery_cv']) * 100\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=power, color=cols[i_target], ax=axes[i_target]).set(title=target)\n", " #fig.xlim((50,500))\n", " #fig.ylim((0,100))\n", " axes[i_target].fill_between(tmp.n.unique(), power, color=cols[i_target])\n", " sns.despine()\n", " fig.suptitle('Ridge, parcor')\n", " plt.savefig('fig/power_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Learning Curves" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "def plot_learning_curve(target, feature, data, filetag=None):\n", " sns.set(rc={\"figure.figsize\":(3, 2)})\n", " sns.set_style(\"white\")\n", " tmp = df.loc[(data.target==target) & (data.connectivity==feature)]\n", "\n", " sns.lineplot(x='n', y='r_discovery_cv', data=tmp, ci=\"sd\")\n", " sns.lineplot(x='n', y='r_discovery_overfit', data=tmp, ci=\"sd\")\n", " sns.lineplot(x='n', y='r_replication', data=tmp, ci=\"sd\")\n", " plt.ylim((-0.2, 1.01))\n", " sns.despine()\n", " if filetag:\n", " plt.savefig('fig/learning_curve_' + target + '_' + feature + '_' + filetag + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "plot_learning_curve(target='CogTotalComp_AgeAdj', feature='netmats_pearson', df=df, filetag='pca-svr')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_Ridge.csv')\n", "plot_learning_curve(target='CogTotalComp_AgeAdj', feature='netmats_pearson', df=df, filetag='ridge')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_PCA_SVR.csv')\n", "plot_learning_curve(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, filetag='pca-svr')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df = pd.read_csv('res/results_Ridge.csv')\n", "plot_learning_curve(target='CogTotalComp_AgeAdj', feature='netmats_parcor', df=df, filetag='ridge')" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# Composite figures to summarize improvement with Ridge and partial correlation" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "### Power: Pearson + PCA-SVR" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sample_size_needed = []\n", "variable = []\n", "method = []" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " power = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " power[i] = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() / len(tmp2['r_discovery_cv']) * 100\n", " if power[i] >= 80 and n_req == 600:\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=power, color=cols[i_target]).set(title=target)\n", "sns.despine()\n", "plt.axhline(80, linestyle = 'dashed')\n", "plt.axhline(100)\n", "plt.xlim(0,500)\n", "plt.ylim(0,100)\n", "plt.savefig('fig/power_all_' + feature + '_' + model + '.pdf')\n", "\n" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "### Power: Partial corr + Ridge" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " power = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " power[i] = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() / len(tmp2['r_discovery_cv']) * 100\n", " if power[i] >= 80 and n_req == 600:\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=power, color=cols[i_target]).set(title=target)\n", "sns.despine()\n", "plt.axhline(80, linestyle = 'dashed')\n", "plt.axhline(100)\n", "plt.xlim(0,500)\n", "plt.ylim(0,100)\n", "plt.savefig('fig/power_all_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(1, 2.3)})\n", "sns.set_style(\"white\")\n", "\n", "bar_df = pd.DataFrame(\n", " {\n", " 'sample size needed': sample_size_needed,\n", " 'target': variable,\n", " 'method' : method\n", " }\n", ")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "sns.barplot(x='sample size needed', y='method', hue='target', data=bar_df, palette=palette, ci=None,\n", " hue_order = ['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "sns.despine()\n", "plt.savefig('fig/power_bar_all.pdf')\n", "bar_df" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "### Replication: Pearson + PCA-SVR" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 58, "outputs": [], "source": [ "sample_size_needed = []\n", "variable = []\n", "method = []" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 59, "outputs": [ { "data": { "text/plain": "<Figure size 72x72 with 1 Axes>", "image/png": "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\n" }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", "\n", " if replication_prob[i] >= 80 and n_req == 600:\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target]).set(title=target)\n", "sns.despine()\n", "plt.axhline(80, linestyle = 'dashed')\n", "plt.axhline(100)\n", "plt.xlim(0,500)\n", "plt.ylim(0,100)\n", "plt.savefig('fig/replication_all_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", "\n", " if replication_prob[i] >= 80 and n_req == 600:\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target]).set(title=target)\n", "sns.despine()\n", "plt.axhline(80, linestyle = 'dashed')\n", "plt.axhline(100)\n", "plt.xlim(0,500)\n", "plt.ylim(0,100)\n", "plt.savefig('fig/replication_all_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(1, 2.3)})\n", "sns.set_style(\"white\")\n", "\n", "bar_df = pd.DataFrame(\n", " {\n", " 'sample size needed': sample_size_needed,\n", " 'target': variable,\n", " 'method' : method\n", " }\n", ")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "sns.barplot(x='sample size needed', y='method', hue='target', data=bar_df, palette=palette, ci=None,\n", " hue_order = ['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "sns.despine()\n", "plt.savefig('fig/replication_bar_all.pdf')\n", "bar_df" ], "metadata": { "collapsed": false } }, { "cell_type": "markdown", "source": [ "# True inflation" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sample_size_needed = []\n", "variable = []\n", "method = []" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_pearson'\n", "model = \"PCA_SVR\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "r1 = []\n", "r2 = []\n", "targets = []\n", "ns = []\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " num = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum()\n", " if num > 0:\n", "\n", " _r1 = tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold, 'r_discovery_cv'].values.tolist()\n", " _r2 = tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold, 'r_replication'].values.tolist()\n", "\n", " r1 += _r1\n", " r2 += _r2\n", " ns += [n]*num\n", " targets += [target]*num\n", "\n", " # less than 10% inflation\n", " print(target, n, np.mean(np.array(_r1)-np.array(_r2))/np.mean(_r2) )\n", " if 0 < np.mean(np.array(_r1)-np.array(_r2))/np.mean(_r2) < 0.10 and n_req == 600:\n", " print('!')\n", " n_req = n\n", "\n", " print('*', target, n_req)\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", "inf_df = pd.DataFrame({\n", " 'r_discovery': r1,\n", " 'r_replication': r2,\n", " 'inflation' : np.array(r1)-np.array(r2),\n", " 'n': ns,\n", " 'target': targets\n", "})\n", "\n", "inf_df.groupby(['target', 'n'])\n", "\n", "sns.lineplot(x='n', y='inflation', data=inf_df, hue=\"target\", palette=palette, ci=None,\n", " hue_order=['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.xlim(0,500)\n", "plt.ylim(0,1)\n", "sns.despine()\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "plt.savefig('fig/inflation_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "r1 = []\n", "r2 = []\n", "targets = []\n", "ns = []\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " num = (tmp2['r_discovery_cv']>=r_discovery_threshold).sum()\n", " if num > 0:\n", "\n", " _r1 = tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold, 'r_discovery_cv'].values.tolist()\n", " _r2 = tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold, 'r_replication'].values.tolist()\n", "\n", " r1 += _r1\n", " r2 += _r2\n", " ns += [n]*num\n", " targets += [target]*num\n", "\n", " # less than 10% inflation\n", " print(target, n, np.mean(np.array(_r1)-np.array(_r2))/np.mean(_r2) )\n", " if 0 < np.mean(np.array(_r1)-np.array(_r2))/np.mean(_r2) < 0.10 and n_req == 600:\n", " print('!')\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", "inf_df = pd.DataFrame({\n", " 'r_discovery': r1,\n", " 'r_replication': r2,\n", " 'inflation' : np.array(r1)-np.array(r2),\n", " 'n': ns,\n", " 'target': targets\n", "})\n", "\n", "sns.lineplot(x='n', y='inflation', data=inf_df, hue=\"target\", palette=palette, ci=None,\n", " hue_order=['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "plt.xlim(0,500)\n", "plt.ylim(0,1)\n", "sns.despine()\n", "plt.savefig('fig/inflation_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set_style(\"white\")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "g = sns.FacetGrid(inf_df, col=\"target\", hue=\"target\", xlim=(0,500), ylim=(-0.2, 0.7), height=1.8, aspect=0.8, palette=palette,\n", " col_order=['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "g.map(sns.lineplot, 'n', 'inflation', ci='sd')\n", "g.refline(y=0)\n", "plt.savefig('fig/true_inflation_all_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(1, 2.3)})\n", "sns.set_style(\"white\")\n", "\n", "bar_df = pd.DataFrame(\n", " {\n", " 'sample size needed': sample_size_needed,\n", " 'target': variable,\n", " 'method' : method\n", " }\n", ")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "sns.barplot(x='sample size needed', y='method', hue='target', data=bar_df, palette=palette, ci=None,\n", " hue_order = ['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "sns.despine()\n", "plt.savefig('fig/inflation_bar_all.pdf')\n", "bar_df" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sample_size_needed = []\n", "variable = []\n", "method = []" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", "\n", " if replication_prob[i] >= 80 and n_req == 600:\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target]).set(title=target)\n", "sns.despine()\n", "plt.axhline(80, linestyle = 'dashed')\n", "plt.axhline(100)\n", "plt.xlim(0,500)\n", "plt.ylim(0,100)\n", "plt.savefig('fig/replication_all_' + feature + '_' + model + '.pdf')" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(1, 2.3)})\n", "sns.set_style(\"white\")\n", "\n", "bar_df = pd.DataFrame(\n", " {\n", " 'sample size needed': sample_size_needed,\n", " 'target': variable,\n", " 'method' : method\n", " }\n", ")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "sns.barplot(x='sample size needed', y='method', hue='target', data=bar_df, palette=palette, ci=None,\n", " hue_order = ['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "sns.despine()\n", "plt.savefig('fig/replication_bar_all.pdf')\n", "bar_df" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "sns.set(rc={\"figure.figsize\":(3, 2)})\n", "sns.set_style(\"white\")\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "sns.histplot(df_null.r_discovery_cv, bins=np.linspace(-0.5, 0.5, 20))\n", "plt.show()\n", "sns.histplot(df_null.r_discovery_overfit, bins=np.linspace(-0.6+1, 0.6+1, 20))" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "df_null.r_discovery_overfit.describe()" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [ "np.linspace(-1.0, 1.0, 11)" ], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": 405, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>sample size needed</th>\n", " <th>target</th>\n", " <th>method</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>375</td>\n", " <td>age</td>\n", " <td>netmats_pearson_PCA_SVR</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>400</td>\n", " <td>CogTotalComp_AgeAdj</td>\n", " <td>netmats_pearson_PCA_SVR</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>375</td>\n", " <td>PMAT24_A_CR</td>\n", " <td>netmats_pearson_PCA_SVR</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>600</td>\n", " <td>Flanker_AgeAdj</td>\n", " <td>netmats_pearson_PCA_SVR</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>600</td>\n", " <td>CardSort_AgeAdj</td>\n", " <td>netmats_pearson_PCA_SVR</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>600</td>\n", " <td>PicSeq_AgeAdj</td>\n", " <td>netmats_pearson_PCA_SVR</td>\n", " </tr>\n", " <tr>\n", " <th>6</th>\n", " <td>100</td>\n", " <td>age</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>7</th>\n", " <td>75</td>\n", " <td>CogTotalComp_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>8</th>\n", " <td>150</td>\n", " <td>PMAT24_A_CR</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>9</th>\n", " <td>600</td>\n", " <td>Flanker_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>10</th>\n", " <td>350</td>\n", " <td>CardSort_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>11</th>\n", " <td>475</td>\n", " <td>PicSeq_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " sample size needed target method\n", "0 375 age netmats_pearson_PCA_SVR\n", "1 400 CogTotalComp_AgeAdj netmats_pearson_PCA_SVR\n", "2 375 PMAT24_A_CR netmats_pearson_PCA_SVR\n", "3 600 Flanker_AgeAdj netmats_pearson_PCA_SVR\n", "4 600 CardSort_AgeAdj netmats_pearson_PCA_SVR\n", "5 600 PicSeq_AgeAdj netmats_pearson_PCA_SVR\n", "6 100 age netmats_parcor_Ridge\n", "7 75 CogTotalComp_AgeAdj netmats_parcor_Ridge\n", "8 150 PMAT24_A_CR netmats_parcor_Ridge\n", "9 600 Flanker_AgeAdj netmats_parcor_Ridge\n", "10 350 CardSort_AgeAdj netmats_parcor_Ridge\n", "11 475 PicSeq_AgeAdj netmats_parcor_Ridge" ] }, "execution_count": 405, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAaYAAACvCAYAAAC2CXp/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAA+3ElEQVR4nO3deXhM5/v48Xd2S0KsobVrY9+KoLIQSoRkxN5aqlqKj4+lVCIhCLUUpba2dPGpLdREFlFtia2WqLbErlRJEBFBEiGZmZzfH/nlfJMmYpBIJPfrunpdyZxznvPM6Zg7zzn389wmiqIoCCGEEEWEaWF3QAghhMhKApMQQogiRQKTEEKIIkUCkxBCiCJFApMo1vR6PTExMej1+sLuihDCSOaF3QEhClJsbCxdunRhz5491KhRo7C7U+h0Oh0xMTE8evSosLsiSrBSpUpRo0YNLCwsct0ugUmIEiQmJgYbGxvq1KmDiYlJYXdHlECKonDnzh1iYmKoW7durvvIrTwhSpBHjx5RqVIlCUqi0JiYmFCpUqU8R+0SmIQoYSQoicL2pM+gBCYhhBBFigQmIUqwVJ3hpWpXlAyS/CBECWZlYUbrj7/P93Z/XzQs39sUJYeMmIR4AWQEIYTxZMQkSgSP+UGYlrEttPPLCCJ3kydP5sqVK+h0OmrVqsW8efMoX748S5cuZefOndja2uLg4MCRI0cICgoCYPv27WzatAmDwYC1tTWzZs2iXr16hfxORH6SwCSEKDR+fn5UrFgRgKVLl7J27VreeOMN9u7dS0hICKVKlWL8+PHq/sePH+fHH39k48aNWFpasn//fnx9fQkMDCystyAKgAQmIUShCQkJISwsDJ1OR0pKCnXq1EGn09GjRw/KlCkDQO/evVm9ejUAERERnD9/nv79+wMZkzUTExMLrf+iYEhgEkIUiuPHj7N582YCAwOpWLEiYWFhbN26Nc9jFEWhb9++TJgw4QX1UhQGSX4QQhSKxMRErK2tsbW1JS0tDa1WC4CDgwM//fQTDx8+JD09ndDQUPUYV1dXQkJCiI2NBcBgMHD69OlC6b8oODJiEqIES9UZCiQxI1VnwMrCLM99nJycCA0NpXv37lSoUIE2bdpw6tQpunTpwp9//omnpyfly5enZcuW3L9/H4C2bdsyceJExowZg8FgQKfT4ebmRtOmTfP9PYjCI4FJiBLsScGjINu1sLBg2bJluW4bPXo0U6ZMIT09HT8/P1q2bKlu8/T0xNPTM596KooiCUyiRAib1qdIlL1I1adiZW5V2N0o8ry9vbl+/TqPHj2iSZMmjBw5srC7JF4gCUyiROj3v36YlSuY0cHTOPTfQ4XdhZfCqlWrCrsLohBJ8oMQQogiRQKTEEKIIkUCkxBCiCJFApMQJViqPvWlaleUDJL8IEQJZmVuRccVHfO9XUnyEM9DRkxCiEKj0+n4/PPP6d69Ox4eHvTu3ZsFCxag0+meuq0vvvgCjUaDRqOhVatWdOnSRf395s2buR6zYsUK0tLSjGrf1dWVixcvqr+HhobSu3dv3Nzc6NOnD5MmTeLGjRtP3e/8dvnyZRo0aMC6devytd3+/fuj0Wjy3GfFihUsXLgQgM2bNz9zH2TEJEqEbe9uK9R5TIo+FRNzK5nH9C/Tpk0jNTUVrVaLtbU1er0erVZLWloaFhYWT9XWmDFjGDNmDABDhw5lxIgRdO7cOc9jVq5cyYgRI7C0tHyqc/3www989913rF69mjp16gAQGRlJfHw8r7zyylO1ld+2bdtG+/bt0Wq1DB8+PF/a/Ouvv4iPj8fCwoLTp08btdLG22+//cznk8AkSoQby91ItzYptPPX8j8FIEEpi3/++Yfdu3ezf/9+rK2tATA3N2fgwIEYDAYWLlzIwYMHgYzli6ZMmYKZmRm3bt1i6tSpxMfHU7NmTQAcHR0ZMmRIrue5evUq/v7+JCQkYG5uzqRJk3B2dmb27NkADBo0CFNTU9avX8/+/fv5/vvv1RGbt7c3HTp0yNHmypUrmTt3rhqUANq1a6f+HBwczDfffANArVq1CAgIoFKlSgQFBbFjxw5sbGy4cOECdnZ2zJgxg4ULF3Lt2jWaNm3K4sWLMTExwcfHB3Nzcy5dusTdu3dp27Yt/v7+eQZRvV5PWFgYGzduZOTIkURFRdG8eXOAPK9bcnIy8+fP58KFC6SmptKuXTumTZuGmVnG3D+tVotGo8HS0hKtVqsGpqSkJPz8/Lh48SJVqlShWrVqVK5cGcgYPaWkpODt7f3Y/j6O3MoTQhSKs2fPUrt2bcqXL59j25YtWzh37hxBQUEEBQVx9uxZtmzZAsDcuXNp164d4eHhzJgxg2PHjuV5nilTptCrVy/CwsJYtGgRH3/8MQkJCcycOROAwMBAQkJCKFeuHI6OjmzdupXg4GA+++yzXL9U79y5Q2xsLC1atMj1fBcvXmTx4sV88803hIWF8frrrzNnzhx1+6lTp5g2bRq7du2iVKlSTJ48mSVLlhAeHs7Fixc5cuSIuu/Jkyf55ptvCA8P58aNG09cfX3fvn3Url2b2rVr4+XlpS6M+6TrNn/+fNq2bcu2bdsICQkhISFBPVan0xEWFkafPn3w8vJi586dpKZmJLesWrWKsmXLsmvXLj7//HN+++23PPtnLAlMQogi58iRI3h5eWFpaYmlpSV9+vRRv7AjIyPp27cvAK+++mquI5pMycnJnDt3Tt3/tddeo1GjRpw4cSLX/aOjo3n//ffp2bMnkyZNIj4+ntu3bz9V3yMjI3FxcaFq1apAxogsa7B54403qFatGgCNGjWidevWlCtXDnNzcxo2bMjVq1fVfd3d3Slbtizm5ub07t2bo0eP5nlurVaLl5cXkFHHateuXWoQyeu6RURE8M0336DRaPDy8uLMmTNcuXIFyAh2derUoVatWlSvXp3GjRvzyy+/qG3269cPgIoVK/LWW2891bV6HLmVJ4QoFI0bN+bq1avcv38/11FTYfjoo4/w8fGha9eupKen06JFC/WLPVOlSpWws7MjKioKR0fHpz6HldX/3c41MzPL8bvBYHimvsfHx/Prr79y7tw5tbDiw4cP+emnn5646K2iKKxevVq9xZeVVqvl0qVLuLq6ApCSkoJWq6VXr17P1E9jSGASogRL1acWSGq3MUkederUwdXVFX9/fz755BOsra0xGAwEBQXh4OBAcHAw7u7uQMYzm27dugEZ9Zq2b9/O6NGjuXnzJkePHn3sqMna2ppGjRqxfft2+vbty+XLlzl//ry6WnnZsmVJTk6mbNmyQMYzk8wkmcwkjNyMHTuWBQsWsHr1amrVqgXAb7/9hpWVFe3ateOrr77i9u3bVKlSha1bt/Lmm28+3QX8/3bt2sW7776LpaUlISEheSZzBAcH0717dxYvXqy+tmPHDn744Qc8PT3zvG6urq6sWbOGWbNmYWZmRkJCAg8ePKBUqVIcO3aMAwcOqM8BU1NTcXR05MaNG7Rv356goCBat27N3bt32b17N25ubs/0XrMqsoEpMTGRLVu25PuqwjExMRw6dIiBAwfma7svm8jISEaNGkWdOnUwGAxUqVKFOXPmqP8oQ0ND+fbbb3n06BFlypShdu3afPzxx2rG0eXLl3F3d2fatGlGZf5s3LiRwMBATExMSEtLo3Pnznh7e+Pu7o6Pjw/Ozs7qvg8ePFBr9Wzfvp1NmzZRtWpVUlNTadKkCXPmzFHLbovnU1DJGMa2u2DBAlatWkXfvn2xsLAgPT0dFxcXJk2axPXr19XbUo6OjgwYMAAAPz8/pk6dSlhYGDVq1KB58+bql2ZuFi9ejL+/P+vWrcPc3JxPP/2UihUrAjBixAiGDRtGqVKlWL9+PdOmTWPs2LGUL18eJycnbG1tc21z0KBBlCpVivHjx/Po0SNMTU1p2LAhH3/8MdWrV2fKlCmMGDECgJo1axIQEGDspcumWbNmjBgxgoSEBBwcHNRrkJugoKAcz8S6dOnCzJkziYmJyfO6+fr6smjRIjQaDSYmJlhYWODr68sff/yBs7NztutrZWVF165dCQoKYuzYsfj6+uLm5kaVKlVo06bNM73PfzNRFEXJl5byWUxMDH379iUyMjJf242MjGThwoUEBQXla7v5Ra/XY25e8H8v/Ps6zJ8/n+vXr7Ny5crHpsKWLl1azfBZuHAhZ8+eJSEhgbCwsDzPFRUVxZQpU9i2bRvlypXDYDDw119/0bBhQ77++mvOnDnD0qVL1f21Wi2hoaH873//y5bZk5aWxvDhw+nUqROjRo0y6n3GxMTQpUsX1mssqFYEsvIK27lz52jUqFFhd+O5PHr0CHNzc8zNzYmLi6Nfv36sW7eOevXqFXbX8pWPjw9NmzZ9bLbh03rR123WrFm88sorj/23mtdn8YWMmBo0aMCkSZP45ZdfuHfvHlOnTqV79+5ARtbJ4sWLefDgAQDjx4+nU6dOBAQEkJSUhEajoXTp0gQGBjJ06FCaNGlCVFQU169fZ9iwYdjZ2bFhwwbi4uL4+OOP6dGjBwCTJ0/mypUr6HQ6atWqxbx58yhfvjwBAQHExMSg0WioXbs2y5YtIyAggKNHj2JpaUmZMmUIDAx87HvJK4Uzr5TLb7/9lvDwcAwGA1ZWVsyaNUv9n9KgQQPGjRvHvn37cHJywtnZmTlz5pCeno5er2fMmDH06tWL+Ph4Zs6cybVr1wB4//336d27N5AxFNdoNBw+fJjbt28zYsSIp/pAv/nmm3z66afAk1Nh80pJzc2tW7ewtrZWRzlmZmY0bNgQyHhAu2rVqmzPGYKCgnId0VpaWtKqVavHTpYUJcM///yDt7c3iqKg1+sZN25csQtKBeFFXjdfX1/OnTvHhx9++GwNKC+Avb29sn79ekVRFOX48eOKo6OjoiiKcv/+fUWj0Si3bt1SFEVRbt26pTg5OSn3799XoqOjFQcHh2ztDBkyRJkwYYJiMBiU2NhYpXnz5spnn32mKIqinDx5UnFyclL3vXPnjvrzZ599pixatEhRFEU5evSo4uXlpW47c+aM4ubmphgMBkVRFOXevXt5vhdvb2+lV69eSnJysqLT6ZT33ntPfW++vr7K9u3bFUVRFIPBoEyaNEnZsmVLjv4cOnRI6d+/f7br89VXX6m/jx49WgkLC1MURVHS09OV+/fvK4qiKBMmTFCWLl2qXquOHTsqFy5cUBRFUTp37qwsWLBAURRFiY6OVlq2bKkkJyc/9n1kvQ4Gg0GZNm2aMnnyZCU+Pl6xt7dXz5mbX375RXnnnXcURVGU1atXK/7+/nleswcPHij9+/dXHB0dlY8++kgJDAxUUlJSsr3fDRs2KIqiKP/884/Spk0b5eHDh4qiKMry5cvV95WUlKT0799fOXz4cJ7nyyo6Olqxt7dXoqOjjT7mZaBLTX2m486ePZvPPREv2owZMxRPT89s/2X9TntZ5PVZfGHPmDIfYrZs2ZK4uDhSU1P5888/iYmJyfYcycTEhKtXr1KhQoVc23Fzc8PU1BQ7OztsbW3p2rUrAE2aNOHWrVukpqZiZWVFSEgIYWFh6HQ6UlJSsv31n1XNmjXR6/X4+fnRrl27J84Uz3wvmQ9Le/fuzc8//8yQIUOIiIggKiqK7777DsgYOtvZ2QFw+vRpvvrqK+7fv4+JiQn//PNPtjYz76VDxujkiy++4Nq1a3Ts2FGdL3HkyBF8fHwAqFq1Ki4uLkRGRmJvb5/tGteoUYNy5coRGxtL/fr1H/s+Ll++jEajQVEUGjRowLRp05743iFnSmrv3r3x9fXNll2UVZkyZdiyZQunTp3i999/54cffmDjxo1s27YNS0tL+vbtyxdffMHgwYMJCgrC3d2dUqVKqccHBwdz6NAhrl69iqOjI+3btzeqn1mtmjQWa6unm91flPlt2FbYXRCF5FmfV71MXlhgyvzSypxJrNfr1S/EjRs35tg/JiYmz3Yy28qt3VOnTrF582YCAwOpWLEiYWFhj52YZmNjQ3h4OJGRkRw+fJjFixezfft2qlSp8tTvUXlMymVaWhoTJkxgw4YNagDN+rAfyPYwf/jw4bi6unL48GHmzJlDx44dmTRp0hPP/7Rpp/Xr18/1WVteqbDPmpJqYmJC8+bNad68OYMHD+bNN9/kr7/+okmTJnTq1ImZM2dy/vx5QkJCWL58ebZje/fujbe3N7dv3+add95h06ZNDB48OM/3JoR4eRXqBNtWrVpx9erVbJPGoqKiUBQFa2trHj16hF6vf+p2ExMTsba2xtbWlrS0tGyzn62trUlOTlZ/T0hI4OHDh+qSJzY2NkRHR+fZ/q5du0hJSUGv1xMSEqL+BZ+ZcpkZEBISEoiOjiYtLQ29Xk/16tUB2LRpU57tX7lyhVq1ajFo0CCGDRvGqVMZD847dOigBtjbt2+zf//+Zxo9PElmKmzmsyzISIWNiopSU1L37dtHREQEERERzJs3L9s1/rfLly9nW/wy89lf5iRDc3NzPD098fPzw8bG5rHPq6pUqYKfnx9ffPEFjx49yqd3K4Qoago1Xbx8+fKsXr2aRYsWMW/ePHQ6HTVr1uTLL7/E1tYWDw8PPDw8KF++fJ4JCf+WmWrcvXt3KlSoQJs2bdQv9wYNGlC3bl169epFvXr1+PDDD5kxYwZ6vR6DwYCzs7M6x+FxHpfC+biUy5o1azJ+/Hj69euHra2tmvjxOOvXrycyMhILCwssLS2ZPn06ANOnT8ff3x8PDw8gY6mV119/3ejrYqy8UmGflJKa20Kpjx49Yt68edy5cwcrKyvMzMxYtGgRlSpVUvfp168f33777RNvJ3bq1Il69eoRGBiYbwtUCiGKliKbLl5U5XcKpyhYmenifZo3kGdM5EzRzVz1PL8VVLui+Cj0dHEhRNFkYm7FtYBm+d6usfO2XF1d1fXw0tPTGTNmDJUrV2bYsGGMGDEi2+h86NChHDt2jD/++ENNPjIYDHTq1ImmTZvyxRdfcOHCBaZOnQrA/fv3SU5O5tVXXwVgwIABWFhYsH79erXNDz74IEeNob///hsvLy/eeecdo1bG3r9/P6NGjWLlypVGrRV3+/ZtFi1axO+//065cuUwMzNjwIABDBgwgBUrVsiEciQw5ercuXNq9ltWQ4YMYcGCBYXQo2fXp0+fHEkQLVq0KJDMHn9/f06ePJntNTMzsyI7mVkUDcuXL8fe3p6zZ88yaNAgPv30U+rWrcuePXvUUhfR0dGkpKTkOPbgwYNUrVqVP/74g/j4eBo0aEBISAiQMR9u37592ZJpIiMjWb9+Pba2tsTGxqLRaGjdurV6C9pgMDBz5kw129cYWq1WrX/0pMD08OFDhgwZQp8+fViwYAGmpqYkJSURHh6u7pOZ7JM5oXzDhg1GTygvLiQw5aJRo0bqh/tl9yKDQlFOY/3P0tWFWigwvxlSUzF7THr+y6px48aULVuWmJgYypQpw+uvv86vv/6Ki4sL27dvp3fv3pw+fTrbMVqtlkGDBnHixAmCg4P54IMP8jxH1oni1apVo2rVqsTGxqqfjTVr1tCpUydSUlJyDYT/dvfuXY4ePcrOnTvp2bOnuj7e4+zYsQNbW9tsE09tbGwYNGhQjn1L8oRyCUyiRIgcOJDLZsXn4+5yYH9hdyHfHT16lNTUVHXOoZeXF4GBgTg7OxMeHk5gYCBz585V909ISODo0aPMnz+fevXqMWPGjCcGpqwiIyNJTExUi96dP3+eX3/9le+//16dCvEkoaGhdOrUicqVK/PWW2+xffv2PEc3Z86cyXOVlKySk5P57bffjJoqUtxIPSYhRKEaP348Go2GFStWsGLFCmxsbICM0c2FCxfYvXs39vb2OSbdh4aG0rlzZ6ytrWndujUGg4E///zTqHNeunQJb29vlixZQqlSpdDpdMyYMYPZs2ercyKNERQUpE429/Lyypc7FMHBwXh6etKxY0eqVKlSIFNCirri8yekEOKllPmMKVPmws0mJib06NGD6dOnM3/+/BzHabVaEhIS1DpBSUlJaLVaWrVqlef5/vnnH0aNGsXs2bPV1bBv377NtWvX1NFOYmIiiqKQnJycrfpsVqdPn+bSpUv4+fmpr8XFxfH777/TunXrXI9p0qRJnnP+QCaUwxMCU9aqi3nJq4KkEEI8q4EDB1K6dOkcK6VERUWRlJTEr7/+iolJxqrxt27domfPnvj5+VG6dOlc28usUOvn54eLi4v6+iuvvJKtkkHWVe0fR6vV8sEHH2S71fbVV1+h1WofG5h69uzJ2rVr+frrr3n//fcxMTEhOTmZ8PDwHAsXZ04onz59On379s22TFdxl2dgyvqXAGT8NQBga2vLvXv3gIzla/bs2VMwvRNCFChFn1ogJTnyax6TnZ1drjXZtFotPXv2VINS5r6NGzdm165d2daezGrRokXcu3eP5cuXq9l6U6ZMwcnJ6an6lZqaSnh4OJs3b872eq9evfD09GT69Om5pniXKVOG9evXs2jRIrp06aKWTX/nnXdyPU9JnVBu9ATbL7/8knv37jFhwgRKly7Nw4cPWb58eY4MEyGKkswJtvMqV6ayJD8Ui3pMonjI67NodPLDunXrmDx5sjpELl26NB999JG6krYQQgiRH4z+E7JMmTJERUVlu3d66tSpx97LFaIoabdlS7Gax6RP02NuWXxGgEXZ6NGjc8wlql69Ol9++WW+HiP+j9Gf7PHjx/PBBx/g6upKtWrViI2NZe/evfj7+xdk/4TIF99/sodyZSoWdjfyzbglHoXdhRLjWYKJBKDnY3Rg6t27N02bNuWnn34iLi6OunXrMmbMGF577bWC7J8QQogS5qnuBbz22mvUq1eP+Ph4KleujKmpzM8VQgiRv4yOLMnJyUydOpXmzZvj4uJC8+bN8fb2JikpqSD7J4QQooQxOjDNnTuXhw8fEhYWxsmTJwkLC+Phw4fZ1q4SQrxc9GlpL1W7omQw+lbewYMH2b17t5qFV7duXebPn29U/REhRNFkbmnJJ0P65Xu7z1rIUAh4ihGTlZUVCQkJ2V67e/culpbFpyqoEOLFcnV1xc3NDU9PT3r16kV4eDiff/45O3fuzPO4tLQ0Zs2aRc+ePfHw8KBXr16EhYUVWD/v379P8+bN8/0O0cSJE2nfvj06ne6x+wQFBTF+/HgA9uzZw8KFC/O1D0WR0SOmfv36MWLECIYPH84rr7zCjRs3WLduHQMGDCjI/gkhirl/Fwrct28fFSvmndr//fffc+/ePUJDQzEzM+PBgwfcvn27wPq4Y8cOWrRoQXh4OFOnTs2XP8jv3bvH4cOHqVu3LhEREXTv3v2Jx3Tp0oUuXbo897mLOqMD05gxY6hatSo7duwgLi6OqlWr8sEHH9CvX/7fBhAivw3z61K8JtjqDJhbGF+e4WWQWSjQx8cHZ2dnhgwZQlpaGkuXLuXgwYOYmppSs2ZNVq1aRWxsLJUrV1ZLVJQtW1Yttw4ZBf9+/vlnDAYDdnZ2zJkzhypVqpCUlISfnx8XL16kSpUqVKtWjcqVKz+xhLpWq+Xjjz/mq6++Ys+ePfTo0QPIWNHc19eXv/76Czs7O+zs7KhUqZJagXbp0qX89ttvpKWl0aBBA2bNmqX2MywsDBcXFxwdHdFqtWpgSktLY+7cuRw9epQKFSpkW7Ynt6q8xZHRgcnExIR+/fpJIBKiCChuQQn+r1Cgufn/fS2tWbOG6OhogoKCsLS0VB8n9O/fn/fff5/IyEhatWqFs7OzWg49JCSE6Ohotm7diqmpKZs2bWLBggUsWbKEVatWUbZsWXbt2kVCQgJ9+vRRg8zjnD9/nnv37tG+fXtu376NVqtVj1m1ahXlypVj165d3Lt3jz59+qgB5uuvv8bGxoZt2zKety1atIg1a9aoq5FrtVq8vb1p2bIln3zyCbdu3cLOzo4tW7YQExNDeHg4er2ewYMHF6s/qozxVPOYfv31V86dO5ej5PCECRPytVNCiJJj/PjxWFlZYW1tzYoVK7I9K9q7dy8+Pj7qrbPMW3wNGjRgz549/Pbbb/zxxx/MmTOHAwcOEBAQQEREBKdPn1ZXGDcYDFhbWwMZtZ6mT5+utmVM8ta2bdvQaDSYmJjQrVs35s6dqwaRrO3Z2tqqwREgIiKC5ORkfvrpJyBjJNSwYUMAzp49S2JiIu3bt1fbDQ4O5sMPPyQyMpLevXtjYWGBhYUFnp6e/PHHH891jV82RgemgIAAfvzxR9q1ayfr4wkh8s2/CwUam8RgZWWFo6Mjjo6OuLi48N577xEQEICiKIwZMyZf7u6kpaWxY8cOLC0tCQkJAUCn0xEUFMSYMWPyPFZRFGbOnJlrvTqtVktiYqL6vCgtLY2yZctKpYb/z+jAtGPHDkJCQqhevXpB9kcI8QLp09IKJLVbn5aGeT4kCHTu3Jn//e9/tGjRQr2VV7FiRY4fP07dunWpVKkSAGfOnFFvd7m6uvL999/z1ltvUb58edLS0vj7779p2LAh7du3JygoiNatW3P37l12796Nm5vbY8+/Z88e6tatm63u0p9//om3tzdjxozBwcGBkJAQWrduTWJiInv27KFbt25qP9atW0erVq0oVaoUycnJ3Lp1i5o1a7Jjxw60Wi21a9dW2+3evTvHjx+nffv2hISE4O7ujl6vZ8eOHbzyyivPfS1fJkYHpgoVKmBjY1OQfRFCvGD5ETwKst1Ro0axZMkS9dZW7dq1Wb58OTExMcydOxedToepqSmVKlVi0aJFQMa6nvfu3WPIkCFAxsjl7bffpmHDhowdOxZfX1/c3NyoUqWKWlr9cbRaLR4e2RfMbdWqFenp6Rw7doz//Oc/TJs2TW2vadOm6m3DUaNGsXLlSvr164eJiQkmJiaMGzeOCxcuUKtWrWxBCcDDwwOtVsvs2bO5cOEC7u7uVKhQgWbNmnHnzp18uZ4vizwLBUZHR6s/Hzp0iH379vHhhx9SuXLlbPvVrFmz4HooxHPILBS4Z8+eEvcAOTdSKDA7Y0qo50Wn05Geno6VlRXJycm8/fbbTJs2jTfffDOfe5ph7dq1REdHExAQUCDtv0h5fRbzHDG99dZbmJiYkDV27du3L9s+JiYmnDt37vl7KYQQL5nExERGjhyJwWAgNTWVXr16FVhQ+vzzz/npp59YsmRJgbRflBhdWl2Il5GMmLKTEVPuVq5cyS+//JLj9W+//VZ9jiXy1zOPmLKaO3eumhaZ1SeffIKfn9+z904IIQrZuHHjGDduXGF3Q/x/Rq+VFxQUlOvroaGh+dYZIYQQ4okjpsxZywaDQf05U3R0NLa2tgXSMSGEECXTEwNT1kllmT9DRtJD5cqVS8RKt6L4S9UZsCqGy/wI8TJ6YmBav349AEuXLlXXeBLiZeMxPwjTMraP3f77omEvrjNFSHpqKqZWVi9Nu6JkMDr5YdKkSdy9e5f9+/cTHx/PBx98wK1bt1AUhWrVqhVkH4UQBcTUyor9zi753q7Lgf1G7afT6Vi9ejU7d+7E0tISMzMz2rdvz+TJk7GwsHimc0dGRrJw4UKCgoJQFIXly5fz888/Y2Zmhl6vp3///rz33ntP3e66devw8PAwKkvv/v37ODk5MWDAgFyTxp7VxIkTOXr0KAcPHnzs9cm6AvmePXs4fvz4M8/TKixGJz8cO3YMNzc3wsLCWLVqFQBXr15l1qxZBdU3IUQxN23aNC5duoRWqyUsLIxt27ZRt25d0owsza7X6/PcvmvXLo4ePUpQUBChoaEEBwfj5OT0VH1MT09HURS+//57o1dgyFq/ydj38iSZ9Ztq165NRESEUcd06dLlpQtK8BQjpnnz5rFs2TI6dOhA27ZtAWjRogVRUVEF1jkhRPH1zz//sHv3bvbv368u42Nubs7AgQO5cOECs2fP5uHDh6SmpjJgwACGDx8OgI+PD2ZmZly5coUHDx4QEhLC0qVL2blzJ+XKlcPBwUE9x61bt6hQoYK6OrmlpSWvvfaaun3NmjVqZnGzZs2YPn06ZcuWZcWKFfz1118kJydz48YNNBoNcXFx6kroS5YsydbOv0n9pudj9Ijp+vXr6iq5JiYmAFhYWGAwGAqmZ0KIYu3s2bPUrl2b8uXL59j26quvsm7dOrZv384PP/zA1q1buXz5srr93LlzfP3114SEhBAREUFERATBwcFs3bqVK1euqPu5u7tz+fJlunXrxrRp0wgJCVFHWfv37yc0NJTAwEDCwsIwGAysXr1aPTYqKorFixeza9cutVDq8uXLCQkJyTMoZa3f1KdPH7Rarbota/2mzz//nOPHj6vbstZvCg0NpWrVqqxZs0bdrtVq6dOnD926dePEiRPcunULIFv9pnXr1hWLwYLRgal+/focPHgw22uHDx/Otly9EELkh0ePHuHr64uHhwdvv/02cXFxnD9/Xt3u5uZGmTJlgIxnSu7u7pQtWxYzM7Ns5S6qVq1KeHg48+fPp06dOnz55ZdqaYkjR47g7u6OtbU1JiYmDBgwgCNHjqjHOjs7P7HEe27+Xb8pKipKDSKRkZH06dMHyL1+U2hoKBqNBo1GQ0REBNeuXQOy128qXbq0Wr8ps83MRW5Lly6Np6fnU/e5qDH6Vp6Pjw8ffvghnTp14tGjR/j7+xMREZHtLwwhhDBW48aNuXr1Kvfv388xavrss8+oUqUKCxYswNzcnBEjRpCamqpuzwxKxjA3N6dNmza0adOGvn370rFjR+7du/fE47KWajeW1G/KH0YHppYtWxIaGkpoaCh9+/alevXqaLVa7OzsCrJ/QuSLsGl9cqyVl6pPxco8I6W5pM5jSk9NNTqD7mnbfVK6eJ06dXB1dcXf359PPvkEa2trDAYDQUFBJCUl0aBBA8zNzbl48SLHjx+nV69eubbTvn17li5dyrvvvouVlVW2W2enT5/G1tZW/X9/5swZypcvT7ly5ejQoQOLFy9m2LBhlC1blm3btuW5AGvZsmVJSkrK8z1J/ab8YXRgSkpKYtu2bZw9e5aUlBSuXr3K0aNHgYyFDoUoyvr9rx9m5bIHnkP/PaT+XBKDElBgc42MbXfBggWsWrWKvn37YmFhQXp6Oi4uLowcORJfX181Sy8z4So3nTt35sSJE2g0GjX5IfPW2d27d5k9ezbJyclYWlpSunRpVq1ahampKS4uLly4cIFBgwYB0LRp0zxHNcOGDcPX15dSpUo9NvlB6jflD6NXFx8xYgQGg4G33noLq3996Pr3718gnRPieWWuLl5hWIU8A1NJIauLFy6p3/R/8mV18RMnTnD06FE17VIIIcTTkfpNxjE6MLVu3Zq///6bhg0bFmR/hBCiyHvW+k2VKlV6bKWG/DZhwgQmTJjwQs6V34wOTAsWLGDkyJG0aNEix4WXOiZCiJJE6jcVLKMD09KlS4mNjaVGjRokJyerr2dOthVCCCHyg9GBKTw8nJ9++omqVasWZH+EEEKUcEav/FCzZk3MzY2OY0IIIcQzMTrSaDQaxo4dy5AhQ3I8Y8ptprIQRcm2d7flmGCbF0Wfiol58a8npNcZMC+AOVwF1a4oGYwOTBs3bgQylgrJysTEhD179uRvr4TIZzeWu5Fubfzz0Fr+pwqwN0WHuYUZKyeH5Xu745Z4PHknIR7D6MBkbP0PIYQwlqurK5aWluqk/Xbt2pGYmEjTpk0ZMmTIM7c7dOhQRowYQefOnfOrqzn079+ftLQ0dU28/LBp0yZmz57N9u3bady4ca77xMTE0LdvXyIjI7l16xZTpkxRK40XF/LQSAhRqJYvX56tSoGPj08h9iaDXq/P85n6X3/9RXx8PBYWFpw+fZqmTZvmy3m1Wi3t27dHq9U+NjBlZWdnV+yCEkhgEkIUYUeOHGHZsmWkpqZiMBgYPXo0PXv2BDJGRU2bNuXEiRPExcXRo0cPpkyZkqON8PBwvv32W3WNvLlz53Ljxg1SU1Pp2bMno0ePBjJGb+7u7hw9ehR7e3vmzZv32H5ptVo0Gg2WlpZotdpsgSmzaKGtrS0ODg4cOXJEnVS7fft2Nm3ahMFgwNramlmzZlGvXj0ALl68SEJCAp9//jn9+vXD29tbXWln48aNrFu3Dmtra1xcXNRzZR09FScSmIQQhSqzKiyQI7A0btyYTZs2YWZmRnx8PH369MHR0VEtk3Hz5k02btzIgwcP6Nq1K/369aNOnTrq8WvXruXQoUOsW7cOGxsb3nvvPcaOHUvbtm1JS0tj+PDhNGvWjI4dOwKQnJzMtm3b8uyvTqcjLCyMzZs3Y2FhQe/evfHx8cHKyoqIiAj27t1LSEgIpUqVYvz48epxx48f58cff2Tjxo1YWlqyf/9+fH19CQwMBDLqOPXu3ZsaNWrQqFEjdu/ejbu7O+fPn+eLL74gODiYypUrM2vWrOe95EWe0enixVliYiJr167N93ZjYmLYsmVLvrdblAQFBdGmTRs0Gg3u7u6MGjWK27dvq9tHjhypFjv7t6FDh7J3794X1VVRRGVWhQ0JCcHJySnbtoSEBMaPH0+vXr14//33uX//frYKtW5ubpiammJjY0P9+vWzfdZWrFjByZMnWbNmDTY2NqSkpHDs2DHmzp2LRqOhf//+xMXFZauM27t37yf2d9++fdSpU4datWpRvXp1GjdurC5PFBkZSY8ePShTpgympqbZ2ouIiOD8+fP0798fjUbDkiVLiI2NBTKC3Y4dO/Dy8gLAy8tLLd9x7NgxOnXqROXKlQEYOHDgU1zdl5OMmMgITF9//TUjR47M13avX7/Oli1bCvWD9KR75fnRxptvvsny5ctRFIWPPvqIlStXMnv2bIACCfii5Jg1axaurq6sXLkSExMTunfvnq1gYNZKB2ZmZhgMBvX3li1bcujQIW7cuEGdOnVIT0/HxMSEbdu2YWFhkev5jClAqNVquXTpEq6urgCkpKSg1WofWy8qk6Io9O3bN9f16yIiIkhKSmL48OEApKenEx8fz82bN5/Yn+Ko2AWmBg0aMGnSJH755Rfu3bvH1KlT6d69OwAnT55k8eLFPHjwAMi4hdCpUycCAgJISkpCo9FQunRpAgMDGTp0KE2aNCEqKorr168zbNgw7Ozs2LBhA3FxcXz88cf06NEDgMmTJ3PlyhV0Oh21atVi3rx5lC9fnoCAAGJiYtBoNNSuXZtly5YREBCgrtJepkwZdRifGx8fH8zNzbl06RJ3796lbdu2+Pv7Y2lpSVhYGN9//z06nQ4Ab29vdT7Zv++Vz5o1i6VLl3Lw4EFMTU2pWbMmq1atwmAwsHjxYg4ePAiAk5MTU6ZMwczMDB8fH8zMzLhy5QoPHjwwKvPIxMSEtm3bsm/fPvU1V1dXvvzyS+zt7bl06RLTpk0jJSUFe3v7bF8wmdsePnxIw4YNuXbtGmPGjKFz587ExcU99rmAsV4Zv+up5jEVBn1aGuYvePV+vc5QIKnd+TWPKSkpiVdffRUTExMOHTrE1atXjT7WycmJt956i1GjRrFq1Spef/11WrduzZo1a/jPf/4DZNwKNDc3p0qVKka1efv2bY4dO8aBAwfUOkqpqak4Ojpy48YNHBwcWLFiBcOHD8fKyorQ0FD1WFdXV7y9vRk4cCDVqlXDYDBw7tw5mjZtilarxd/fP1sJIX9/f4KCgujSpQtr167lzp07VKpU6Ym3GouDYheYAKytrdFqtfz+++9MnDiR7t27k5iYyMyZM1mzZg1Vq1YlLi6Ofv36sWPHDvz9/enbt2+OL9/Y2Fg2bNjA7du36datG8OHDycwMJCoqCjGjRunBiY/Pz8qVqwIZDz4XLt2LVOmTMHf35+FCxeqDz7Pnj1LZGQkO3fuxNTUlPv37z/xvZw8eZLAwECsrKwYNWoUW7duZciQITg6OtKrVy9MTEz4+++/GT58OAcOHFCPy3qvfOXKlURHRxMUFISlpSUJCQkAbNmyhXPnzqn9GzlyJFu2bOGdd94BMuqlbNiwwegy1mlpaRw4cAB3d/dct0+dOpWhQ4fi5eXFiRMnePvtt7Nte/fdd9FoNJw6dYoBAwao27y9vfN8LmCMVZPGYm1VtEu2+G148V84BTUJNr/anTx5MrNnz2bFihU0a9aMBg0aPNXxHTp0YP78+YwZM4bly5ezePFi5s+frxbzK1u2LJ988onRgWn79u04OzurQQkyRm1du3YlKCiIcePG8eeff+Lp6Un58uVp2bKl+u+8bdu2TJw4kTFjxmAwGNDpdGrBwGPHjrF48eJs5/Lw8GDatGmMHTuW0aNH8/bbb2NtbY2zs3O2/YrjeqXFMjBlfjG2bNmSuLg4UlNT+fPPP4mJicl2u87ExISrV69SoUKFXNvJvH9tZ2eHra0tXbt2BaBJkybcunWL1NRUrKysCAkJISwsDJ1OR0pKSraHr1nVrFkTvV6Pn58f7dq1M2qOhbu7O2XLlgUy7n///PPPDBkyhOjoaCZPnsytW7cwNzcnPj6e27dvq//Ast7b3rt3Lz4+PmqGT2YQPXLkCF5eXurrffr0Yffu3WpgcnNzMyooHT58GI1GQ0xMDPXr11cDdlbJyclcvHgRjUYDZPy/yUwRztyW+WWR9Qso87lAZjAFePDgAZcvX36qwCSKptzmRy5YsED9uWPHjvz888+5HvvvNOmsv2f9uXXr1uzevVv9/d+LBOTVl38bNWpUrq/Pnz9f/Xn06NFMmTKF9PR0/Pz8aNmypbrN09MTT0/PHMefOHEix2tt27ZV+z148GAGDx6sbps4cSKQ8QzO1tb2if1+2RTLwJR539nMLOOvNr1ej6IoNGjQQF3BIquYmJg828lsK7d2T506xebNmwkMDKRixYqEhYWxdevWXNuzsbEhPDycyMhIDh8+zOLFi9m+fbvRf61l9dFHH+Hj40PXrl1JT0+nRYsW2W6NGTvKyYuxbWQ+Y0pOTub999/n888/Z+rUqU99vtz+8jPmuYAQRYm3tzfXr1/n0aNHNGnSJN+fXWfau3cvc+fO5b///W+BtF+YSkxWXqtWrbh69SpHjx5VX4uKikJRFKytrXn06BF6vf6p201MTMTa2hpbW1vS0tLUTBrIuKWYtURIQkICDx8+VJ/l2NjYEB0dnWf7u3btIiUlBb1eT0hICO3btwcy7r1nPjPRarWkpaU9to3OnTvzv//9T90nc/TRoUMHgoOD0el06HQ6goODn6uaprW1NbNnz2bz5s3ExcXl2GZvb09YWMbyN1FRUVy8eFHd9vrrr7Njxw4Azpw5k21b5nOBTDdv3syW+SdEftu/fz8ajSbHf/v373/isatWrSI4OJhdu3axZMmSbLf98lPnzp3Zs2ePUZmEL5tiOWLKTfny5Vm9ejWLFi1i3rx56HQ6atasyZdffomtrS0eHh54eHhQvnz5PBMS/s3JyYnQ0FC6d+9OhQoVaNOmDadOZayz1qBBA+rWrUuvXr2oV68eH374ITNmzECv12MwGHB2ds42zM9Ns2bNGDFiBAkJCTg4OKjPXjLvPZcvXx4nJ6c8h/OjRo1iyZIl9O7dGwsLC2rXrs3y5csZOHAg165dU1NUHR0dsz3beRYNGzbEzc2NtWvX4ufnl23bp59+yrRp01i7di329vY0a9ZM3bZw4UJ8fX1Zs2YN9vb22NvbY2NjA/DczwVEdoqiFMvnEvnJxcUl20RWkb8URclzu4nypD1EofHx8XnuNcNeFg8ePKBMmTKYmJhw6dIlhg4dyq5du9SJlM8qJiaGLl260Kd5A0l+AK5cuYKNjQ2VKlWS4CQKhaIo3Llzh6SkJOrWrZvrPiVmxCSKtj///JNPP/1U/Utqzpw5zx2URE41atQgJiZGboWKQlWqVKk8p2/IiKmQnTt3LtdFK4cMGZJtTkNhunPnDiNGjMjx+ltvvcW4ceMKoUfGyxwx7dmzp1DmMaWnpmJqZVxdp8KYxyREUSSBSRRrmYFpXuXKVDZ78TcIXA48+WG5ECK7EpOVJ4QQ4uUggUkIIUSRIoFJCCFEkSKBSQghRJEigUkIIUSRIoFJCCFEkSKBSQghRJEiKz+IEqHdli1FvlDg08ivQnxCFEUSmESJ8P0neyhXpmJhdyPfFETVWSGKCrmVJ4QQokiRwCSEEKJIkcAkhBCiSJHAJIQQokiRwCSEEKJIkcAkhBCiSJF0cVEiDPPrIvOYhHhJyIhJiJeQBCVRnElgEkIIUaRIYBJCCFGkSGASQghRpEjygyjWDAYDALGxsYXck4JVrVo1zM3ln7MoHuSTLIq127dvAzB48OBC7knB2rNnT7HKOhQlm4miKEphd0KIgvLo0SNOnz5NlSpVMDMrvplsMmISxYkEJiGEEEWKJD8IIYQoUiQwCSGEKFIkMAkhhChSJDAJIYQoUiQwCSGEKFIkMAkhhChSJDAJIYQoUiQwCSGEKFJkqrgotq5cuYKPjw/37t3D1taWhQsXUqdOnULtk6urK5aWllhZWQEwZcoUnJycOHHiBP7+/qSmpvLqq6+yaNEiKlWqBJDnNiGKJUWIYmro0KFKcHCwoiiKEhwcrAwdOrSQe6QonTt3Vi5cuJDtNYPBoHTt2lX57bffFEVRlFWrVik+Pj5P3CZEcSW38kSxdOfOHc6ePUuvXr0A6NWrF2fPniUhIaGQe5bT6dOnsbKyok2bNgAMGjSIXbt2PXGbEMWV3MoTxdLNmzexs7NTF241MzOjatWq3Lx5k4oVKxZq36ZMmYKiKLRu3ZqPPvqImzdv8sorr6jbK1asSHp6Ovfu3ctzm62tbSH0XoiCJyMmIV6gjRs3EhoailarRVEUAgICCrtLQhQ5EphEsVS9enVu3bqlFgo0GAzExcVRvXr1Qu8XgKWlJe+88w5//PEH1atX58aNG+o+CQkJmJqaYmtrm+c2IYorCUyiWKpUqRKNGjVix44dAOzYsYNGjRoV6m28lJQUkpKSAFAUhZ07d9KoUSOaNm3Ko0ePOH78OACBgYG4ubkB5LlNiOJK6jGJYuvy5cv4+PiQmJhIuXLlWLhwIfXq1Su0/kRHR/Pf//4Xg8FAeno69evXZ/r06VStWpU//viDmTNnZksJr1y5MkCe24QojiQwCSGEKFLkVp4QQogiRQKTEEKIIkUCkxBCiCJFApMQQogiRQKTEEKIIkUCkygxfHx8WLp0ab626e/vz6pVq/K1zRclJiaGBg0aoNfrX+ixQjyJrJUnxHOQJYWEyH8yYhJCCFGkSGASL8SaNWtwcnKiVatWdO/enSNHjgAQFRXFwIEDadOmDY6OjgQEBJCWlqYe16BBAzZu3Ei3bt1o1aoVy5Yt49q1awwaNIg33niDCRMmqPtHRkbi7OzMl19+Sbt27XB1dSU0NPSxfdq7dy8ajYY2bdowaNAgzp8/n+t+iqIwb948OnTowBtvvIGHhwcXL14Est8eHD16NK1atVL/a9iwIUFBQUDGKhTvvfceDg4OdO/enZ07dz62X0OHDmXZsmUMGjSIVq1aMWLEiGzlOk6cOMGgQYNo06YNnp6eREZGqtuSkpLw9fXF0dERJycnli5dmm29wIULF9KuXTu6dOnC/v37s533eY4VIl8VXikoUVJcvnxZcXZ2VmJjYxVFUZTo6Gjl6tWriqIoyqlTp5Q///xT0el0SnR0tOLm5qZ899136rH29vbK6NGjlaSkJOXixYtKkyZNlGHDhinXrl1TEhMTlR49eihBQUGKoijK0aNHlUaNGinz5s1TUlNTlcjISKVFixbK5cuXFUVRFG9vb+Wzzz5TFEVRzpw5o7Rv3145ceKEotfrlaCgIKVz585Kampqjv4fOHBA8fLyUu7fv6+kp6crly5dUm7dupWjzaz27dundOzYUblx44by4MEDxdnZWdm2bZui0+mUM2fOKA4ODspff/2V6/UaMmSI0qVLF+Xvv/9WHj58qAwZMkRZtGiRoiiKEhsbqzg4OCj79u1TDAaD8uuvvyoODg7KnTt3FEVRlLFjxyozZsxQHjx4oMTHxyt9+/ZVNm/erCiKomzatEnp3r27cuPGDeXu3bvKkCFDFHt7e0Wn0z33sULkJxkxiQJnZmZGWloaly9fRqfTUaNGDWrVqgVkLFLasmVLzM3NqVGjBgMHDuS3337LdvwHH3yAtbU1r7/+Ovb29nTs2JGaNWtiY2ODs7MzZ8+ezbb/hAkTsLS0xMHBARcXF3788cccfdqyZQsDBw6kRYsWmJmZ4eXlhYWFBSdOnMixr7m5OQ8ePODvv/9GURTq169P1apVH/t+M0u6L1u2jOrVq7Nv3z5effVV+vbti7m5OY0bN6Z79+55Fvzr06cPdevWpVSpUri5uXHu3DkAQkJCcHZ2xsXFBVNTUzp27EjTpk3Zv38/8fHx7N+/H19fX8qUKUOlSpUYPnw44eHhAPz444+8++67VK9eHVtbWz788EP1fM9zrBD5TZIfRIGrXbs2vr6+rFixgkuXLuHo6IiPjw92dnZcuXKFBQsWcPr0aR4+fIjBYKBJkybZjs+6YKmVlVWO3+Pj49Xfy5UrR5kyZdTfX3nlFeLi4nL06caNGwQHB7Nhwwb1NZ1Ol+u+HTp0YPDgwQQEBHD9+nW6deuGt7c31tbWOfZNSkpi7NixTJw4Ua06e/36daKiotTfIePWmKen52OvWZUqVdSfS5cuTUpKitrvXbt2sXfvXnW7Xq+nXbt23LhxA71ej6Ojo7otPT1dLbXx77IfWQsQPs+xQuQ3CUzihfDw8MDDw4Pk5GT8/f1ZvHgxixYtYtasWTRu3JglS5ZgbW3NunXr+Omnn575PImJiaSkpKjB6ebNm7z++us59qtevTqjR49mzJgxRrU7bNgwhg0bxp07d5g4cSJff/01EydOzLZPeno6kydPpl27dgwcODDbudq2bct33333zO8ra1sajYa5c+fm2BYXF4elpSVHjx7F3DznP+0qVapw8+ZN9fesP1erVu2ZjxUiv8mtPFHg/v77b44cOUJaWhqWlpZYWVlhaprx0Xvw4AFly5albNmyXL58mc2bNz/3+VasWEFaWhrHjx9n3759udYv6t+/P4GBgZw8eRJFUUhJSWHfvn0kJyfn2DcqKoqTJ0+i0+koXbo0lpaWav+zWrp0KQ8fPsTPzy/b6506deKff/4hODgYnU6HTqcjKiqKy5cvP/V78/T0ZO/evRw8eBCDwUBqaiqRkZHExsZStWpVOnbsyIIFC0hOTiY9PZ1r165x7NgxAHr06MH69euJjY3l/v37rFmzRm33eY4VIr9JYBIFLi0tjSVLltCuXTscHR1JSEjgo48+AsDb25sdO3bwxhtvMGPGDNzd3Z/rXJUrV6ZcuXI4OTkxZcoUZs2aRf369XPs16xZM+bMmUNAQABt27alW7duagbdvz148IDp06fj4OBA586dsbW15f3338+xX3h4OCdOnMDBwUHNzAsNDcXa2ppvvvmGnTt34uTkhKOjI4sXL86WfWis6tWrs3r1ar766is6dOiAi4sL33zzDenp6QB8+umn6HQ63N3dadu2LePHj+f27dsADBgwAEdHRzQaDV5eXnTr1i1b289zrBD5SeoxiWIjMjKSjz/+mAMHDhR2V4QQz0FGTEIIIYoUCUxCCCGKFLmVJ4QQokiREZMQQogiRQKTEEKIIkUCkxBCiCJFApMQQogiRQKTEEKIIuX/AaTlVdJuwWGTAAAAAElFTkSuQmCC\n", "text/plain": [ "<Figure size 72x165.6 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.set(rc={\"figure.figsize\":(1, 2.3)})\n", "sns.set_style(\"white\")\n", "\n", "bar_df = pd.DataFrame(\n", " {\n", " 'sample size needed': sample_size_needed,\n", " 'target': variable,\n", " 'method' : method\n", " }\n", ")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "sns.barplot(x='sample size needed', y='method', hue='target', data=bar_df, palette=palette, ci=None,\n", " hue_order = ['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "sns.despine()\n", "plt.savefig('fig/inflation_bar_all.pdf')\n", "bar_df" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "sample_size_needed = []\n", "variable = []\n", "method = []" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 72x72 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "sns.set(rc={\"figure.figsize\":(1, 1)})\n", "sns.set_style(\"white\")\n", "# Replicability of:\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "\n", "cols = ['tab:blue', 'tab:green', 'tab:orange', 'tab:purple', 'tab:red', 'tab:brown']\n", "for i_target, target in enumerate(['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'Flanker_AgeAdj', 'CardSort_AgeAdj', 'PicSeq_AgeAdj']):\n", " tmp = df.loc[(df.target==target) & (df.connectivity==feature)]\n", " tmp_null = df_null.loc[(df_null.target==target) & (df_null.connectivity==feature)]\n", "\n", " alpha=0.05\n", " replication_prob = np.zeros(len(tmp.n.unique()))\n", " n_req = 600\n", " for i, n in enumerate(tmp.n.unique()):\n", " tmp2 = tmp[tmp.n == n]\n", " tmp2_null = tmp_null[tmp_null.n == n]\n", " r_discovery_threshold = np.quantile(tmp2_null.r_discovery_cv.dropna(), 1-alpha)\n", "\n", " if (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() == 0:\n", " replication_prob[i] = np.nan\n", " else:\n", " # #(significant replications among significant discoveries) / # significant replications\n", " replication_prob[i] = (tmp2.loc[tmp2['r_discovery_cv']>=r_discovery_threshold,'p_replication']<alpha).sum() / (tmp2['r_discovery_cv']>=r_discovery_threshold).sum() * 100\n", "\n", " if replication_prob[i] >= 80 and n_req == 600:\n", " n_req = n\n", "\n", " sample_size_needed.append(n_req)\n", " variable.append(target)\n", " method.append(feature + '_' + model)\n", "\n", " sns.lineplot(x=tmp.n.unique(), y=replication_prob, color=cols[i_target]).set(title=target)\n", "sns.despine()\n", "plt.axhline(80, linestyle = 'dashed')\n", "plt.axhline(100)\n", "plt.xlim(0,500)\n", "plt.ylim(0,100)\n", "plt.savefig('fig/replication_all_' + feature + '_' + model + '.pdf')" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/html": [ "<div>\n", "<style scoped>\n", " .dataframe tbody tr th:only-of-type {\n", " vertical-align: middle;\n", " }\n", "\n", " .dataframe tbody tr th {\n", " vertical-align: top;\n", " }\n", "\n", " .dataframe thead th {\n", " text-align: right;\n", " }\n", "</style>\n", "<table border=\"1\" class=\"dataframe\">\n", " <thead>\n", " <tr style=\"text-align: right;\">\n", " <th></th>\n", " <th>sample size needed</th>\n", " <th>target</th>\n", " <th>method</th>\n", " </tr>\n", " </thead>\n", " <tbody>\n", " <tr>\n", " <th>0</th>\n", " <td>75</td>\n", " <td>age</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>1</th>\n", " <td>75</td>\n", " <td>CogTotalComp_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>2</th>\n", " <td>125</td>\n", " <td>PMAT24_A_CR</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>3</th>\n", " <td>375</td>\n", " <td>Flanker_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>4</th>\n", " <td>275</td>\n", " <td>CardSort_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " <tr>\n", " <th>5</th>\n", " <td>200</td>\n", " <td>PicSeq_AgeAdj</td>\n", " <td>netmats_parcor_Ridge</td>\n", " </tr>\n", " </tbody>\n", "</table>\n", "</div>" ], "text/plain": [ " sample size needed target method\n", "0 75 age netmats_parcor_Ridge\n", "1 75 CogTotalComp_AgeAdj netmats_parcor_Ridge\n", "2 125 PMAT24_A_CR netmats_parcor_Ridge\n", "3 375 Flanker_AgeAdj netmats_parcor_Ridge\n", "4 275 CardSort_AgeAdj netmats_parcor_Ridge\n", "5 200 PicSeq_AgeAdj netmats_parcor_Ridge" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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sWPs27cPV1fXAuf069ePTZs2cerUKRRFISMjg3379pGenl7g3NjYWE6dOoVWq6V8+fKYmJio7X/UokWLePDgAUFBQfle79y5M3/99Rfbt29Hq9Wi1WqJjY0lLi7uid+bh4cHe/fu5eDBg+h0OjIzM4mJiSExMRFra2s6dOjAnDlzSE9PJycnh6tXr3L06FEAevXqxbp160hMTOTevXusXr1arfdZygpR0iRYvKKysrJYuHAhbdu2xcnJiZSUFD799FMA/P39iYiI4K233mLKlCm4ubk907WqV69OpUqV6NixIxMnTmTq1Km89tprBc5r1qwZM2bMYPr06bRp04YePXqoM5f+7v79+3z++ec4OjrSpUsXLC0t+fDDDwucFxkZycmTJ3F0dFRnRIWFhWFhYcG3337Ljh076NixI05OTixYsCDfrK/iqlmzJitXruTrr7+mffv2dOrUiW+//ZacnBwA5s2bh1arxc3NjTZt2jB27Fhu3boFQP/+/XFycsLT0xNvb2969OiRr+5nKStESZJ8FqJUxcTE8Nlnn3HgwIGybooQ4hnIk4UQQgi9JFgIIYTQS7qhhBBC6CVPFkIIIfSSYCGEEEIvCRZCCCH0kmAhhBBCLwkWQggh9PpfBtTvhSvCCdIAAAAASUVORK5CYII=\n", "text/plain": [ "<Figure size 72x165.6 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.set(rc={\"figure.figsize\":(1, 2.3)})\n", "sns.set_style(\"white\")\n", "\n", "bar_df = pd.DataFrame(\n", " {\n", " 'sample size needed': sample_size_needed,\n", " 'target': variable,\n", " 'method' : method\n", " }\n", ")\n", "\n", "palette = {\n", " 'age' : 'tab:blue',\n", " 'CogTotalComp_AgeAdj' : 'tab:green',\n", " 'PMAT24_A_CR' : 'tab:orange',\n", " 'Flanker_AgeAdj' : 'tab:purple',\n", " 'CardSort_AgeAdj' : 'tab:red',\n", " 'PicSeq_AgeAdj' : 'tab:brown'\n", "}\n", "\n", "sns.barplot(x='sample size needed', y='method', hue='target', data=bar_df, palette=palette, ci=None,\n", " hue_order = ['age', 'CogTotalComp_AgeAdj', 'PMAT24_A_CR', 'PicSeq_AgeAdj', 'CardSort_AgeAdj', 'Flanker_AgeAdj'])\n", "plt.legend(bbox_to_anchor=(1.2, 1), loc=2, borderaxespad=0.)\n", "sns.despine()\n", "plt.savefig('fig/replication_bar_all.pdf')\n", "bar_df" ] }, { "cell_type": "code", "execution_count": 57, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x144 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "<AxesSubplot:xlabel='r_discovery_overfit', ylabel='Count'>" ] }, "execution_count": 57, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "<Figure size 216x144 with 1 Axes>" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sns.set(rc={\"figure.figsize\":(3, 2)})\n", "sns.set_style(\"white\")\n", "feature = 'netmats_parcor'\n", "model = \"Ridge\"\n", "df = pd.read_csv('res/hires_results_' + model + '.csv')\n", "df_null = pd.read_csv('res/hires_results_null_' + model + '.csv')\n", "sns.histplot(df_null.r_discovery_cv, bins=np.linspace(-0.5, 0.5, 20))\n", "plt.show()\n", "sns.histplot(df_null.r_discovery_overfit, bins=np.linspace(-0.6+1, 0.6+1, 20))" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "count 1.200000e+04\n", "mean 1.000000e+00\n", "std 3.644590e-10\n", "min 1.000000e+00\n", "25% 1.000000e+00\n", "50% 1.000000e+00\n", "75% 1.000000e+00\n", "max 1.000000e+00\n", "Name: r_discovery_overfit, dtype: float64" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_null.r_discovery_overfit.describe()" ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-1. , -0.8, -0.6, -0.4, -0.2, 0. , 0.2, 0.4, 0.6, 0.8, 1. ])" ] }, "execution_count": 51, "metadata": {}, "output_type": "execute_result" } ], "source": [ "np.linspace(-1.0, 1.0, 11)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "\n" ] }, { "cell_type": "code", "execution_count": 13, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Traceback (most recent call last):\n", " File \"/home/tspisak/miniconda3/envs/rapids-0.18/lib/python3.7/site-packages/matplotlib/cbook/__init__.py\", line 196, in process\n", " func(*args, **kwargs)\n", " File \"/home/tspisak/miniconda3/envs/rapids-0.18/lib/python3.7/site-packages/matplotlib/animation.py\", line 1467, in _stop\n", " self.event_source.remove_callback(self._loop_delay)\n", "AttributeError: 'NoneType' object has no attribute 'remove_callback'\n" ] }, { "data": { "text/plain": "<IPython.core.display.Javascript object>", "application/javascript": "/* Put everything inside the global mpl namespace */\nwindow.mpl = {};\n\n\nmpl.get_websocket_type = function() {\n if (typeof(WebSocket) !== 'undefined') {\n return WebSocket;\n } else if (typeof(MozWebSocket) !== 'undefined') {\n return MozWebSocket;\n } else {\n alert('Your browser does not have WebSocket support. ' +\n 'Please try Chrome, Safari or Firefox ≥ 6. ' +\n 'Firefox 4 and 5 are also supported but you ' +\n 'have to enable WebSockets in about:config.');\n };\n}\n\nmpl.figure = function(figure_id, websocket, ondownload, parent_element) {\n this.id = figure_id;\n\n this.ws = websocket;\n\n this.supports_binary = (this.ws.binaryType != undefined);\n\n if (!this.supports_binary) {\n var warnings = document.getElementById(\"mpl-warnings\");\n if (warnings) {\n warnings.style.display = 'block';\n warnings.textContent = (\n \"This browser does not support binary websocket messages. \" +\n \"Performance may be slow.\");\n }\n }\n\n this.imageObj = new Image();\n\n this.context = undefined;\n this.message = undefined;\n this.canvas = undefined;\n this.rubberband_canvas = undefined;\n this.rubberband_context = undefined;\n this.format_dropdown = undefined;\n\n this.image_mode = 'full';\n\n this.root = $('<div/>');\n this._root_extra_style(this.root)\n this.root.attr('style', 'display: inline-block');\n\n $(parent_element).append(this.root);\n\n this._init_header(this);\n this._init_canvas(this);\n this._init_toolbar(this);\n\n var fig = this;\n\n this.waiting = false;\n\n this.ws.onopen = function () {\n fig.send_message(\"supports_binary\", {value: fig.supports_binary});\n fig.send_message(\"send_image_mode\", {});\n if (mpl.ratio != 1) {\n fig.send_message(\"set_dpi_ratio\", {'dpi_ratio': mpl.ratio});\n }\n fig.send_message(\"refresh\", {});\n }\n\n this.imageObj.onload = function() {\n if (fig.image_mode == 'full') {\n // Full images could contain transparency (where diff images\n // almost always do), so we need to clear the canvas so that\n // there is no ghosting.\n fig.context.clearRect(0, 0, fig.canvas.width, fig.canvas.height);\n }\n fig.context.drawImage(fig.imageObj, 0, 0);\n };\n\n this.imageObj.onunload = function() {\n fig.ws.close();\n }\n\n this.ws.onmessage = this._make_on_message_function(this);\n\n this.ondownload = ondownload;\n}\n\nmpl.figure.prototype._init_header = function() {\n var titlebar = $(\n '<div class=\"ui-dialog-titlebar ui-widget-header ui-corner-all ' +\n 'ui-helper-clearfix\"/>');\n var titletext = $(\n '<div class=\"ui-dialog-title\" style=\"width: 100%; ' +\n 'text-align: center; padding: 3px;\"/>');\n titlebar.append(titletext)\n this.root.append(titlebar);\n this.header = titletext[0];\n}\n\n\n\nmpl.figure.prototype._canvas_extra_style = function(canvas_div) {\n\n}\n\n\nmpl.figure.prototype._root_extra_style = function(canvas_div) {\n\n}\n\nmpl.figure.prototype._init_canvas = function() {\n var fig = this;\n\n var canvas_div = $('<div/>');\n\n canvas_div.attr('style', 'position: relative; clear: both; outline: 0');\n\n function canvas_keyboard_event(event) {\n return fig.key_event(event, event['data']);\n }\n\n canvas_div.keydown('key_press', canvas_keyboard_event);\n canvas_div.keyup('key_release', canvas_keyboard_event);\n this.canvas_div = canvas_div\n this._canvas_extra_style(canvas_div)\n this.root.append(canvas_div);\n\n var canvas = $('<canvas/>');\n canvas.addClass('mpl-canvas');\n canvas.attr('style', \"left: 0; top: 0; z-index: 0; outline: 0\")\n\n this.canvas = canvas[0];\n this.context = canvas[0].getContext(\"2d\");\n\n var backingStore = this.context.backingStorePixelRatio ||\n\tthis.context.webkitBackingStorePixelRatio ||\n\tthis.context.mozBackingStorePixelRatio ||\n\tthis.context.msBackingStorePixelRatio ||\n\tthis.context.oBackingStorePixelRatio ||\n\tthis.context.backingStorePixelRatio || 1;\n\n mpl.ratio = (window.devicePixelRatio || 1) / backingStore;\n\n var rubberband = $('<canvas/>');\n rubberband.attr('style', \"position: absolute; left: 0; top: 0; z-index: 1;\")\n\n var pass_mouse_events = true;\n\n canvas_div.resizable({\n start: function(event, ui) {\n pass_mouse_events = false;\n },\n resize: function(event, ui) {\n fig.request_resize(ui.size.width, ui.size.height);\n },\n stop: function(event, ui) {\n pass_mouse_events = true;\n fig.request_resize(ui.size.width, ui.size.height);\n },\n });\n\n function mouse_event_fn(event) {\n if (pass_mouse_events)\n return fig.mouse_event(event, event['data']);\n }\n\n rubberband.mousedown('button_press', mouse_event_fn);\n rubberband.mouseup('button_release', mouse_event_fn);\n // Throttle sequential mouse events to 1 every 20ms.\n rubberband.mousemove('motion_notify', mouse_event_fn);\n\n rubberband.mouseenter('figure_enter', mouse_event_fn);\n rubberband.mouseleave('figure_leave', mouse_event_fn);\n\n canvas_div.on(\"wheel\", function (event) {\n event = event.originalEvent;\n event['data'] = 'scroll'\n if (event.deltaY < 0) {\n event.step = 1;\n } else {\n event.step = -1;\n }\n mouse_event_fn(event);\n });\n\n canvas_div.append(canvas);\n canvas_div.append(rubberband);\n\n this.rubberband = rubberband;\n this.rubberband_canvas = rubberband[0];\n this.rubberband_context = rubberband[0].getContext(\"2d\");\n this.rubberband_context.strokeStyle = \"#000000\";\n\n this._resize_canvas = function(width, height) {\n // Keep the size of the canvas, canvas container, and rubber band\n // canvas in synch.\n canvas_div.css('width', width)\n canvas_div.css('height', height)\n\n canvas.attr('width', width * mpl.ratio);\n canvas.attr('height', height * mpl.ratio);\n canvas.attr('style', 'width: ' + width + 'px; height: ' + height + 'px;');\n\n rubberband.attr('width', width);\n rubberband.attr('height', height);\n }\n\n // Set the figure to an initial 600x600px, this will subsequently be updated\n // upon first draw.\n this._resize_canvas(600, 600);\n\n // Disable right mouse context menu.\n $(this.rubberband_canvas).bind(\"contextmenu\",function(e){\n return false;\n });\n\n function set_focus () {\n canvas.focus();\n canvas_div.focus();\n }\n\n window.setTimeout(set_focus, 100);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('<div/>');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items) {\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) {\n // put a spacer in here.\n continue;\n }\n var button = $('<button/>');\n button.addClass('ui-button ui-widget ui-state-default ui-corner-all ' +\n 'ui-button-icon-only');\n button.attr('role', 'button');\n button.attr('aria-disabled', 'false');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n\n var icon_img = $('<span/>');\n icon_img.addClass('ui-button-icon-primary ui-icon');\n icon_img.addClass(image);\n icon_img.addClass('ui-corner-all');\n\n var tooltip_span = $('<span/>');\n tooltip_span.addClass('ui-button-text');\n tooltip_span.html(tooltip);\n\n button.append(icon_img);\n button.append(tooltip_span);\n\n nav_element.append(button);\n }\n\n var fmt_picker_span = $('<span/>');\n\n var fmt_picker = $('<select/>');\n fmt_picker.addClass('mpl-toolbar-option ui-widget ui-widget-content');\n fmt_picker_span.append(fmt_picker);\n nav_element.append(fmt_picker_span);\n this.format_dropdown = fmt_picker[0];\n\n for (var ind in mpl.extensions) {\n var fmt = mpl.extensions[ind];\n var option = $(\n '<option/>', {selected: fmt === mpl.default_extension}).html(fmt);\n fmt_picker.append(option);\n }\n\n // Add hover states to the ui-buttons\n $( \".ui-button\" ).hover(\n function() { $(this).addClass(\"ui-state-hover\");},\n function() { $(this).removeClass(\"ui-state-hover\");}\n );\n\n var status_bar = $('<span class=\"mpl-message\"/>');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n}\n\nmpl.figure.prototype.request_resize = function(x_pixels, y_pixels) {\n // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n // which will in turn request a refresh of the image.\n this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n}\n\nmpl.figure.prototype.send_message = function(type, properties) {\n properties['type'] = type;\n properties['figure_id'] = this.id;\n this.ws.send(JSON.stringify(properties));\n}\n\nmpl.figure.prototype.send_draw_message = function() {\n if (!this.waiting) {\n this.waiting = true;\n this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n }\n}\n\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n var format_dropdown = fig.format_dropdown;\n var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n fig.ondownload(fig, format);\n}\n\n\nmpl.figure.prototype.handle_resize = function(fig, msg) {\n var size = msg['size'];\n if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n fig._resize_canvas(size[0], size[1]);\n fig.send_message(\"refresh\", {});\n };\n}\n\nmpl.figure.prototype.handle_rubberband = function(fig, msg) {\n var x0 = msg['x0'] / mpl.ratio;\n var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n var x1 = msg['x1'] / mpl.ratio;\n var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n x0 = Math.floor(x0) + 0.5;\n y0 = Math.floor(y0) + 0.5;\n x1 = Math.floor(x1) + 0.5;\n y1 = Math.floor(y1) + 0.5;\n var min_x = Math.min(x0, x1);\n var min_y = Math.min(y0, y1);\n var width = Math.abs(x1 - x0);\n var height = Math.abs(y1 - y0);\n\n fig.rubberband_context.clearRect(\n 0, 0, fig.canvas.width / mpl.ratio, fig.canvas.height / mpl.ratio);\n\n fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n}\n\nmpl.figure.prototype.handle_figure_label = function(fig, msg) {\n // Updates the figure title.\n fig.header.textContent = msg['label'];\n}\n\nmpl.figure.prototype.handle_cursor = function(fig, msg) {\n var cursor = msg['cursor'];\n switch(cursor)\n {\n case 0:\n cursor = 'pointer';\n break;\n case 1:\n cursor = 'default';\n break;\n case 2:\n cursor = 'crosshair';\n break;\n case 3:\n cursor = 'move';\n break;\n }\n fig.rubberband_canvas.style.cursor = cursor;\n}\n\nmpl.figure.prototype.handle_message = function(fig, msg) {\n fig.message.textContent = msg['message'];\n}\n\nmpl.figure.prototype.handle_draw = function(fig, msg) {\n // Request the server to send over a new figure.\n fig.send_draw_message();\n}\n\nmpl.figure.prototype.handle_image_mode = function(fig, msg) {\n fig.image_mode = msg['mode'];\n}\n\nmpl.figure.prototype.updated_canvas_event = function() {\n // Called whenever the canvas gets updated.\n this.send_message(\"ack\", {});\n}\n\n// A function to construct a web socket function for onmessage handling.\n// Called in the figure constructor.\nmpl.figure.prototype._make_on_message_function = function(fig) {\n return function socket_on_message(evt) {\n if (evt.data instanceof Blob) {\n /* FIXME: We get \"Resource interpreted as Image but\n * transferred with MIME type text/plain:\" errors on\n * Chrome. But how to set the MIME type? It doesn't seem\n * to be part of the websocket stream */\n evt.data.type = \"image/png\";\n\n /* Free the memory for the previous frames */\n if (fig.imageObj.src) {\n (window.URL || window.webkitURL).revokeObjectURL(\n fig.imageObj.src);\n }\n\n fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n evt.data);\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n fig.imageObj.src = evt.data;\n fig.updated_canvas_event();\n fig.waiting = false;\n return;\n }\n\n var msg = JSON.parse(evt.data);\n var msg_type = msg['type'];\n\n // Call the \"handle_{type}\" callback, which takes\n // the figure and JSON message as its only arguments.\n try {\n var callback = fig[\"handle_\" + msg_type];\n } catch (e) {\n console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n return;\n }\n\n if (callback) {\n try {\n // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n callback(fig, msg);\n } catch (e) {\n console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n }\n }\n };\n}\n\n// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\nmpl.findpos = function(e) {\n //this section is from http://www.quirksmode.org/js/events_properties.html\n var targ;\n if (!e)\n e = window.event;\n if (e.target)\n targ = e.target;\n else if (e.srcElement)\n targ = e.srcElement;\n if (targ.nodeType == 3) // defeat Safari bug\n targ = targ.parentNode;\n\n // jQuery normalizes the pageX and pageY\n // pageX,Y are the mouse positions relative to the document\n // offset() returns the position of the element relative to the document\n var x = e.pageX - $(targ).offset().left;\n var y = e.pageY - $(targ).offset().top;\n\n return {\"x\": x, \"y\": y};\n};\n\n/*\n * return a copy of an object with only non-object keys\n * we need this to avoid circular references\n * http://stackoverflow.com/a/24161582/3208463\n */\nfunction simpleKeys (original) {\n return Object.keys(original).reduce(function (obj, key) {\n if (typeof original[key] !== 'object')\n obj[key] = original[key]\n return obj;\n }, {});\n}\n\nmpl.figure.prototype.mouse_event = function(event, name) {\n var canvas_pos = mpl.findpos(event)\n\n if (name === 'button_press')\n {\n this.canvas.focus();\n this.canvas_div.focus();\n }\n\n var x = canvas_pos.x * mpl.ratio;\n var y = canvas_pos.y * mpl.ratio;\n\n this.send_message(name, {x: x, y: y, button: event.button,\n step: event.step,\n guiEvent: simpleKeys(event)});\n\n /* This prevents the web browser from automatically changing to\n * the text insertion cursor when the button is pressed. We want\n * to control all of the cursor setting manually through the\n * 'cursor' event from matplotlib */\n event.preventDefault();\n return false;\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n // Handle any extra behaviour associated with a key event\n}\n\nmpl.figure.prototype.key_event = function(event, name) {\n\n // Prevent repeat events\n if (name == 'key_press')\n {\n if (event.which === this._key)\n return;\n else\n this._key = event.which;\n }\n if (name == 'key_release')\n this._key = null;\n\n var value = '';\n if (event.ctrlKey && event.which != 17)\n value += \"ctrl+\";\n if (event.altKey && event.which != 18)\n value += \"alt+\";\n if (event.shiftKey && event.which != 16)\n value += \"shift+\";\n\n value += 'k';\n value += event.which.toString();\n\n this._key_event_extra(event, name);\n\n this.send_message(name, {key: value,\n guiEvent: simpleKeys(event)});\n return false;\n}\n\nmpl.figure.prototype.toolbar_button_onclick = function(name) {\n if (name == 'download') {\n this.handle_save(this, null);\n } else {\n this.send_message(\"toolbar_button\", {name: name});\n }\n};\n\nmpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n this.message.textContent = tooltip;\n};\nmpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n\nmpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n\nmpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n // Create a \"websocket\"-like object which calls the given IPython comm\n // object with the appropriate methods. Currently this is a non binary\n // socket, so there is still some room for performance tuning.\n var ws = {};\n\n ws.close = function() {\n comm.close()\n };\n ws.send = function(m) {\n //console.log('sending', m);\n comm.send(m);\n };\n // Register the callback with on_msg.\n comm.on_msg(function(msg) {\n //console.log('receiving', msg['content']['data'], msg);\n // Pass the mpl event to the overridden (by mpl) onmessage function.\n ws.onmessage(msg['content']['data'])\n });\n return ws;\n}\n\nmpl.mpl_figure_comm = function(comm, msg) {\n // This is the function which gets called when the mpl process\n // starts-up an IPython Comm through the \"matplotlib\" channel.\n\n var id = msg.content.data.id;\n // Get hold of the div created by the display call when the Comm\n // socket was opened in Python.\n var element = $(\"#\" + id);\n var ws_proxy = comm_websocket_adapter(comm)\n\n function ondownload(figure, format) {\n window.open(figure.imageObj.src);\n }\n\n var fig = new mpl.figure(id, ws_proxy,\n ondownload,\n element.get(0));\n\n // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n // web socket which is closed, not our websocket->open comm proxy.\n ws_proxy.onopen();\n\n fig.parent_element = element.get(0);\n fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n if (!fig.cell_info) {\n console.error(\"Failed to find cell for figure\", id, fig);\n return;\n }\n\n var output_index = fig.cell_info[2]\n var cell = fig.cell_info[0];\n\n};\n\nmpl.figure.prototype.handle_close = function(fig, msg) {\n var width = fig.canvas.width/mpl.ratio\n fig.root.unbind('remove')\n\n // Update the output cell to use the data from the current canvas.\n fig.push_to_output();\n var dataURL = fig.canvas.toDataURL();\n // Re-enable the keyboard manager in IPython - without this line, in FF,\n // the notebook keyboard shortcuts fail.\n IPython.keyboard_manager.enable()\n $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n fig.close_ws(fig, msg);\n}\n\nmpl.figure.prototype.close_ws = function(fig, msg){\n fig.send_message('closing', msg);\n // fig.ws.close()\n}\n\nmpl.figure.prototype.push_to_output = function(remove_interactive) {\n // Turn the data on the canvas into data in the output cell.\n var width = this.canvas.width/mpl.ratio\n var dataURL = this.canvas.toDataURL();\n this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n}\n\nmpl.figure.prototype.updated_canvas_event = function() {\n // Tell IPython that the notebook contents must change.\n IPython.notebook.set_dirty(true);\n this.send_message(\"ack\", {});\n var fig = this;\n // Wait a second, then push the new image to the DOM so\n // that it is saved nicely (might be nice to debounce this).\n setTimeout(function () { fig.push_to_output() }, 1000);\n}\n\nmpl.figure.prototype._init_toolbar = function() {\n var fig = this;\n\n var nav_element = $('<div/>');\n nav_element.attr('style', 'width: 100%');\n this.root.append(nav_element);\n\n // Define a callback function for later on.\n function toolbar_event(event) {\n return fig.toolbar_button_onclick(event['data']);\n }\n function toolbar_mouse_event(event) {\n return fig.toolbar_button_onmouseover(event['data']);\n }\n\n for(var toolbar_ind in mpl.toolbar_items){\n var name = mpl.toolbar_items[toolbar_ind][0];\n var tooltip = mpl.toolbar_items[toolbar_ind][1];\n var image = mpl.toolbar_items[toolbar_ind][2];\n var method_name = mpl.toolbar_items[toolbar_ind][3];\n\n if (!name) { continue; };\n\n var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n button.click(method_name, toolbar_event);\n button.mouseover(tooltip, toolbar_mouse_event);\n nav_element.append(button);\n }\n\n // Add the status bar.\n var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n nav_element.append(status_bar);\n this.message = status_bar[0];\n\n // Add the close button to the window.\n var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n button.click(function (evt) { fig.handle_close(fig, {}); } );\n button.mouseover('Stop Interaction', toolbar_mouse_event);\n buttongrp.append(button);\n var titlebar = this.root.find($('.ui-dialog-titlebar'));\n titlebar.prepend(buttongrp);\n}\n\nmpl.figure.prototype._root_extra_style = function(el){\n var fig = this\n el.on(\"remove\", function(){\n\tfig.close_ws(fig, {});\n });\n}\n\nmpl.figure.prototype._canvas_extra_style = function(el){\n // this is important to make the div 'focusable\n el.attr('tabindex', 0)\n // reach out to IPython and tell the keyboard manager to turn it's self\n // off when our div gets focus\n\n // location in version 3\n if (IPython.notebook.keyboard_manager) {\n IPython.notebook.keyboard_manager.register_events(el);\n }\n else {\n // location in version 2\n IPython.keyboard_manager.register_events(el);\n }\n\n}\n\nmpl.figure.prototype._key_event_extra = function(event, name) {\n var manager = IPython.notebook.keyboard_manager;\n if (!manager)\n manager = IPython.keyboard_manager;\n\n // Check for shift+enter\n if (event.shiftKey && event.which == 13) {\n this.canvas_div.blur();\n // select the cell after this one\n var index = IPython.notebook.find_cell_index(this.cell_info[0]);\n IPython.notebook.select(index + 1);\n }\n}\n\nmpl.figure.prototype.handle_save = function(fig, msg) {\n fig.ondownload(fig, null);\n}\n\n\nmpl.find_output_cell = function(html_output) {\n // Return the cell and output element which can be found *uniquely* in the notebook.\n // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n // IPython event is triggered only after the cells have been serialised, which for\n // our purposes (turning an active figure into a static one), is too late.\n var cells = IPython.notebook.get_cells();\n var ncells = cells.length;\n for (var i=0; i<ncells; i++) {\n var cell = cells[i];\n if (cell.cell_type === 'code'){\n for (var j=0; j<cell.output_area.outputs.length; j++) {\n var data = cell.output_area.outputs[j];\n if (data.data) {\n // IPython >= 3 moved mimebundle to data attribute of output\n data = data.data;\n }\n if (data['text/html'] == html_output) {\n return [cell, data, j];\n }\n }\n }\n }\n}\n\n// Register the function which deals with the matplotlib target/channel.\n// The kernel may be null if the page has been refreshed.\nif (IPython.notebook.kernel != null) {\n IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n}\n" }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": "<IPython.core.display.HTML object>", "text/html": "<div id='17ab6b3f-17f5-4393-ba61-c8ea56151728'></div>" }, "metadata": {}, "output_type": "display_data" } ], "source": [], "metadata": { "collapsed": false } }, { "cell_type": "code", "execution_count": null, "outputs": [], "source": [], "metadata": { "collapsed": false } } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "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.8.10" } }, "nbformat": 4, "nbformat_minor": 1 }