{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Comparing test-statistics: T-Test and Wilcoxon rank sum test for generic Zero-Inflated Negative Binomial Distribution" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import scanpy.api as sc\n", "from anndata import AnnData\n", "from numpy.random import negative_binomial, binomial, seed" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, data following a (zero-inflated) negative binomial (ZINB) distribution is created for testing purposes. Test size and distribution parameters can be specified.\n", "For a specified number of marker genes in a cluster, distribution of these genes follows a different ZINB distribution. We use the following notation:\n", "\n", "$z_r=\\text{zero-inflation reference group}$\n", "\n", "$z_c=\\text{zero-inflation cluster}$\n", "\n", "$p_r=\\text{success probability reference group}$\n", "\n", "$p_c=\\text{success probability cluster}$\n", "\n", "$n_r=\\text{number of successfull draws till stop reference group}$\n", "\n", "$n_c=\\text{number of successfull draws till stop cluster}$\n", "\n", "Let $X_r\\sim NegBin(p_r,n_r)$, $Y_r\\sim Ber(z_r)$ independent of $X$, then $Z_r=YX\\sim ZINB(z_r,p_r,n_r)$ describes the distribution for the all cells/genes except for marker genes in a specified number of clustered cells, which are described using a $ZINB(z_c,p_c,n_c)$ distribution. \n", "\n", "Especially, we have \n", "\n", "$$\\mathbb{E}[Z_r]=z_r*n_r*\\frac{1-p_r}{p_r}$$\n", "\n", "and using standard calculations for expectations and variance, \n", "\n", "$$\\mathbb{V}[Z_r]=z_r*n_r\\frac{1-p_r}{p_r²}+z_r(1-z_r)(n_r\\frac{1-p_r}{p_r})²$$\n", "\n", "\n", "This form of the ZINB was taken from\n", "\n", "https://papers.ssrn.com/sol3/papers.cfm?abstract_id=1293115 (Greene, 1994)\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Tune parameters and create data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to demonstrate the superiority of the wilcoxon rank test in certain cases, parameter specifications have to be found that violate the t-test assumptions and therefore make it difficult to detect marker genes. In short: Expectations should be the same, but variance should be different, for the simple reason that expectation differences will be - due to the law of large numbers - detected by the t-test as well, even though the lack of normal distribution means that this may take some time. \n", "\n", "The effect should increase with the magnitude of variance difference, as demonstrated below.\n", "In order for the t-test to fail, little to no difference in mean should occur. This can be achieved by tuning the parameters using the formula for expectation specified above. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "seed(1234)\n", "# n_cluster needs to be smaller than n_simulated_cells, n_marker_genes needs to be smaller than n_simulated_genes\n", "n_simulated_cells=1000\n", "n_simulated_genes=100\n", "n_cluster=100\n", "n_marker_genes=10\n", "# Specify parameter between 0 and 1 for zero_inflation and p, positive integer for r\n", "# Differential gene expression is simulated using reference parameters for all cells/genes \n", "# except for marker genes in the distinct cells. \n", "reference_zero_inflation=0.15\n", "reference_p=0.25\n", "reference_n=2\n", "cluster_zero_inflation=0.9\n", "cluster_p=0.5\n", "cluster_n=1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create data.\n", "Both sample names and variable names are simply intgers starting from 0. \n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "adata=AnnData(np.multiply(binomial(1,reference_zero_inflation,(n_simulated_cells,n_simulated_genes)),\n", " negative_binomial(reference_n,reference_p,(n_simulated_cells,n_simulated_genes))))\n", "# adapt marker_genes for cluster \n", "adata.X[0:n_cluster,0:n_marker_genes]=np.multiply(binomial(1,cluster_zero_inflation,(n_cluster,n_marker_genes)),\n", " negative_binomial(cluster_n,cluster_p,(n_cluster,n_marker_genes)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Cluster according to true grouping: \n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The following code includes the true grouping such that it can be accessed by normal function calling of \n", "\n", " sc.tl.rank_genes_groups(adata,'true_groups')\n", " \n", "or, respectively,\n", "\n", " sc.tl.rank_genes_groups(adata,'true_groups', test_type='wilcoxon')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "smp='true_groups'\n", "true_groups_int=np.ones((n_simulated_cells,))\n", "true_groups_int[0:n_cluster]=0\n", "true_groups=list()\n", "for i,j in enumerate(true_groups_int):\n", " true_groups.append(str(j))\n", "adata.smp['true_groups']=pd.Categorical(true_groups, dtype='category')\n", "adata.uns[smp + '_order']=np.asarray(['0','1'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Testing" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Case 1: No mean difference, large variance difference. \n", "\n", "Using the data created above, we get the following expectation and variance \n", "\n", "$\\mathbb{E}[Z_r]=\\mathbb{E}[Z_c]=0.9$\n", "\n", "$\\mathbb{V}[Z_r]=8.19$\n", "\n", "$\\mathbb{V}[Z_c]=1.89$\n", "\n" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgkAAAEkCAYAAACluKKNAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VNX5x/HPA4iACGIoYCwgUkRccAMVi8qqqFUEFVxA\nogKidadVsS7UpYgboGLRn62iuLfiQhFFFqGKbFUhErS41FoFRY2IEtbn98edxJlkktyEmczC9/16\nzcuZc8+deY7xjmfOfc455u6IiIiIlFYr1QGIiIhIelInQUREROJSJ0FERETiUidBRERE4lInQURE\nROJSJ0FERETiUidBRERE4lInQZLCzC42s0/MrMjMlprZ0ZXUPzZSr8jMPjazETUVq4iEY2bHmNlL\nZvY/M3MzywtxzoFm9oaZbYicd6OZWQ2EKwmgToIknJkNBCYAfwIOAd4CXjGzVuXUbwNMj9Q7BBgD\n3Gdmp9VMxCISUkMgH7gc2FBZZTNrBMwE1gCdI+f9HrgqiTFKAplWXJREM7OFwDJ3HxZV9m/gb+4+\nKk79sUB/d28XVfYwsL+7d6mJmEWkasxsPXCJuz9aQZ2LgLFAc3ffECm7HrgI+KXrf0Bpr0ojCWa2\nu5nta2b7RT+SFZxkHjOrCxwGvFbq0GvAUeWc1iVO/VeBTma2U2IjFJEa1AWYX9xBiHgVyAX2SklE\nUiWhOglmdoCZvQN8DbwPLI888iP/FCnWFKhNMLwYbQ3QopxzWpRTv07k/UQkM5V3bRcfkzRXJ2S9\nh4HvgN7AF4CGiERERLJc2E7CgcCh7v5BMoORrLAW2Ao0L1XeHFhdzjmry6m/JfJ+IpKZyru2i49J\nmgubk7ACDftKCO6+CVhKMOoUrTfB7IV4FpRTf4m7b05shCJSgxYAR5tZvaiy4hHpT1MSkVRJ2E7C\n74DbzayrmTU2swbRj2QGKBnpHiDPzIaaWQczm0CQqDQJwMweM7PHoupPAvY0s/GR+kOBPOCumg5c\nRMpnZg3N7GAzO5jg/x+tIq9bRY6PMbNZUac8CfwEPBrJbesPXAvco5kNmSHUFEgz2xZ5Greyu9dO\nZFCS+czsYuBqYA+CBNcr3X1e5NhcAHfvFlX/WGAcsD/Br4yx7j6pZqMWkYqYWTdgTpxDk909z8we\nBbq5+15R5xwITAQOJ8htmwTcrE5CZgjbSTi+ouPu/mrCIhIREZG0oMWUREREJK6wsxuAYDEloBVQ\nN7rc3RclMigRERFJvVCdBDNrDjwG9CqninISREREskzY2Q3jgfoEy+1uIJjCMhj4EPhNckITERGR\nVAp7u6Eb0Nfd343MdPjc3WdHNvi4HnglWQGKiIhIaoTtJOwCfBV5/h3wC4JRhOUEW/umlaZNm/pe\ne+1VYZ2NGzey884710xASZQt7YDsaUu2tGPp0qVr3f0XqY6jNF3fmSlb2pIt7Qh7fYftJHwItCNY\nIWsZMNTMVgHDgC+rG2Sy7LXXXixZsqTCOgUFBXTo0KGGIkqebGkHZE9bsqUdZvafVMcQj67vzJQt\nbcmWdoS9vsN2Eu4HWkee3wLMAM4FNgPnVzk6ERERSXuhOgnu/mjU80Vm1oZgZbxP3D3tRhJERERk\n+1VpnQQAM2sMrHP38jbrERERkSwQagqkmdUxs5vN7BvgG6BNpPw2MxuWzABFREQkNcKuk/AH4Czg\nYmBjVPm7wAWJDkpERERSL2wnYTBwobs/A2yLKl8OtE94VCIiIpJyYTsJewIflXN+3TjlIiIikuHC\ndhIKgK5xyk8D3klcOCIiIpIuws5uuBV42MxaEHQsTjGz9gRrJPRNVnAiIiKSOmHXSXjezLYQJDDu\nBNxFkLR4urvPSGJ8IiIikiKh10lw95eAlwDMzNzdkxaViIiIpFx1FlOyyD+suMzdt1VwioiIiGSg\nsIsp7Wlmz5jZV8AWgj0boh8iIiKSZcKOJEwBmgA3AGsA3WoQERHJcmE7CZ2BI9z9/WQGIyIiIukj\n7DoJ+cBuyQxERERE0kvYkYQRwD1mNpagwxCTh+DuXyU6MBEREUmtsJ2EIoKchOmlyo0gP6F2IoMS\nERGR1AvbSXgcWA8MQImLIiIiO4SwnYT9gUPc/YNkBiMiIiLpI2zi4lKgZTIDERERkfQSdiRhPDAu\nkri4nLKJiysSHZiIiIikVthOwnORfz4W+WdxToISF0VERLJU2E5Ch6RGISIiImkn7FbRSlgUkTLM\n7FOgdZxD0939pHLOiTc76iJ3n5TI2ERk+1V5F0gRkSidib3duAdBovOzlZw3DJgW9fr7BMclIgmg\nToKIVJu7fx392swuANZReSeh0N1XJy0wEUmIsFMgRUQqZGYGXABMcfcNlVSfYGZrzWyxmY0wM30X\niaQhjSSISKL0BtoA/1dJvRuBOQSruPYE7gaaArcmNToRqbJQnQQzO9fdHyvn2AR3vzyxYYlIBhoG\nLHb39yqq5O63RL1818xqA3+ggk6CmQ0HhgPk5uZSUFBQYSBFRUWV1skE2dIOyJ62ZEs7wgo7knCv\nmX3r7tGJRpjZvcBpgDoJIjswM2sG9AV+W43TFwKNzKy5u6+JV8HdHwIeAujUqZN36FDxrOyCggIq\nq5MJsqUdkD1tyZZ2hBX2PuBZwBQzO7q4wMzuA04HeiQjMBHJKHnARuCpapx7MMFOs4WJDEhEtl+o\nToK7vwJcDLxoZoea2f1Af6BbstZQMLNRkaSmdWb2tZm9bGYHJOOzRKT6IgmLQ4Gn3X19qWOXmNnK\nqNcnm9kwMzvAzNqa2VDgZuAhd99Ys5GLSGVCJy66+5NmtjvwJvANQQfh30mLDLoBDwCLCZZ/vhl4\n3cz2c/dvk/i5IlI13YB2wKA4x5oC7aNebyb4wXEPwY+UjwkSGScmN0QRqY5yOwlmdkc5h74mWCxl\nWPADAtz96kQH5u7Hl4pnMMGCK78GXk7054lI9bj7HIKOfLxjo4HRUa9nADNqJDAR2W4VjSQcXU75\n/4AWkQf8vNlTsu1K8Mvjuxr6PBERkR1auZ0Ed+9Sk4GEMAF4F1iQ6kBERER2BBmxmJKZ3QN0Bbq6\n+9Zy6mgedYbLlrZkSztERCrKSahs7fUS7j4gMeHEjWMccCbQ3d0/riAGzaPOcNnSlmxph4hIRSMJ\ncX+x1yQzmwAMJOggrKysvoiIiCRORTkJZ9VkIKWZ2URgMHAq8J2ZFSdKri89F1tEREQSL513XruY\nYEbDLODLqMfvEvUBL7+smZQi2SQ/P5+nn36a5cuXpzoUkawQdoOnCvMTkpGT4O5x511Xx8cfl01l\n+Oyzz7jjjjs4+eSTE/UxIpICffr0YcaMGYwfP55Zs2Zx0kknMX36dN555x3GjBmT6vBEMlrY2Q2l\n8xN2AjoCzYDpCY0oCQ4++GBOP/103H9e0qGwsJBPPvkkhVGJSCJs2rQJgKlTpzJnzhxq1arFscce\ny7Bhw1IcmUjmC9VJiJefEFmv/V6CWwBp7YADDmDs2LH84he/KCkrKChg9OjRqQtKRBJixYoVnHvu\nuXz00Uds3LiR+vXrA8FUVBHZPtXOSfDgZ/l9wGWJCyc55s2bx1dffcXKlbETJK666qoURSQiiTJv\n3jw6derEs88+S506dZgyZQpPPvkkv/td+elLxbkLixcvrsFIRTLP9iYutiUDFmS65pprGDNmDGPH\njuXkk0/m66+/BmDUqFEx9d555x0ANmzYwLhx47jwwgu5/fbbKSzUDrYi6eqaa65h/fr1vPDCC/Tp\n04c1a9bQoEEDHnnkkZh6ffr0AWD8+PGMGjWKwsJC7r333jLfAyLys7CJi6U3ezJgD+AU4MlEB5Vo\nixcvZt68eQAsW7aMM844g9/+9rdl6o0cOZLZs2czYsQIunTpwsiRI3n33Xc5++yzmT497VMvRHZI\nhYWFXHfddUBwa3HkyJEUFBQwc+bMmHrxchdGjBhB165dazxmkUwRdhSg9GZP2wh2g7wemJTQiJJg\n69atbNq0ibp169KxY0emTp3KqaeeWub2g5nh7qxevZoLL7wQM2OfffZh4kTtYiuSrnbZZRduvfVW\nfvzxR3Jycrj77rspKiqibt26MfVWrFjB4MGDlbsgUgVhExfTbbOnKhk3bhyFhYU0a9YMgCZNmjBx\n4kTy8/Nj6o0aNYoBAwaw22670a1bN7p27UpBQQH9+vVLRdgiEsJzzz3HjBkzaNu2LTfeeCOTJ09m\n3bp1PPPMMzH1Fi5cWPK8Tp3gq2/ixInceuutNRqvSCapUj6BmdUB9oq8/NTdtyQ8oiQ4/PDDy5TV\nrl2bM888M6asV69edO3alQULFjB//nz22WcfTj31VDp37lxToYpIFdWvXz+mIz9ixAgKCgpo3Lhx\nTL1BgwYRTMqiZDr0+++/zwEHHFCSryAisUIlLprZTmZ2O1AIfAB8CBSa2Vgzq1vx2ZmjT58+1KtX\nj/fee49FixYpsUkki/Tv35+9996bm2++mfnz5zN//nyOOOKIknwlESkr7EjC/QRJipcDCyJlXYBb\ngN2ACxMfWs1TYpNI9rryyivZtGkTf/nLX5g0aRJnn312pefk5+eTn59P27ZtNaIoO6SwUyDPAs5z\n97+4+4rI4y/ABQTbOGeF0ouyFFNik0h2qFu3LhdddBFTpkzhm2++4aCDDipTR1MlRX4WdiRhA/Cf\nOOWfApsSFk2KFSc23XLLLSWJTevXr+eWW25JZVgikmB16tThvPPOi3tMI4oiPwvbSfgzcJ2ZXeDu\nmyDIUwCujRzLCq1bty5T1rBhQ0444YQURCMiqaBlnkV+Vm4nIc7Oj32A48zsncjrg4H6wKtJik1E\npMZFjyjWrl0bCEYUTznllFSGJZISFY0klN758R+lXs9JcCwiIinXsmXLmNfbtm2jfv36zJ8/P0UR\niaROuZ2EeDs/iohku4YNG3LkkUfi7jHrKixbtizFkYnUvLTfnElEpCZ16NCBqVOnllmMqXfv3imK\nSCR1tncXSBGRrDJt2rSSZMVor7zySgqiEUktjSSIiETZY4894pYXT4sW2ZHov/pq2Lx5MzNmzCAn\nJ4ejjjqKKVOm8P3333POOeew2267ldRzd6ZNm8Zbb71FYWEhzZs356STTtLKbZJVzGw0cFOp4jXu\n3qKCcw4kWMn1cOBb4EHgFi/eVEFE0oJuN1TDgAEDWL58OS+88AI9e/ZkzZo1NGzYkIEDB8bUGzZs\nGKtWraJ3797k5OTw3XffMX36dG6//fYURS6SNB8Ae0Q9Diyvopk1AmYCa4DOBMu9/x64KvlhikhV\nhB5JMLP2wEhgP8CBFcDd7v5hkmJLW4WFhVx33XUAHHDAAYwcORKARx99NKbeRx99xMMPPwxAjx49\n6NmzJ7NmzaJ3795ce+21NRqzSJJtcffVIeueAzQAhrj7BiDfzPYFrjKzezSaIJI+QnUSzOwE4EVg\nKfDPSHFXYLmZ9XX3GUmKLy3tsssu3Hrrraxfv56cnBzuvvtudt99d3beeeeYegceeCAXXXQRHTt2\n5I033qB79+4AbNmSETtsi1TF3mb2BbARWAhc5+4fl1O3CzA/0kEo9irBhnF7AZ8kM9BE2bhxI9Om\nTaNdu3a0adOGv/71r9SvX59zzz2XevXqpTo8kYQIO5LwJ+Aed4/5+RvZPnoMsEN1Ep588kleeOEF\n2rRpw0033cSdd95J3bp1efrpp2Pq9erVi5ycHL744gtGjRpVspnM7NmzUxG2SLIsBPKAlUAz4Hrg\nLTPb392/iVO/BfB5qbI1UcfKdBLMbDgwHCA3N5eCgoIKAyoqKqq0zva65JJL2G+//Zg1axaLFi2i\nZ8+eNGzYkL59+zJ+/PiEfEZNtKOmZEtbsqUdYYXtJHQABsQp/wtwReLCyQxDhgyhc+fO5OfnM3r0\naE488UQaNWrEwIEDefXVn1epHjFiBK1bt6Z58+b069ePVq1a0aRJk5IFWoqFTYQUSUfuHjM30Mze\nBj4GhgD3JOgzHgIeAujUqZN36NChwvoFBQVUVmd7bdu2jfvuuw+Azp07M3bsWAB69uyZsM+uiXbU\nlGxpS7a0I6ywiYtfA2X3VA3Kvk5cOJmhOCfhjjvuYM2aNYwcOZIhQ4aU7B5XrH379ixYsIBx48ax\ndu1a+vXrx/HHH88DDzwQUy9sIqRIJnD39cD7QLtyqqwGmpcqax51LCNEX+/R1/TWraVXtBfJXGFH\nEh4BHjKz1sBbkbJfA9cB9yYjsHRWnJPw448/VpiTUKxNmzaMHDmSkSNHsmbNGl588cWY42ETIUUy\ngZnVA/al/P1dFgBjzayeuxdvrdgb+IJg+/mM8NJLL5Us3Vy/fn2efvpp2rZty5133pnq0EQSJmwn\nYTSwARgF7B4p+wYYC+xwV8Rzzz3HjBkzaNu2LTfeeCOTJ0+mqKiIZ555JqZevBkMzZs3Z/jw4TFl\n8RIhmzRpUm6nQySdmNldwMvAZwQ5CTcAuwCTI8fHAIe7e8/IKU8SrKvwqJndCuxDsO38HzNpZsM5\n55zDjBkzGD9+PLNmzeKkk07i3nvv5Ze//KXWQpGsEaqT4O7bCBIUx5jZLyJlO9xthmL169enX79+\nJa9HjBgRt97xxx8f6v2effZZ7r//fk466SSuu+46HnjgATZt2lQmEVIkTf0SeApoSnD78W3gSHf/\nT+T4HkDb4sru/r2Z9QYmAkuA74C7SVD+Qk0pvt0wdepU5syZQ61atRgxYgRdu3ZNcWQiiRMqJ8HM\npptZYwg6B8UdBDPb1cymJzPAHcGll17KypUrefLJJznvvPP44osv+Pzzz7n66qtTHZpIpdz9THfP\ndfe67r6nu5/m7iuijue5+16lzlnu7se4ez1338PdM2oUAWDFihWce+65fPTRR2zcuLGkvKioKKae\nu/OPf/yDGTNmsG3btpLy0rcdRdJR2NsNxwPxxr7rEdxLlO2watUq3njjDSBYW+Hvf/87QMm6CiKS\nfhYuXAjALbfcUrKvw/r167nlllti6g0ePJg2bdpQp04dbrvtNh5++GHat2/PhAkT6Nu3b43HLVIV\nFXYSzGy/4qfAPmbWNOpwbaAPQbKRbIfoxZX+9Kc/lTwv/cPqpZdeolevXjRo0KDGYhOR+Fq3bl2m\nrGHDhpxwwgkxZZ9//jlTpkwBgqXa8/LyuOSSS2okRpHtVdlIQj7BEswOvFHqmAGb2AHXSUi0hx56\niK1bt1K7dm1OPvlkILjfedVVsUvZl1534ZRTTin3Pb/99lueeOIJcnJy6N+/P3feeSfr1q3j4osv\npk2bNkltj4j8bNu2bfzwww/suuuu5ObmMm3aNIYPH87SpUtTHZpIpSrrJHQg6AysAI4G1kYd2wR8\nGTWFSapp//33L1NWt27dMp2A9u3bM2fOHD755BOef/55+vXrx5YtWzj77LO5+OKLY+qeeeaZ5OXl\nUVhYyOGHH87o0aPJycnhvPPOY+7cuclsjohEeeyxx3j33XdZsWJFyW6wY8aMKTfhWSSdVNhJcPcP\nAMysvrtvrKiu1JzodRfmz58fd4nQjRs3cvbZZwNw//33079/f4Ayqz1qxEEkuSZNmsRPP/3EwQcf\nTH5+PqtWreLtt9/mqKOO4sgjj0x1eCIVCjsFMiUdBDM7BvgdcBiQC5zn7o+mIpZ0MGzYMCDIVXjx\nxRcpKCigbt26XH755WXqtmrViqFDh7J161YOPPBALr30UnbffXeaNm0aU08jDiLJtXjxYmbNmgXA\n+eefT+/evZk5cya9evXi3HPPjam7dOlSWrZsSU5ODtOmTePrr7/eoZYAlvQTeqvoFGlIkBfxWOSx\nQ3v44Yc5++yzufzyy2nQoAE9evTgtdde4+yzz+bZZ5+NqVs8xLnnnnuyevVq8vPz+eijj8os+BR2\nxEFEqqdZs2aMHTu2ZDfY/fYL8sFLL998wQUX4O7svPPOfPXVV+y5555s2rSJRYsW8dBDD6UidJH0\n7iS4+3RgOoCZPZraaFKvVq1gWYsVK1bw+uuvA9CyZcsy+QgAJ5xwQpnV4D788EOuv/76mBkUYUcc\nRKR6pkyZwtSpU1m+fDldunQpSU5+4oknYurFmwpdUFAQ9/oWqSlp3UmQWEOGDGHo0KG0bNmSQYMG\nceyxxzJ37lw6depUpm7Y1eBOO+00mjZtSvv27cnJyeG1117D3bnxxhtrpE0i2a527dqcfvrpZcpz\nc3NjXoedCi1Sk7Kmk5CO+80nWqdOnWjVqhX//Oc/+eabb/j888855ZRT6NixY5m2LFu2jL59+/LB\nBx/w3nvvUa9ePSDYTCq67vDhw8nNzSUnJ4devXrRvXt3GjduzIcfflhpPPfddx+XXnppwtqXiX+T\neLKlHVKzHnzwwZKchBNPPJEXX3yR//3vfyUbvomkwnZ1EszsRqC5u/82QfFUWzruN58MHTp04Nhj\njy15XV47oudg5+bmstNOO7F+/XruvPPOmPr7779/zLTKa6+9lp133pm+ffvGDHO2atWKVq1aUatW\nrZJfNu+//z75+fnMmzcvIW3L1L9JadnSDqlZ48aNi5uT8O6775bcohCpads7ktCbYOOWlHcSJFbY\n1eCKVbad9fjx4/n73/9Or169GDx4MHXq1OGEE07glVdeian35Zdfsscee8TMwGjTpg2nn356ydK1\nIlKWchIkHYXa4Kk87n60u+dWXlPSVdjtrPv3788TTzxBixYtGDx4MPfeey+bN28uc+4555wDwBVX\nXMHbb7/NYYcdxmeffVYyg0JE4lNOgqSjUD/tzOxwYKm7by1VXgvo5O6LkhGcmTUEfhV5WQtoZWYH\nA9+6+2fJ+MwdTdjtrCG4vdCmTRueeuop5syZg5mxcOFCjjjiiJI6xTMw3n///ZIZGMcdd5w2qxKp\nRNjl2SG4vmrXrs2+++5bUlb6WhRJhLDjvwsI9oT/qlR5k8ix2okMKkonYE7U6z9GHpOBvCR9psRR\nfBtip512Yu3atfz1r3+le/fu9OjRg9mzZ5fUGzJkCMOGDYuZgbFs2bK4MzBE5Gdhl2ePdy3+4he/\nYNSoUTHXYjwTJ07kt78Nf3d48eLFdO7cueS1bifueML+VY1gk6fSmgA/JS6cWO4+N/LZkmKLFy8u\nSVBctmwZZ5xxBnfddVeZeoMHD6Z169a8+eabbN26lbVr19KyZUuuvvrqmg5ZJCuFvRaPPvrokkXR\nopONn3nmmTLJxtu2bStzvrtz3XXXMXPmzJKyc845h9mzZ3PFFVdQv359evTowbvvvht3QTfJDpVt\nFV38V3fgYTOLXp65NnAQ8HaSYpM0snXrVjZt2kTdunXp2LEjU6dOZdCgQbz//vsx9S644AIg+AVU\nnKHdqFEjhg8frlXjRBIg7LXYv39/3nvvPfLy8ujWrRtA3GRjCJKajzzySNw9pmOxbNmymHphbydu\n3ryZGTNmkJOTw1FHHcWUKVP44IMPGDlyJLvttltC/j1IzahsJKE4B8GAbVGvATYATwB/TkJckmbG\njRtHYWEhzZo1A6BJkya89NJLPPfcczH14mVoA2W+RNyd6dOnU7t2bY477riSL58XX3yRvn37Jrs5\nIhlr3LhxLF68mHbt2pGTk8O8efO4+OKL+f7772PqXXnllWzatIm//OUvTJo0qcLk4Q4dOjB16lQa\nN24cU967d++Y1/EWdFu2bFnMLQmAAQMG0LlzZwoLC7nhhhs48cQTadCgAQMHDuTVV1/dzn8DUpMq\n2wXyLAAz+xS41d1/rImgJP0cfvjhZcpq167NmWeeGVMWNkN78ODBtGnThjp16nDbbbfx8MMPAzBh\nwgR1EkQq8OCDD5ZZT6FRo0Z89dVXMR2BzZs38+qrr3LQQQdxwQUXMHbsWJYsWcL3339fpjPw8ssv\nk5+fX9LxmDZtGvXr12f69Okx9QYPHkzPnj159dVXWbNmDVu2bGHo0KElK7wWKyws5LrrrgPggAMO\nYOTIkRQUFPDaa68l6d+KJEvYXSBHJTsQyQ5hM7Q///xzpkyZAgS7W+bl5ZXbOSi9M179+vU57rjj\nYuoUFhaWDGNOmzaN/Px82rZty+mnn67NqiSrhB2ti/dr/s4772TAgAFlfs3fcMMNcTsef/vb32Ju\nE27bto0WLVowZMiQkjJ3p0+fPjG5C7vssgu33norP/74Izk5Odx9990UFRWx8847h2pj6YRJgOXL\nl/PWW29RWFhI8+bNOf7449ljjz1CvZ9UX9asuCjpIWyG9rZt2/jhhx/Yddddyc3NZdq0aQwcODBm\npUiIvzNevC+v/v37M3v2bEaNGkVhYSF9+/blzTffZPr06TzyyCMx77l06VIWLFhQ0rE48sgjNftC\nMkbY0bp4v+YBJk+eXOY9w3Y8inMXosXLXXjuueeYMWMGbdu25cYbb2Ty5MmsW7eOW265JaZe2ITJ\na6+9lg0bNnDQQQeRn5/PqlWrePvttznqqKNittv+9ttveeKJJ8jJyaF///7ceeedrFu3josvvpg2\nbdqU+SypnFZclJR47LHHWLZsGTk5Oey7777UrVuXP/3pT2Xuq4b98ir21ltvldTv06dPScJWsSuv\nvJKNGzfSq1cvOnTowLp163jkkUd4/PHHmTBhQkxd/XKRdBR2tC7er/ndd9897q/5sB2PsLkLxUu7\nFxs+fDgrVqzgyiuvjPmff9iEycWLFzNr1iwAzj//fHr37s3MmTPp1atXTCfhzDPPJC8vj8LCQg4/\n/HBGjx5NTk4O5513HnPnzi3TbqncdnUS3P3oRAUiO5b77ruvzFxvgOuuuy5mrnfYL69//etfHHPM\nMaxYsaJkhKB4tCLa0qVLy0z/6tevH8ccc0xMWdhfLiI1LexoXbxf80VFRTzzzDNlzg/b8Si+3Vda\n6RkT0SMOxR2AH3/8kVWrVsXU69ChA88//3yZGQ+lOx3NmjVj7NixdOzYkblz57LffvsBwUyPaBs3\nbizJy7j//vvp378/gG45bodKOwlmthPwKHCju3+U9IhkhxBvrne8RV7+/Oc/8/LLL5OTk8PJJ5/M\nlClT+O6770qmWhYrLCwkPz+f2rVrl3zhFBUVMXHixJh6nTp14sILL6R37940atSIdevWMWvWLA49\n9NAy8YXM6d76AAAgAElEQVT55QJlcya+/vrrMhs8aREaqWn169enX79+Ja9HjBhRbt2wHY/yRtJK\n/zccb8ShoKCAyy67LKbeP/7xDxo0aBBTNnHiRGbMmBFTNnnyZJ5++mmWLFlCly5dWLduHRMnTuTJ\nJ5+MqdeqVSuGDh3K1q1bOfDAA7n00kvZfffdadq0aTktl8pU+u3k7pvN7CTghhqIR3YQ8eZ6n3rq\nqaxcuTKm3k033VQm+app06ZMmTKFwYMHl9QbOXIkX331FXXq1IlZha70yMQ999zDO++8w8KFC1m1\nahWNGzcmNzeXG26I/c877C+XeDkTmzZtYtGiRTE5E1VZhGbr1q288MILZfImTj31VHUoJCOEHXE4\n44wzQi34NHDgQDp37swPP/zAfffdx0knnUROTg55eXkxSZiPPfYY8+fPZ+7cuey00040btyYJk2a\ncOONN8Z87r333stvfvMb9t5774S1OVuF/caZCpwK3JPEWGQHEm/dhYkTJ5Kfnx9TL2zyVVVXoYu+\nXbFixQpmzpwZ86U0duxYFi1aRH5+PkceeSQFBQU8/fTTPPbYYzHvF3bnvqrsaZGXl0fHjh05++yz\nady4MevWreP1118nLy+vZEZIMSVhSjoKO+IQdsGn6O+BAw88sOQ2yKOPPhpTb9SoUSW3CefMmUO9\nevWoVasWmzdvjhkBHD9+PHPmzGH16tX06dOH/v37c+CBB5aJd+PGjUybNo127drRpk0b/vrXv1JY\nWMg111xDvXr1ytTPxusxbCfhI+AGMzsKWArErJfg7vcmOjDJbmHXXSgv+apu3box9RK9Cl1eXh6z\nZ8/msssu49tvv6V79+68++67PP/88zG//MPmTFRlT4tPP/2Uxx9/PKbskEMO4eijY1OAwiZhvvPO\nOxxyyCFs2LCBSZMmsXLlStq0acOIESO0+p2kVNgFn6K/B3bfffdykzDD3iZs3bo1U6dO5aeffuKV\nV15h7NixrFy5kh49enDHHXeU1Bs4cCCHHnooy5YtY86cOZx66qnUqlWLwYMHl1lILsz1+NJLL9Gr\nV68yt1jSWdhOwoXAeuCIyCOaA+okSFKETb4KuyJk2C+l4l/+K1asqPCX/5gxY9i6dSu1atViy5Yt\njBkzhlq1apWMeBQ788wzcXc+++wzatWqxerVq2nRokXcPIxTTjmF3/zmN3Tr1q0kb+KNN94oc384\nbBLmyJEjmT17NiNGjKBLly6MHDmy5FZH6cVyqsrMRgH9gfbARoJl2ke5e34F5+wFfBLn0AnuPiNO\nuWSxunXrctFFFzFs2DAef/xxDjrooDJ1wn4PRN8mfOONN8q9TVisQYMGnHbaaZx22mls2bKlzAZZ\nhYWFJbcqpk+fzlVXXUVBQUHcmRJhrscRI0bQunVrmjdvTr9+/TjllFNo0qRJ5f+SUijsYkotkx2I\nSDxhk6/CjkxAuC+l8pafLf3Lf/To0cyePZvLL7+8JNfgtdde4/HHHy/JEoefF7ZZt24dS5cuLcmt\niLdM7e9//3uOOOIIVqxYQaNGjfjlL3/JkCFD+Pjjj2PqhU3CLL69snr1ai688ELMjH322adMUmc1\ndQMeABYTLN9+M/C6me3n7t9Wcm4f4L2o15XVlyxWp04dzjvvvLjHwn4PTJkyhalTp7J8+XK6dOlS\ncg0+8cQTMfX69evHTz/9FPOLvk6dOmUWadu8eXPJ8wceeKDkebxOR5jrsX379syZM4dPPvmE559/\nnn79+pVMFy19izJdKAtKdlgVfSmVt/xs6Q5FvFyDli1blrngS99TLR5pKH1PFcpPwhw4cGCZJMxF\nixYxe/ZsNm/eTJ06dWjdujXXXnttzPuNGjWKAQMGsNtuu9GtWze6du1KQUFBzJdudbn78dGvzWww\n8D3wa+DlSk7/xt1Xb3cQIhG1a9fm9NNPL1Oem5sb8/r222/nqaeeqvQX/ciRI0sWfSteAXLz5s3c\neeedZeoWJ0W//fbb/Pvf/6Zx48YMHz485pZksTZt2jBy5MiSbb9ffPHF6jY56bZ3xcWTgMbu/mSl\nlUUyTG5ubrmdiGLxRhzmzp1bZsQh7D1VCJ+EGXbHzV69etGsWTP++c9/sm7dOnbbbTdGjBhBy5ZJ\nGSDcFagFfBei7vNmVg/4NzDO3f+WjIBESgv7i/6SSy4pc3tgp512omPHjmXec9u2bRx00EExPyRK\nL1k9alTZHQ7+9re/xb3tmC65RFY6wapKJ5sVAPu4e+3EhbT9OnXq5EuWLKmwTkFBQZm57JkoW9oB\nmduWL774omTEoXHjxrRo0aLMr/QNGzaU3FNt164dkydPxt1LZjBE+/Wvf82cOXNKkjO/++47Bg0a\nxJIlS1izZk1JvWOPPTZmZsXy5cuBYDXKOXPmlNSLXhiqOOO7du3alS4MZWZL3b1KqdmR7eXbAZ3c\nPe6NYDNrCgwB3gS2AKcAfwCGuPuUcs4ZDgwHyM3NPax41KY8RUVFcbPPM022tAPSqy15eXllRvHW\nrl3L7NmzGTBgQJl6n3/+OTNnzmTu3LnUrl2b3r17c9ZZZ8Wcf+ihh5YZaXR3PvjgAxYsWADAoEGD\nykz5XLVqFe3atSuTrHzeeefxyCOPMGrUKA466KCSWVYvvPACDz74YKVtXL58edwZG8X222+/cNe3\nu1f7AbQE2m7PeyTjcdhhh3llVqxYUWmdTJAt7XDPnrZsbzsWLlzoa9asiSnbsmWLP/XUUzFlRx11\nVMnzl156qeT5scceG1OvR48eMa979erl7u49e/asMA5giVft++Ae4Atg76qcFzn3AWBZmLq6vjNT\nOrVlxowZoep169atTNm8efP8wQcfLFN+6KGHemFhYZny4uvN3f2ee+7xIUOG+Jw5c0rK+vTpE/ez\ne/To4du2bfPjjjvOt23bVlJ+zDHHxNTbunVrmceWLVtiPjeesNf39i7L/N/tOV9EygqbhBl2Kd2q\nZnxXh5mNA84Eurv7x5XVj2MhUPG9HZEEOf744yuvBGXyewCaNm3K8OHDy5SHWUAq7OwqKD+XqHip\n6WJh97+orlCdBDN7CJgDvOHuXyTkk0Vku4RdSjdsxnd1mdkEYCBBB2FlZfXLcTDwZUICEkmQsJ0J\nCL+AVJjZVRDkErVo0YL58+fTpEkTGjduzJVXXslHH8XujhB2063qCjuS0AAYC+xpZh8Bc4sf6jSI\npLewGd/VYWYTgcEEK7J+Z2YtIofWu/v6SJ0xwOHu3jPyegiwGXgH2AacTLCT7DXbHZBIhqhodhXE\nn+XUtGlTBgwYEDPLaerUqcybN4+cnByOOuoopkyZwvfff19mX4tqxxmmkrsPAjCzXwHHEsyNHgP8\n0sxWuXv7hEQjIpmmOBV8VqnyPwKjI8/3INhSPtr1QGtgK/AhcL6Xk7QosiMKO8vp8ssvj7u/zaBB\ng8qswVIdVc1J+BjIAZoBzQku/roVniEiWcvdK92D193zSr2eDEyOX1tEIPxS8+XtbxNvDZbqCJuT\ncDXB6EFXYC3wBvAEMMzd/5OQSERERAQIv9R8efvbxFuDpTpqhax3O3AYcAtwhLuf5+6T1UEQERFJ\nvMMPP7ykg1As3iyn5557jv3335+zzjqLGTNmsMsuu8Td16K6wt5u6E0wknAKcLOZrSJIXCye8fBN\nQqIRERGR0MLua1FdYRMXZxFJTDKz+sBRwDnAUwSjETslNCoRERFJudCJi2bWDOhOMKLQHdgHWE2Q\nnyAiIiJZJmziYgFBp2ANQadgHMEaCR8kMTYRERFJobAjCeNRp0BERGSHEjYnofItp0RERCSrhJ0C\nKSIiIjsYdRJEREQkLnUSREREJC51EkRERCSu0J0EM2tuZr8zsz+bWdNI2a/NrE3ywgMzu9jMPjGz\nIjNbamZHJ/PzREREJBCqk2BmhwEfEKyyeAHQKHKoN3BbckIDMxsITAD+BBwCvAW8YmatkvWZIiIi\nEgg7knAXMMHdDwE2RpW/Cvw64VH97CrgUXf/P3cvcPdLgS+Bi5L4mSIiIkL4TsJhxN///UugeeLC\n+ZmZ1Y187mulDr1GsHeEiIiIJFHYFRc3AE3ilO8LfJW4cGI0BWoTLAUdbQ3Qq3RlMxsODAfIzc2l\noKCgwjcvKiqqtE4myJZ2QPa0JVvaISIStpPwInCTmZ0Ree1mthcwFvh7EuKqMnd/CHgIoFOnTt6h\nQ4cK6xcUFFBZnUyQLe2A7GlLtrRDRCTs7YbfAbsDXwMNgH8Cq4BC4PrkhMZaYCtlb2c0J9h9UkRE\nRJIo7N4N64CuZtYDOJSgc/Evd389WYG5+yYzW0owg+K5qEO9SZPRCxERkWxWaSfBzHYiGDk4191n\nA7OTHtXP7gEeN7NFwJvACCAXmFSDMYiIiOyQKu0kuPvmyIJJXgPxlP7sZ8wsh+CWxh5APnCiu/+n\npmMRERHZ0YTNSZgMDEtmIOVx9wfcfS9339ndD3P3eamIQ0REZEcTdnbDLsA5ZtYbWAr8GH3Q3S9L\ndGAiIiKSWmE7CR2Af0We713qWI3fhhAREZHkCzu7oXuyAxEREZH0EnYkAQAzqwf8imD04CN3L0pK\nVCIiIpJyYXeB3MnM7gS+A94DlgPfmdkdkSmSIrKDq+q27mZ2bKRekZl9bGYjaipWEQkn7OyGscAg\ngnUK9gHaEezEOBgYk5zQRCRTVHVb98i06umReocQfI/cZ2an1UzEIhJG2NsNZwPnu/v0qLKPzOxr\n4GGCZZtFZMdVsq175PWlZtaH4MfEqDj1RwBfRLZ/BygwsyMIvku0oqpImgg7ktAY+ChO+UfAbokL\nR0QyTTW3de8Sp/6rQCfdwhRJH2FHEt4DLgN+W6r8cuDdhEYkIpmmStu6R7QASu/9sobgO6kp8GX0\nAW0Fn/mypS3Z0o6wwnYSrgamm1kv4O1I2ZEE+yickIzARESKaSv4zJctbcmWdoQV6nZDZCnk9sDf\ngIaRx3NAe3f/Z/LCE5EMUJ1t3VeXU39L5P1EJA2EXifB3f8H/CGJsYhIBqrmtu4LgH6lynoDS9x9\nc+KjFJHqCLtOwiVmNihO+SAzuzjxYYlIhrkHyDOzoWbWwcwmELWtu5k9ZmaPRdWfBOxpZuMj9YcC\necBdNR24iJQv7OyGK4D/xin/FLgyYdGISEZy92cIvieuJ0hm7krstu6tIo/i+p8AJwLHROr/AbjM\n3TX9USSNhL3d8EvgP3HKP48cE5EdnLs/ADxQzrFuccreAA5Nclgish3CjiSsBg6OU34oSjISERHJ\nSmFHEp4E7jWzH4G5kbLuwHjgiSTEJSIiIikWtpNwE9CGYEW0rZGy2sCzwA1JiEtERERSLFQnITIl\n6Swzu4FgMxaAd93930mLTERERFIq9DoJAO6+ClgFYGa/MrN67l6UlMhEREQkpcKuk/AnMxsSeW5m\nNhP4EPgysnObiIiIZJmwsxvOAT6IPD+BYKbDkcBjwO1JiEtERERSLOzthuYEayJAsADKs+6+yMy+\nBZYkJTIRERFJqbAjCd8ArSPPjwNmRZ7XASzRQYmIiEjqhR1J+DvwpJl9COxOMBUSgtsOq5IRmIiI\niKRW2E7CVQTLMrcCrnb3HyPlewB/TkZgIiIiklph10nYAtwdp3xcwiMSERGRtBA2J6GEmS03s5bJ\nCEZERETSR5U7CcBewE4JjkNERETSTHU6CSIiIrIDqE4nYT6wIdGBiIiISHqp0t4NAO5+YjICERER\nkfQSdu+GrWY2y8yalCpvbmZbyztPREREMlfY2w0GNAIWmtk+cY6JiIhIlgnbSXCgL/A68LaZ9Sp1\nLOHMbLiZzTGzQjNzM9srGZ8jIiIi8VVlJGGLu18M3AC8ZGYXJy8sABoArwGjk/w5IiIiEkfYxMWS\n0QJ3n2hmK4FngWOSElXwOeMBzKxTsj5DREREyleVkYQS7j4LOBI4KOERiYiISFoIu3dDmc6Eu//b\nzA4Bmic8qmows+HAcIDc3FwKCgoqrF9UVFRpnUyQLe2A7GlLtrRDRKTK6yREc/cigt0hQzGzW4E/\nVFKtu7vPrUYsDwEPAXTq1Mk7dOhQYf2CggIqq5MJsqUdkD1tyZZ2iIhsVyehGsYDUyqp81lNBCIi\nIiIVq9FOgruvBdbW5GeKSHKY2e7AH4HeQGuCa3sacL27f1PBeXnAI3EO1Y+MTopImqjpkYTQzKwF\n0AIoXrxpPzPbDfjM3b9NXWQiEpEL7AlcDayIPH8AeAo4rpJzfwLaRheogyCSfsrtJESWW97D3b8y\ns78Cl7v7DzUXGiOAm6Je/yPyz/OAR2swDhGJw93zgf5RRavM7PfANDNr5O7rKj7dVyc3QhHZXhVN\ngdwANIw8HwLUS344P3P30e5ucR6P1mQcIlIljYCNBCMFFalvZv8xs8/NbFpkppSIpJmKbje8Bbxg\nZksJ1km418zibhHt7ucnIzgRyRyR24G3AP/n7lsqqPoBcD7wHrArcDnwppkd5O7/Tn6kIhJWRZ2E\nwcDvgF8RrLiYQ/ALQUSy2PXXX89tt90GcJiZlbc3S8xUZTNrCLwM/I8gR6Fc7r4AWBB17lvAu8Cl\nwGXxztE6KJkvW9qSLe0Iq9xOgruvAX4PYGafAGdVlLEsItnhiiuuYNCgQXTo0OF94PRyqpVMVY50\nEKZHXv6mqgmI7r7VzJYA7Sqoo3VQMly2tCVb2hFW2BUX2yQ7EBFJD02bNqVp06YARe6+sqK6ZrYr\n8ArBLck+7r6+qp9nZgZ0JLj9ICJpJOzeDZjZSWY2z8zWmtnXZvaGmZ2YzOBEJH1FOgivAU2APGAX\nM2sRedSNqjfLzMZEvb7JzI43s73N7GDgLwSdhEk12wIRqUyokQQzG0ow//kJYHKk+Ghgqpld5O5/\nTVJ8IpK+DiPY6A3gw1LHugNzI8/bAv+NOrYbwa2DFsD3wDvAMe6+KGmRiki1hF1M6RrgKne/P6rs\nL5GZD9cC6iSI7GAiiYsWot5epV5fCVyZnKhEJJHC3m5oBcyIU/4KwXKsIiIikmXCdhI+I1ifvbTj\nqMIukCIiIpI5wt5uuAu4z8wOJVhkCeDXBGspXJqMwERERCS1wk6BfNDMvgJG8vNa7QXAAHd/MVnB\niYiISOqE3gXS3acCU5MYi4iIiKSR0OskiIiIyI5FnQQRERGJS50EERERiUudBBEREYlLnQQRERGJ\nK/TsBjM7AugJNKNU58Ld4+4BLyIiIpkr7AZPvwPuAFYBXwAeddjjniQiIiIZLexIwuXAZaU2eBIR\nEZEsFjYnoREwPZmBiIiISHoJ20l4CuiTzEBEREQkvYS93fBf4I9m9mtgGbA5+qC735PowERERCS1\nwnYShgLrgaMij2gOqJMgIiKSZcLuAtkm2YGIiIhIetFiSiIiIhJXVRZT2gc4HWgF1I0+5u7nJzgu\nERERSbGwiymdBPwdeAc4DFgMtAV2BuYnLToRERFJmbC3G24G/ujuXYCNwGBgL+B1YG5SIhMREZGU\nCttJaA88E3m+GWjg7kUEnYcrkhGYiIiIpFbYTsIPQL3I8y+BX0We1wGaJDooERERSb2wiYsLga7A\nCuAfwN1mdhDQD1iQpNhEREQkhcJ2Eq4CGkaejwZ2BU4DPowcExERkSwTdjGlj6Oe/wRclLSIRERE\nJC2EXkzJzOqZ2elmdo2Z7RYpa2tmuyc6KDPb3czuM7OVZrbBzP5rZn82s5xEf5aIVJ+ZzTUzL/V4\nOsR5p5nZCjPbGPlnv5qIV0SqJlQnwcx+BawEJgG3AcUdg4uAO5IQVy6wJ3A1cCAwCDiGYDdKEUkv\njwB7RD0urKiymXUhmC31BHBw5J/PmdkRSY5TRKoobE7CeOA1gk5BYVT5SwRfEAnl7vlA/6iiVWb2\ne2CamTVy93WJ/kwRqbaf3H11FepfAcxx99sir28zs+6R8rMSHp2IVFvY2w1HAXe5+9ZS5Z8R/Oqv\nCY0IFnL6qYY+T0TCOdPM1prZ+2Z2l5ntWkn9LgQ/OqK9StkdZkUkxULv3QDsFKesFfB9gmIpVyQH\n4hbg/9x9S7I/T0RCexL4D/AFsD8wBugIHFfBOS2ANaXK1kTK4zKz4cBwgNzcXAoKCioMqqioqNI6\nmSBb2gHZ05ZsaUdY5u6VVwoSkX509wvM7AeCL4FvgBeBj939glAfZnYr8IdKqnV397lR5zQEXgG2\nAn0iKz3Ge+/oL5HDXn/99Qo/pKioiHr16lVYJxNkSzsge9qS6e2YMGECDz74YGXVYq7TYmZ2OMG6\nKoe5+7/inWhmm4Ch7v5YVNm5BD8Cdq7sgzt16uRLliypsE5BQQEdOnSo7K3SXra0A7KnLdnSDjNb\n6u6dKqtXlXUS5pjZBwQrLz5DsOriGmBAFeIaD0yppM5nxU8iHYTpkZe/Ka+DAODuDwEPQfAlUtkf\nMVv+0NnSDsietmR6O2699VauuOIKOnTo8D7Bzq/xfFZO+RKCDn07IG4nAVgNNC9V1jxSLiJpJNRI\nAoCZ1SdIKjqUIJfhX8AT7r4hKYEF9zVfAYxgBOGHKpz7NcEQaEWaAmurH2HayJZ2QPa0JVva0drd\nf1GVEyIrsb4LHOvu88qp8wzQxN2Piyp7DfjG3StNXNT1nbGypS3Z0o5Q13foTkJNinQQXiNIVjyV\nYO+IYt+6+6YEfMaSMEMt6S5b2gHZ05ZsaUdlzKwtcA7BaN9aYD/gbmAD0Lk40dnMZgGL3H1U5PVR\nwDzgeuAFguXdbwa6uvvCBMWWFX+DbGkHZE9bsqUdYYVOXDSz5sCvgWaUmhXh7g8kOK7DgCMjzz8s\ndaw72p5aJB1sAnoClxMs2/5fgr1d/lhqJlTbyDEA3P0tMzsTuJWgc/ARMDBRHQQRSZxQnQQzGwQ8\nTDD0/x0QPfzgQEI7CZGEKEvke4pIYrn7f4FjQ9TbK07Z34C/JSEsEUmgsCMJtxGsrHhzFk1BfCjV\nASRItrQDsqct2dKOTJYtf4NsaQdkT1uypR2hhJ0C+R3BlKaPK60sIiIiWSHsiotPACclMxARERFJ\nL2FHEuoSZCFvApYDm6OPu/vNSYlOREREUibsSMKFQB+CtdX7AWdEPcpbbCUtmdnFZvaJmRWZ2VIz\nOzrVMVWVmY2Osz1vRixEY2bHmNlLZva/SNx5pY5bpH1fRLYJn2tm+6co3HKFaMejcf5Gb6co3B2G\nru/U0vWdfcJ2Em4ARrp7M3c/wN0PjHp0TGaAiWRmA4EJwJ+AQ4C3gFfMrFVKA6ueD4jdnvfA1IYT\nWkMgn2DaXLyFuK4GRgKXAp2Br4CZITYNqmmVtQPgdWL/RifWTGg7Jl3faUHXd7Zx90ofBPs0tA1T\nN50fBGvK/1+psn8DY1IdWxXbMRrIT3UcCWjHeiAv6rUBXwJ/iCqrT7CY1oWpjjdsOyJljwLTUh3b\njvTQ9Z1eD13f2fEIO5LwCMHKahkrkldxGGW3qH2NzNyidu/IkN0nZva0me2d6oASoA3BToAlfyMP\nlv2eR2b+jbqa2Vdm9qGZ/Z+ZNUt1QNlK13dG0PWdgcKuk9AAGGpmxwPLKJu4eFmiA0uCpkBt4m9R\n26vmw9kuC4E8YCXBCpjXA2+Z2f7u/k0qA9tOxVsFx/sb7VnDsWyvGcDzwCfAXgSrC842s8PcfWMq\nA8tSur7Tn67vDBS2k9ABeCfyfN9Sx9Jv84cs5+6vRL+OJMx8DAwB7klJUBLD3Z+OernczJYSbEp0\nEsGXi0hcur7T3450fYfqJLh792QHUgPWEmxhm3Vb1Lr7ejN7n2B73kxW/HdoTuxWxNnwN/rCzD4n\n8/9G6UrXd/rT9Z2BwuYkZDwPdo5cCvQudag3QRZ0xjKzegQjPF+mOpbt9AnBl0XJ3yjStqPJ/L9R\nU4Ih1Uz/G6UlXd8ZQdd3Bgq9C2SWuAd43MwWAW8CI4BcYFJKo6oiM7sLeJmgN96MYIrqLsDkVMYV\nhpk1BH4VeVkLaGVmBxNsAf6ZmY0HrjOzlQQ7gF5PkF38ZEoCLkdF7Yg8RgN/J/jS2AsYQzDda2pN\nx7oD0fWdYrq+s/D6TvX0ipp+ABcDnwIbCX55HJPqmKrRhqeBLwhWwPwfwX+s+6U6rpCxdyPIYyn9\neDRy3AguwC+BIuAN4IBUx12VdhBM63qV4EtjE8G9ykeBlqmOO9sfur5THruu7yx7hFqWWURERHY8\nO0xOgoiIiFSNOgkiIiISlzoJIiIiEpc6CSIiIhKXOgkiIiISlzoJIiIiEpc6CVJjzGy0meVXcLyb\nmXlk9TIRyRC6trOXOgmSTt4C9gAyeac7ESlL13aGUidBKmVmdWvic9x9k7uvdq3wJVIjdG1LZdRJ\nkDLMbK6Z/dnM7jKzr4E3zewqM1tmZj+a2f/M7GEz2y3qnDwzW29mPc0sP1Jvjpm1qeBzWpnZSjOb\nbGZ1Sg9Jhn1PMxtlZmsidR8zs5vM7NNk/fsRyVS6tqWq1EmQ8gwiWGf9aOBcYBtwBbA/cDZwOHBf\nqXN2BkYB5wNdgN0oZ3MdM+tAsAnPdCDP3beUE0eF72lmZwI3AX8ADgUKgKuq1FKRHYuubQkv1ZtH\n6JF+D2AusKySOn0INtGpFXmdR7ABSvuoOudE6hTvETIayAeOANYCfyj1nt0i79G0Cu+5AJhU6n1e\nAz5N9b9HPfRIt4eubT2q+tBIgpRnafQLM+thZjPN7HMz+wF4HqgLtIiqttHdP4h6/UWkTpOosj2B\n14Gx7n5biDgqe899gUWlzlkY4n1FdlS6tiU0dRKkPD8WPzGz1sA/CIb7zgAOIxgihOCiLlZ6WLE4\nSSn6v7O1wNvAmWbWhMqFeU8RCU/XtoSmP4aE0YngC+NKd1/g7h8CudV8r43AKcB3wMzoBKlqWgl0\nLlV2+Ha+p8iOQte2VEidBAnj3wT/rVxhZm3M7CyCRKdqcfcNwMnA92z/l8kEIM/MzjezdmZ2NcF9\nUU21Eqmcrm2pkDoJUil3XwZcTpBZvAIYCvxuO99zA/AbYB3b8WXi7k8DtwC3A+8ABxBkSBdtT3wi\nO/rD8iIAAACMSURBVAJd21KZ4ixSkaxhZlOBOu5+cqpjEZHE0bVd8+qkOgCR7WFmDYCLgBkEiVCn\nAX0j/xSRDKVrOz1oJEEympnVB14GDgHqE9xjHevuT6Y0MBHZLrq204M6CSIiIhKXEhdFREQkLnUS\nREREJC51EkRERCQudRJEREQkLnUSREREJC51EkRERCSu/wdYZr0oaZtOUwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.tl.rank_genes_groups(adata, 'true_groups')\n", "sc.pl.rank_genes_groups(adata, n_genes=20)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nXsszzzzDjh07KnW8vLy84sfPPfccd9xxB3PnzsU9dkaB2bNns2XLlnJ/x7Zt25gxYwZLlixh48aN\n3HPPPUycOJH8/PxyX3vzzTeXub+892/ZsmV8/PHHMWXvvPNOub830fsCsHjxYtatW0dhYSGzZs3i\nxRdfLPUYS5cu5aGHHmLs2LFMmjSJr7/+ukr1KiNsih0/XqIh0AloAcyptmhERJKgoKAAgJkzZzJ/\n/nzq1atHt27dGDZsWEy9evWC71bLli3j5ZdfBqB379706NEjpt6gQYNo3bo1DRo04LbbbuORRx6h\nbdu23HPPPZx55pnF9S644AKGDBlCXl4exx57LLfccgvNmjXj4osvZsGCBcX1+vTpw9y5cxk/fjyv\nvPIKffv25d5772X//fdnzJgxxfWik5YihYWF3Hjjjbz00ksx5WGP2aVLF6ImFyxu/1NPPcXrr79e\nXG/IkCF06tSJ/v37s+eee7JhwwZefvllhgwZwtSpUyt8vH79+vHqq68WJ3Znnnkms2bN4pJLLuGx\nxx4rrjdixAgOPPBAWrZsydlnn80ZZ5xBkyZNSrwP559/PkcddRRLlixh/vz5nHXWWdSrV49BgwYx\nffr04nqtWrWiVatW1KtXLya+BQsWxMQX9v0bOXIka9eupWHDhqxfv55HH30UgFGjRvHqq69W+H25\n9NJLcXd22mkn1q1bx3777ccee+zBM888w8SJE2PafMMNN7B161YOP/xwcnJyWLlyJW+//TbHH388\nF110UYXrVZq7V2oDDLgPuLGyx0jldvTRR3t5li9fXm6ddJAp7XDPnLZkSjuARV4Lzuf4Lf78btmy\npQ8aNMj3228/37Jli7sHn0F8vccff9wvvfRSHzJkiA8YMMAnTpzov/nNb/y6666LqdetW7fix199\n9ZX36tXLZ82a5T169Iip17Vr1+LH7dq1K37cvXv3mHpFr+vatasXFhYWl//iF7+Iqde4cWPv0aOH\nd+/e3Xv06OE9evTwY4891ps2berxwh5z3LhxPnjwYJ8/f35xWZ8+fUoc74QTTihRlqg87PGi4yuy\nfPnymPfW/af36rPPPvM777zTu3Xr5r179/YJEyYkrOfunp2dXfz4xBNPjKk3Y8YM79+/vz/22GO+\nffv2UPHt2LGjuDz+/evSpUvx448++si7devmTz/9dIl/C2Hfl+j3o0OHDgnbV1rbevbs6e7uJ510\nUqXqxQt7flf6op+7e2QF0NeB26ue0tQeZV1DFZH08/rrrzN37lxGjBhBgwYNmDp1KitWrODaa6+N\nqTdo0CBOOukk5s2bx9q1a9mxYwdDhw4t7tEo8uOPP7Jx40Z23313srKyeO655xg+fDiLFy+Oqdeq\nVSuGDh1KYWEhHTt25IorrqBp06Y0b948pt7y5csZNGgQn376Kdu2baNx48YAJbrl27Vrx8yZM9lz\nzz2Ly3Jzc/ntb39bos3Lly/noosuKveYV199NQUFBfz973/nwQcfLHEZp8gZZ5zBaaedRvfu3dlj\njz3YsGEDr732Gqeffnqljvf+++/TtWtXli9fTl5eHnvttVfx+5pI69atGTlyZHEPQPxlpOjP6IEH\nHih+XFgY26Her18/+vXrxwsvvMCgQYPo3Lkz27dvL/H7ot+/goKCUt+/wsJCCgoKaNSoEZ06dWLm\nzJmcddZZJS51hH1foi8V3X77T/+1upecRLpFixaMHTuWTp068dprr3HYYYclbHN0vQULFpRar7Is\nUXChX2x2CjDF3ZuXW7mWyc7O9kWLFhU/T9SNNWfOHNq3bx/TjZWOcnNzMyYhypS2ZEo7zGyxu2cn\n+XdcDlwH7AssA65y9zfKek38+X322WdzzDHHkJeXx+LFizn11FMpKChgwYIFzJs3r7heoksH7k6f\nPn1iLh18/vnn/Pe//y3+T7Bly5acfPLJfPHFFxx33HExr33jjTdYsGABDRs2ZM8996RJkyacd955\n1K9fv7jeF198Ufw4KyuLhg0bMmHCBNq0aVM8vgNg9erVrFq1ikMOOYRmzZrx3HPP8c033zB48GAa\nNmwYE3f0Mffdd18aNWrEpk2bGDduXKljAnbs2MGUKVNYsWIFv/zlLznmmGNi9n/zzTcsWrSIxYsX\n06ZNGw4++OASdSC4xn/AAQfQtGlT7r33XqZPn87ChQsT/k746cvb9u3b6dSpE4cffnjxvhdffJHe\nvXvH1J8wYQK//vWvY8q+/fZbmjZtipkVH69NmzYAMTHOnj2bnj17sssuuwAwf/58cnJyuOKKK2KO\n99Zbb7HffvtRWFjI4sWLWblyJfvvvz9NmjThtNNOK6737rvvsmLFCtq0acPxxx/P1KlT+fjjj2nf\nvj0XXvjTzY9FA3l//PFHnnnmGVauXMnkyZNZtmxZzEDenJwctm3bxgEHHFD8GRddcotP2goLC5k5\ncyafffYZbdu25fTTT6devXq8/vrrdO3atbheQUEBTz75JF988QUdO3Zkw4YNbNy4kX79+rHvvvuW\n+rmEPb9DJRIJFvAygpP6DGCau48o9yBJYGa3AH+MK17r7vskqB4j/g/NiSeeyKuvvkq3bt2Kr6Hm\n5uYybNgw/v3vf1dv4DUsU/7TgsxpS6a0I9mJhJmdD0wFLgf+Hfl5MXCYu39Z2uviz+8ePXowf/58\nADp06EBOTg65ubn8+te/jrmOvcsuu8QkAhAkA0uWLOHbb78tLrvhhhvYsmULRxxxBPPnz2fnnXem\nfv36ZV6bLqpXr149fvGLX8TUK+36eYcOHcq9fl5QUMCPP/5Y4vp52KQobL3oL1svv/wyp512Gm++\n+WaJMQOlXeNft25dTIxFx7vnnnt4+eWXS/3yFva9SfRlMFF8WVlZocZcFP2fcOWVV9K4cWNOPPFE\nPvzwQxYtWsTTT/90j0HYJDX6eLvssgs9evTggw8+YPHixTHHC/v+VeSzi4+xb9++NGvWjGnTpsXE\nGC/0+R3m+gewMG57E3gW+C3QKMwxkrEBtwAf89MiYvsAe4d5bWWvobq7L1q0yNeuXes7duzwZ599\n1ufNm5fg6lLtkSnX490zpy2Z0g6SPEYCeAd4OK7sP8CYsl4Xf9727dvXR48e7TfccIN37drV77zz\nTr/11lv95JNPjql31FFHeV5eXol2Fl1TLlLd16arcv18+fLlCa+fJxpP0b179xLjKaLrFdVNVC/s\nmIuw1/gTHW/58uWVHsMRNr6wYy6KPqP4zyq+HdHP27dvX9yO+DESYY9XkTESRZ9d9Jbos4t+bXnH\njBb2/A41RsJr9wJeO9x9TVUPUnSrzujRo4u7mTZv3szo0aNj6oUdUav70UWqxswaAUcDd8btehE4\nviLHmj59OnPnzqVNmzbcfPPNTJ48mQ0bNvDUU0/F1HvuueeKr4VHe+GFF2KeV+badFn1knH9PNF4\nCoBevXpVql7YMRdhY6zuMRxhj1ekvDEXgwcPZujQoRxwwAEMHDiQbt26sWTJErKzY7+g77rrrtx6\n661s3ryZZs2acdddd5Gfn0+jRo0qdbxkfMbRMTZt2pS77rqLpk2bstNOOyV8byosTLZRtBHcLnpw\nZGtQkdcmYyPokdgCrAZWAU8C/xfmtZW9a6Oi2fZvf/tb/93vfufz5s3zsWPH+rnnnhtTr6CgwGfP\nnu1vvvmmu7tPmTLF77//fv/+++9j6s2aNcs3b95cbszu7kuWLPEHH3zQ77jjDn/sscf8tddeC/W6\n+++/P1S9VMqUb/KZ0g6S2CMBZAEOdI0rvxlYUdZrk31X1o4dO3z69Ok+duxYf/bZZ4u/AX/11VeV\nqhdt+/bt/uijj/rvfve7EvtycnJi7iBwd//www991qxZJequXr3at23blvD4lan3+eefF28FBQXu\n7r5x40afM2dOuTFu27atRIyJjvfee++VOF58TKW9N2Hjmzt3bqnHj/fVV1/5o48+6mPGjPEHHnjA\nP/zwwxJ1tmzZ4v/85z/9o48+8i1btvjf/vY3v/nmmxP2bIU5Xtj3zz38Z5coxgceeCBhjNHCnt9h\nx0g0BEYDvwEaE4yR2AJMAP7g7gVlvDxpIoM9dye4vNECuAn4GdDe3b9NUH84MBwgKyvr6KL7xEuT\nn5/PzjvvHFM2YMAAnnjiCSAYpFN0f/ngwYOZPHlycb1LLrmERx99tPhnkSFDhjBp0qTi51dccQUd\nOnRg48aNLFu2jK5du9KkSROef/55Hn744eJ63bp1Iysri2bNmtGzZ0969OhRIgsFGDduHPn5+bRt\n25Z3332XnXbaCXcnOzs75v72gQMHlrjuuHLlSg455BCmTJlS5vtSZOnSpXTs2DFU3eqS6DNJR5nS\njsMOOyxpYyTMLAv4Cujm7q9Hld8MDHD3tnH1q3x+p6NMaQdkTlsypR2hz+8w2QbwEPA1cClwWGS7\nlKAn4KEwx6iJDdgNWAdcU17dyn5jCZstlnY/+rXXXhtTL9H1tfjy6OflXddLdE12+fLllb4m6+5e\nWFhYYtuxY0eJ68Y1IVO+yWdKO0huj0QjYAdwblz5BOC1sl6reWLSU6a0JVPaEfb8Dnux/kLgPHef\nG1W23MxWE1xOuCzkcZLK3TeZ2TLgkGT9jvbt25coa9SoEWeccUZMWWn3o0ff1gSJr6+Vde2qvOt6\n1X1NFmC33XbjuOOOC7qwonoxlixZUuprRKrK3QvMbDHQC5getasXMCM1UYlIvLCJxFbgiwTlnwMp\nuayRiJntTHBpY36qY4HgNqOLL764zDqJBoHl5+eXGAR2ww03lHhty5YtGT58eEzZ1KlTmTlzJkuX\nLqVz586cfvrprFixovhyTLRGjRrxq1/9imHDhjFlypQSSU6RsAN6RJJgHDDFzN4luFtsBMHYiQdT\nGpWIFAubSPwNuNHMLvXIeIjIuIkbIvtSwszuBP4FfEkwRuIPwK7A5LJeV5s0btyYs88+u/j5iBGJ\np+Q4+eSTQx2vfv36nHPOOSXKs7KySn1NgwYNykx4wo5kF6lu7v6UmTUjGP+0L5ADnOruib7YiEgK\nlJpIJFjVsw/Q28w+iDw/gmDgZemzWSTf/sA/gObAN8DbwHH6I1O9Spv5LNFtrMuWLaN+/fr87Gc/\nKy575513+PnPfx5Tb/HixSxcuLB4atzjjjuuxG1QIgDu/gDwQLkVRSQlyuqRiJ+E+/m45ym/fODu\nF6Q6BvlJolXw9t577xKr4F199dVs27aNnj170q5dOzZs2MBjjz3GlClTuOeee1LYAhERqahSEwl3\nv7C0fSKJvPfee8VT1i5ZsoRzzz2XO++Mn0so6I2IntoWgilco+eGFxGR9KApFqXaJFoFb+DAgSxb\ntiymXnZ2Npdddhm9evUqXkXwlVde4aijjkpR5CIiUllKJKTa3H333eTl5dGiRQsAmjRpwuzZs5k+\nfXpMvXHjxvHBBx/w9ttv85///Ic999yT4cOHc+SRR6YibBERqQIlElJtjj322BJl9evX54ILSg5l\nOfLII5U4iIhkgHqpDkBERETSlxIJERERqbTQlzbMrC0wkmCdDQeWA3e5+ydJik1ERERquVA9EpFV\nNpcCHYGFBBM/dQKWmlmf5IUnIiIitVnYHonbgXHuHrPgg5ndAYwB5iZ8lYiIiGS0sGMk2gF/T1D+\n98g+ERERqYPCJhLfAImWhjw8sk+kRtx3330lyrZv386//vUv3nrrLSBYAXXChAnk5eXVdHgiInVO\n2EsbjwETzexA4K1I2S+AG4F7kxGYSKtWrWjVqhX16tXD3YFg6u2cnJyYKbbPO+88jjnmGPLy8vjD\nH/7AqaeeSvPmzTn//POZNy+Va8qJiGS+sInELcBWYBTQNFL2LTAW+Gv1hyUC48ePZ8aMGfTs2ZNB\ngwbRoEEDunTpUmKdjry8PG688UYAOnTowMiRIwGYNGlSTYcsIlLnhEok3P1HgkGVY8xs70iZLmlI\nUvXr149+/frxwgsvMGjQIDp37syOHTtK1Nt111259dZb2bRpE82aNeOuu+6iadOm7LTTTjH1tm/f\nzty5c2nWrBnHH388U6dO5YcffmDAgAHstddeFa4nIiLhb/+cY2Z7QpBAFCURZra7mc1JZoBSty1b\ntozWrVvzj3/8g44dO3LiiSfyzjvvxNSZNm0arVq1om/fvsydO5fNmzezadMmnnzyyZh65513HkuX\nLuXZZ5/lpJNOYu3atey2226cf/75lar33Xffcd999zFt2jTy8/MZPXo01113HatWrYqp98EHHwCw\ndetW7r77bi677DIefvhhjeEQkYwQdrDlycBOCcp3BnpVXzgiPxk5ciRjxoxh7NixnH766XTo0IGB\nAwcyatSomHqDBw/mf//7H//617847bTT2HXXXdljjz1K/MdfdAnkL3/5C2vXrmXkyJEMHjyYgoKC\nStW74IILaNasGXl5eRx77LG0b9+e0047jYsvvrhEOwBGjBhB48aNGTlyJPvvvz/9+/ePqbdt2zZm\nzJjBkiVL2LhxI/fccw8TJ04kPz8/pt7s2bPZsmVLqPcwOll57rnnuOOOO5g+fXrxmJMiX3/9NQDu\nzrPPPsuYMWN48sknE/YAiYhEK/PShpkdVvQQONTMmkftrg/0AVYnKTap4957773i8RBLlizh3HPP\n5de//nWJemHHSCS6BNKkSZMSl0DC1tu2bVtxMnD//ffTr18/AMwspp6Z4e6sWbOGyy67DDPjlFNO\nYdasWTH1zj//fI466iiWLFnC/PnzOeuss6hXrx6DBg2KWUF1xIgRHHjggbRs2ZKzzz6bM844gyZN\nmiR8D/v168err77KqFGjyMvL48wzz+TNN99kzpw5PPbYY8X1BgwYwKuvvspVV11F48aNOfHEE/nw\nww/p378/Tz/9dMJji4hA+WMkcgimw3bgtbh9BhQAVyUhLhEKCwspKCigUaNGdOrUiZkzZ3LWWWfx\n8ccfx9Qr+o9/8+bNZY6RmD59OnPnzuXggw/mj3/8I5MnT2bz5s0l/qN8+umnuf/+++nbty833ngj\nDzzwAAUFBSUulbRq1YqhQ4dSWFhIx44dueKKK2jatCnNmzePqTdq1CjOO+889tprL7p3784JJ5zA\nu+++y9lnnx1T74cffuDmm28GYM6cOVxzzTUA/OMf/4ip17ZtW+bPn8+qVav45z//ydlnn81OO+3E\nmWeeyeWXX57wvXzrrbd47bXgFO7Tpw/du3eP2V+vXtA5uWzZMl5++WUAevfuTY8ePRIeT0SkSHmJ\nRDuChGE50AVYH7WvAPja3fMTvVCkqu6++27y8vJo0aIFAE2aNGHChAnk5OTE1CtKENq0acPNN9/M\n5MmTyc/P56mnnoqp17t375jeAndn+fLlTJ8+PeZOkCuuuAJ3Z9WqVYwfP5799tuPTZs2cf311zNx\n4sTieo9Xurm/AAAdn0lEQVQ//jgffvgh++23H2vWrCEnJ4dPP/20xO/t2bMnJ5xwAgsXLuSNN97g\n0EMP5fDDD+e8886LqRd96eSBBx4oflxYWJjw/WndujUjR45k5MiRrF27tkQPB8D7779P165dWb58\nOXl5eey11178+OOPbNy4Mabe4MGDGTZsGAcccAADBw6kW7duLFmyhOzs7IS/W0SkSJmJhLuvADCz\nxu6+rWZCEgkce+yxJcrq16/PBRdcEFPWuHHjmG/3I0aMSHi8fv368dFHHzFkyJDib+SnnHIKL7zw\nQky9lStXFn9779ixIzNmzAAo8e38lFNOYe7cuYwfP55XXnmFvn378sknn3DTTTdx++23F9fr06cP\nc+fO5aOPPuLdd9+lRYsWzJkzhw8++IAxY8YU15s9ezZLly7lrbfeIi8vj2XLlnHSSSfx17/G3mE9\nbNgwIEiEZs2aRW5uLq1bt+aSSy4p0ea8vDxycnKoX79+8R0n+fn5TJgwIabeBRdcgLvz5ZdfUq9e\nPdasWcM+++yT8FKSiEi0sLd/KomQtHf11VdTUFDA3//+dx588MESgx2LRA8wjE4I4gcoFvUgzJw5\nk/nz51OvXj1GjBjBCSecUG69bt26FScERf7617+ydetWDj/8cHJycli5ciVvv/02xx9/PMccc0xx\nvUceeYT+/ftz5ZVXsssuu5Q5nmHkyJGsW7eOBg0asH79eh599FH23ntvbrzxRl599dXiekWTem3Y\nsIHFixdrUi8RCS30MuIimaBRo0b86le/YtiwYUyZMoXDDy858/vEiRMpLCykfv36nH766UCQDBSN\nWSiyfPlyLrroIj799FO2bdtG48aNAUrcZRG23nvvvccrr7wCwCWXXEKvXr146aWX6NmzJxdddFFx\nvaLxDMuXLy93PEOiAat33nlniXrRA1Y7duyoSb1EJDQlElInNWjQoMRtmkXat29foqxRo0acccYZ\nMWVF81mMHj2aBg2CU2nTpk2MHj263HqbN28uUa9FixaMHTuWTp068dprr3HYYcFNU/FjJAYPHszQ\noUNDjWdINGB14MCBLFu2LKZe9IDVpk2bljpgVUQknhIJkUo68MADS5TttttunHLKKeXW23XXXUv8\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.tl.rank_genes_groups(adata, 'true_groups', test_type='wilcoxon')\n", "sc.pl.rank_genes_groups(adata, n_genes=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As can be seen above, not on only does the wilcoxon-rank-sum test detect all marker genes, but there is also a clear difference to all other genes in ranking. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Case 2: No mean difference, smaller variance difference" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# n_cluster needs to be smaller than n_simulated_cells, n_marker_genes needs to be smaller than n_simulated_genes\n", "n_simulated_cells=1000\n", "n_simulated_genes=100\n", "n_cluster=100\n", "n_marker_genes=10\n", "# Specify parameter between 0 and 1 for zero_inflation and p, positive integer for r\n", "# Differential gene expression is simulated using reference parameters for all cells/genes \n", "# except for marker genes in the distinct cells. \n", "reference_zero_inflation=0.15\n", "reference_p=0.5\n", "reference_n=6\n", "cluster_zero_inflation=0.9\n", "cluster_p=0.5\n", "cluster_n=1" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This parameter initialization leads to the following expectations/ variances: \n", "\n", "$\\mathbb{E}[Z_r]=\\mathbb{E}[Z_c]=0.9$\n", "\n", "$\\mathbb{V}[Z_r]=6.39$\n", "\n", "$\\mathbb{V}[Z_c]=1.89$\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": true }, "outputs": [], "source": [ "adata=AnnData(np.multiply(binomial(1,reference_zero_inflation,(n_simulated_cells,n_simulated_genes)),\n", " negative_binomial(reference_n,reference_p,(n_simulated_cells,n_simulated_genes))))\n", "# adapt marker_genes for cluster \n", "adata.X[0:n_cluster,0:n_marker_genes]=np.multiply(binomial(1,cluster_zero_inflation,(n_cluster,n_marker_genes)),\n", " negative_binomial(cluster_n,cluster_p,(n_cluster,n_marker_genes)))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd\n", "smp='true_groups'\n", "true_groups_int=np.ones((n_simulated_cells,))\n", "true_groups_int[0:n_cluster]=0\n", "true_groups=list()\n", "for i,j in enumerate(true_groups_int):\n", " true_groups.append(str(j))\n", "adata.smp['true_groups']=pd.Categorical(true_groups, dtype='category')\n", "adata.uns[smp + '_order']=np.asarray(['0','1'])" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.tl.rank_genes_groups(adata, 'true_groups')\n", "sc.pl.rank_genes_groups(adata, n_genes=20)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n6i1dujRmRTyAo446iquuSjzVx+rVq6ldu3bMtKqLFy/mtNNOK2+TRESkBlEikUaysrK44oorSqyT\nk5PDVVddRb9+/TjggAPYsWMHzz//PCeddFKRusUtu3vjjTfGLLsrIiJSHCUSGeaee+5h2bJlLFq0\niHfffZdGjRrxk5/8hPPOO69I3bfffruw92LFihX85Cc/4a674hdaFBERKV7oRMLM2gMjgQ6AA2uA\nu939v0mKTcrpxBNP5MQTTyx8Hr+cbYGwy+7Ge+ihh/jFL36RcN/KlSt588032b59Oy1btuT0008v\ndnIuERFJf6ESichy3VOBpcDrkeKuwEoz+1HcGhySJu699162b99euHRukyZNmDZtGs899/2yBt26\ndYtZdAyCcRXPPvtskbEYo0aNYufOnRx//PGsWrWK9957j0WLFtG5c2cuu+yyKmqViIhUpbA9En8C\n7nH3UdGFZnY7MBZQIpGGTj311CJltWvX5sILv58wdODAgSxfvpzBgwfTs2dPAM4444yEa4a8/fbb\nzJkzB4Cf/exn9OvXj1mzZtG3b18lEiIiGSpsIpENXJCg/DHgusoLR6qbESNGsHv3bh577DEefvhh\nBg0aVGzdFi1aMG7cOI477jjmz59Phw4dgOASioiIZKZaIettAY5PUH58ZJ9ksHr16vHzn/+cSZMm\nsW3btiK3nBaYNGkShx9+OCtXrqRTp07ce++9ADzzzDNVGa6IiFShsD0STwATzKwN8GakrAvwW+D+\nZAQm1U+dOnVKvP20du3anH/++UXKs7KyYp5PmzaNvn370rBhwxLf7/PPP+eZZ56hWbNmDBw4kDvv\nvJP169dz8803065du/I1QkREKlXYHonRwJ3AjcAbke03wDjgj0mJTDLWsGHD6NOnDz/+8Y956qmn\n+OKLLxLWu/DCC2nWrBnbt2/n1FNP5eijj6Znz56lzqUhIiJVJ1SPhLt/RzCocqyZHRgp0yUNKZf2\n7dszd+5c1q9fzz//+U/OPfdc9tlnH370ox8xfPjwwnq7du0qHJPx4IMPMnDgQHJzc3niiSdijpef\nn8+LL74Ys75Ix44d+fGPf1xkZdT4dUg6duxYZJpxEREJL1SPhJlNN7NGECQQBUmEme1vZtOTGaBk\nrnbt2jFy5EjmzZvH008/XeSPfuvWrRkyZAhXXHEFxx57LFdffTUPPPAAzZs3j6k3ePBgPvjgAwYN\n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\nx8wOLQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.tl.rank_genes_groups(adata, 'true_groups', test_type='wilcoxon')\n", "sc.pl.rank_genes_groups(adata, n_genes=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With smaller difference in variance, still all marker genes are detected, but less clearly. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Case 3: Small difference in expectation, difference in variance " ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# n_cluster needs to be smaller than n_simulated_cells, n_marker_genes needs to be smaller than n_simulated_genes\n", "n_simulated_cells=1000\n", "n_simulated_genes=100\n", "n_cluster=100\n", "n_marker_genes=10\n", "# Specify parameter between 0 and 1 for zero_inflation and p, positive integer for r\n", "# Differential gene expression is simulated using reference parameters for all cells/genes \n", "# except for marker genes in the distinct cells. \n", "reference_zero_inflation=0.15\n", "reference_p=0.5\n", "reference_n=6\n", "cluster_zero_inflation=0.9\n", "cluster_p=0.55\n", "cluster_n=2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This parameter initialization leads to the following expectations/ variances: \n", "\n", "$\\mathbb{E}[Z_r]=0.9$\n", "\n", "$\\mathbb{E}[Z_c]=1.47$\n", "\n", "$\\mathbb{V}[Z_r]=6.39$\n", "\n", "$\\mathbb{V}[Z_c]=2.92$\n" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "adata=AnnData(np.multiply(binomial(1,reference_zero_inflation,(n_simulated_cells,n_simulated_genes)),\n", " negative_binomial(reference_n,reference_p,(n_simulated_cells,n_simulated_genes))))\n", "# adapt marker_genes for cluster \n", "adata.X[0:n_cluster,0:n_marker_genes]=np.multiply(binomial(1,cluster_zero_inflation,(n_cluster,n_marker_genes)),\n", " negative_binomial(cluster_n,cluster_p,(n_cluster,n_marker_genes)))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": true }, "outputs": [], "source": [ "smp='true_groups'\n", "true_groups_int=np.ones((n_simulated_cells,))\n", "true_groups_int[0:n_cluster]=0\n", "true_groups=list()\n", "for i,j in enumerate(true_groups_int):\n", " true_groups.append(str(j))\n", "adata.smp['true_groups']=pd.Categorical(true_groups, dtype='category')\n", "adata.uns[smp + '_order']=np.asarray(['0','1'])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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\nZnml6aUuK+AAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.tl.rank_genes_groups(adata, 'true_groups')\n", "sc.pl.rank_genes_groups(adata, n_genes=20)" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "image/png": "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\ntGzAgAEJr40+Xl5eXunjE088MaZe06ZN/YQTTvA+ffp4nz59Sh/vs88+MfV69eqV8B7JyuPbceKJ\nJ/ratWu9b9++VTqeu/sJJ5zg7u69e/f24uLi0vJjjz222vWiHX/88WXG8vbbb/vxxx/vTz/9dOnr\nS0QfJzc3t/Rx/O+i5PlHH33kd911lx9//PHev39/v++++8o8XpcuXco8Xth2hP1Mol/3xRdfeL9+\n/XzGjBkJ7Q372T377LM+bNgwnzx5su/YscPdk/9bLStGd0+IMV7Y87vK80i4u0dWAH0NuK2qx6kr\nvvzyS/bff3/cnRkzZpCfn0/jxo05+OCDadiwXk23IZJ1LrnkEoCE8/uKK66IqXfVVVdRVFTE3/72\nNx544AGGDUve2VpUVFT6+P777y99XFwcexNbbm4u06dPp3nz5jHl/fr1i3mel5fHpZdeSr9+/dhz\nzz3ZvHkzc+fOpVu3bjH1DjvsMC677DIOP/xwXn31VU444QQAdu7cWaXjAaxdu5bzzz+fDz/8kO3b\nt9O0aVMgmOukKvXeeustevXqRX5+fmnX/K5du/juu9iha8XFxRQVFdG4cWMOP/xwpk+fzumnn847\n77wTU69t27ZcfPHFFBcXc9hhh3H55Zezzz770LJly4S2ALRv354xY8aU9njMmDEjZn/07+q2277/\nr8vjeuffeustevfuzdq1a8ttR9jPpOS1P/jBD2jTpg2zZs1i5MiRLF++PKZe2M9uyJAhDBkyhBde\neIHzzjuPHj16sGPHjqS/k+gYFyxYUGaMVRXq0kaZLzY7BZji7sk/0TosvuuzpHvpiiuuoGnTppx4\n4om89NJLfPrppzz9dOgpNeqkbOlGh+xpS7a0ozYubZjZaOD/CAZTrwGudPfXy3tNWef3r371K5o1\na1bu+V1y/Xyfffbh3nvvZdq0aSxatCimzjfffMM+++yDmcWMFwBirjuvX7+eli1b0qhRo9IEpn37\n9vz85z+nUaNGMcdcsWIFixcvpqCggObNm9OjRw927tyZcB172bJlfPTRR+y///588cUXNGjQgDPO\nOCNh/MGbb77JvHnz2LFjBw0bNsTMknZjf/LJJ6WP999/fxo3bsyWLVuYMGEC48ePL9338ccfs2nT\nJnbt2sWRRx7J7NmzadiwITk5OQwYMKC03owZM+jXr1/MWIWtW7fy/vvv07Vr15j43n33XTp06EDP\nnj2ZOnUq77zzDp07d+acc76/afD555+nZcuWdOzYkRYtWvDSSy/h7vTv35+cnJzSenPmzGHfffet\ncOzD2rVr6dixY8xr//SnP9GuXTt+9rOfJfx+4PsxISWXQaLbMXPmTFq0aMH69es55JBD6Nq1K/n5\n+Rx66KExn8nHH3/MZ599VpqYtG7dmpNPPplPPvmE7t27l9b78ssv2bBhA4sWLWLz5s3s2rWLBg0a\ncM011yR8qV21ahVvvPEG3377La1ateLzzz/nN7/5TdI2/Otf/2L+/PkMGjSIww8/HICFCxfSs2fP\npPUh/PkddoxE/AJeRnBSnwY87u6jKjxIHRP/h6Zv37688sorpT8h+GM/evRo5s+fn64wa0S2/KcF\n2dOWbGlHqhMJMzsLmAqMBv4V+fkLoJO7f1rW66p6foe9fl7Z8QLRCcy///1vli1bFpPAhB1Lkex9\nZ8+eTZcuXWK+XV900UUANG7cuNx2VOa9wx4z7FiFwYMHc/TRR1NQUMDy5cs59dRTKSoqYsGCBbz4\n4ouVPt6FF14IUOFnFz0OpqStycYWlPyu77nnHl555ZUyP+Nk8W3YsCHh/B47dixbt27liCOOYP78\n+ey2227k5OTQs2dPzj///NJ6Yf/NJDtegwYNOPbYY2OOB8F4lK+++oqGDRuWjkfZd999E8ZnxKvR\nMRLAorjtDeB54FdA4zDHqGtb/DXUv//9737RRRf5iBEj/Nxzz/VJkyb5sGHD/Jprrin3GlImyJbr\n8e7Z05ZsaQcpHiMBLAH+Glf2PnB7ea+r6vldlevn5Y0XOOmkk2J+lnW8krEU0VuysRTJ3nft2rUJ\n7xu2HdHvXTKGo6z3DnvMsGMVol/XuXPn0rbEjxmo6bEPYcfBhP2Mk8V37LHHJsQXP36mZHxC/L+N\nsP9mwh7PPfl4lKVLlyb8ruOFPb9DXfz3ur+AV7Wdd955nHTSSbz44ots3LiRnTt3MnToUAYPHpzu\n0ETqJTNrDBwF3BW36yWCFX5DC3t+h71+Hna8wAUXXMDFF1/MD3/4Q4YPH87xxx/PypUrE27lCzuW\nIuz7hm1HZd67MseEiscq7L777tx6663873//o0WLFvzxj3+ksLCQxo0bV+l4YeMLOw4m7O86WXyv\nv/56wlo6rVq14s477ywdS9GpUycgcVxN2H8zYY9XUhY/HmX48OGsWbMmaVsqLUy24d9/E2hIMNPk\n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\nhJn9wMxmpzLAyjCz3YBDgS/THYuIiEh9EHaw5clA4jrUsBuQtjWnzewuMzvezNqb2U+AZ4DdgUfT\nFZOIiEh9Uu6lDTPrVPIQOMTMWkbtzgEGAOtTFFsYBwJPAC0J7h5ZDHR390/SGJOIiEi9UdEYidUE\n02E78GrcPgOKSOM8Eu5+drreW0RERCpOJHIJEoa1QC9gU9S+IuBLd9dKSyIiIvVUuYmEu78LYGZN\n3X177YQkIiIimSLUYEslESIiIpJM2Ls2RERERBIokRAREZEqUyIhIiIiVaZEQkRERKqsWomEmY03\ns/tqKhgRERHJLNXtkegHDK6JQERERCTzVCuRcPde7t6mpoIRibZjxw7+8Y9/sHDhQgCmTp3K448/\nTkFBQZojExGREmFX/zzGzHKSlDcws2NqPiwROPPMM1m1ahXPP/88J510Ehs3bqRZs2acddZZMfVW\nrFgBwLZt27j77ru59NJLueOOO5RwiIjUgrA9EouAFknK947sE6lxBQUFXH/99fz+979n48aNjBkz\nhtNPP52ioqKYemPGjAFg1KhRNG3alDFjxvCjH/2IYcOGxdTbvn07zz77LCtXruS7777jnnvuYdKk\nSRQWlj3L++rVq3nyySdZunRpqJjvu09DhkSkfqlorY0SRrBwV7y9ga01F47I93bffXduvfVWtmzZ\nQosWLfjjH//Itm3baNIkdkV7M8Pd2bBhA5deeilmxiGHHJLwn/pZZ51Ft27dWLlyJfPnz+f000+n\nQYMGnHfeeUybNq203oABA5gzZw4TJ05k7ty5DBw4kHvvvZcDDzyQ22+/vbRer169MDMA3IPTY82a\nNTz11FO89tprqfq1iIjUKRUtI/505KEDD5lZ9FTZOUBXgqW7RWrc008/zZ///GcGDhzI9ddfz/33\n38+OHTt48sknY+qNGzeOM888k7322os+ffpw3HHHkZ+fz+DBseOAv/32W8aPHw/A7NmzufrqqwF4\n4oknYuqV9HhMnz6d+fPn06BBA0aNGsVxxx0XU2/IkCG8/fbbjBgxgj59+gBwyimn8MILL8TUW7Fi\nBUceeSTbtm3jgQce4J133mH33Xdn/Pjx7LXXXqX1Zs6cSd++fWnWrFm5v5eCgoLS182aNYvVq1fT\noUMHhg4dWprYlOe+++7jl7/8ZYX1RETCqKhHojjy04BdUc8BtgGPAX9JQVwiXH755bg769atY+LE\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sc.tl.rank_genes_groups(adata, 'true_groups', test_type='wilcoxon')\n", "sc.pl.rank_genes_groups(adata, n_genes=20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As can be seen above, t-test fares better as soon as there is a difference in mean exists and difference in vairance decreases, but the ranking is less still worse" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.3" } }, "nbformat": 4, "nbformat_minor": 2 }