{ "cells": [ { "cell_type": "markdown", "id": "ad78d3cf", "metadata": {}, "source": [ "Makes connectivity matrices for use in supplementary movies showing effect of resampling cell populations" ] }, { "cell_type": "code", "execution_count": 1, "id": "21154393", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from datetime import datetime\n", "import sys\n", "import os" ] }, { "cell_type": "code", "execution_count": null, "id": "b0a86618", "metadata": {}, "outputs": [], "source": [ "# set location of ALVariability/\n", "file_path = '../../ALVariability/analysis/make_connectivity_matrices.ipynb'\n", "project_dir = os.path.join(file_path.split('ALVariability')[0], 'ALVariability')\n", "\n", "sys.path.append(project_dir)\n", "from utils.plot_utils import plot_scaled_hmap, set_font_sizes\n", "from utils.make_vols import adjust_glomerular_synapses_AL_block, plot_comparison_cones\n", "\n", "set_font_sizes()" ] }, { "cell_type": "code", "execution_count": 3, "id": "70a03357", "metadata": {}, "outputs": [], "source": [ "# read in table of neurons and connectivity matrix\n", "df_neur_ids = pd.read_csv(os.path.join(project_dir, 'connectomics/hemibrain_v1_2/df_neur_ids.csv'), index_col=0)\n", "al_block = pd.read_csv(os.path.join(project_dir, 'connectomics/hemibrain_v1_2/AL_block.csv'), index_col=0)\n", "al_block.columns = al_block.columns.astype(np.int64)\n", "al_block.index = al_block.index.astype(np.int64)" ] }, { "cell_type": "code", "execution_count": 4, "id": "3afc9272", "metadata": {}, "outputs": [], "source": [ "og_orn_order = df_neur_ids[df_neur_ids.altype == 'ORN'].bodyId.values\n", "og_ln_order = df_neur_ids[df_neur_ids.altype == 'LN'].bodyId.values\n", "og_upn_order = df_neur_ids[df_neur_ids.altype == 'uPN'].bodyId.values\n", "og_mpn_order = df_neur_ids[df_neur_ids.altype == 'mPN'].bodyId.values" ] }, { "cell_type": "code", "execution_count": 5, "id": "fd873bd6", "metadata": {}, "outputs": [], "source": [ "def resample_ORNs():\n", " random_ORN_sample = []\n", " orn_gloms = df_neur_ORNs.glom.unique() \n", " for g in orn_gloms:\n", " glom_orn_bodyIds = df_neur_ORNs[df_neur_ORNs.glom == g].bodyId.values\n", " random_glom_ORN_sample = np.random.choice(glom_orn_bodyIds, len(glom_orn_bodyIds), replace=True)\n", " random_ORN_sample.append(random_glom_ORN_sample)\n", " random_ORN_sample = np.concatenate(random_ORN_sample)\n", " return random_ORN_sample\n", "\n", "def resample_LNs():\n", " LN_ids = og_ln_order.copy()\n", " random_LN_sample = np.random.choice(LN_ids, len(LN_ids), replace=True)\n", " \n", " df_neur_LNs['LN_order'] = np.arange(len(df_neur_LNs))\n", " random_LN_sample_sorted_by_neurId = (df_neur_LNs\n", " .set_index('bodyId')\n", " .loc[random_LN_sample]\n", " .sort_values('LN_order', ascending=True)\n", " ).index.values\n", " return random_LN_sample_sorted_by_neurId\n", " \n", "def resample_PNs():\n", " # resample within PN glomeruli to get random uPN sample\n", " random_uPN_sample = []\n", " pn_gloms = df_neur_PNs.glom.unique() \n", " for g in pn_gloms:\n", " glom_pn_bodyIds = df_neur_PNs[df_neur_PNs.glom == g].bodyId.values\n", " random_glom_PN_sample = np.random.choice(glom_pn_bodyIds, len(glom_pn_bodyIds), replace=True)\n", " random_uPN_sample.append(random_glom_PN_sample)\n", " final_upn_order = np.concatenate(random_uPN_sample)\n", " \n", " mpn_bodyIds = df_neur_PNs[df_neur_PNs.altype == 'mPN'].bodyId.values\n", " final_mpn_order = np.random.choice(mpn_bodyIds, len(mpn_bodyIds), replace=True)\n", " # concatenate\n", " final_PN_ids = np.concatenate((final_upn_order, final_mpn_order))\n", " return final_upn_order, final_mpn_order" ] }, { "cell_type": "code", "execution_count": 6, "id": "be22dad7", "metadata": {}, "outputs": [], "source": [ "# set save directory\n", "\n", "# get time tag\n", "n = datetime.now()\n", "day_tag = '{}_{}_{}'.format(n.year, n.month, n.day)\n", "\n", "plot_dir = 'connectivity_matrices_' + day_tag + '/'\n", "# make directory if doesn't exist already\n", "if not os.path.isdir(plot_dir):\n", " os.makedirs(plot_dir)" ] }, { "cell_type": "code", "execution_count": 9, "id": "51cf3a1f", "metadata": {}, "outputs": [], "source": [ "# number of matrices to include per set\n", "# (to be used later in gif)\n", "n_mats = 10\n", "\n", "# specify which schemes of variation to include\n", "# columns: ORN resampling, LN resampling, PN resampling, PN synapse density\n", "# i.e. [1, 0, 0, 0] resamples ORNs only\n", "# and [1, 1, 1, 0] resamples ORNs, LNs, PNs, but no PN synapse density variation\n", "member_array = np.array([\n", " [1, 0, 0, 0], \n", " [0, 1, 0, 0],\n", " [0, 0, 1, 0],\n", " [0, 0, 0, 1],\n", " [1, 1, 1, 0],\n", " [1, 1, 1, 1]]).T\n", "\n", "member_array = np.repeat(member_array, n_mats, 1).T" ] }, { "cell_type": "code", "execution_count": 11, "id": "9e4471a6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "resample_ORN_conmat_0\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "../../ALVariability\\utils\\plot_utils.py:63: RuntimeWarning: divide by zero encountered in log10\n", " sns.heatmap(np.log10(mat), ax=ax,\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "resample_ORN_conmat_1\n", "resample_ORN_conmat_2\n", "resample_ORN_conmat_3\n", "resample_ORN_conmat_4\n", "resample_ORN_conmat_5\n", "resample_ORN_conmat_6\n", "resample_ORN_conmat_7\n", "resample_ORN_conmat_8\n", "resample_ORN_conmat_9\n", "resample_LN_conmat_10\n", "resample_LN_conmat_11\n", "resample_LN_conmat_12\n", "resample_LN_conmat_13\n", "resample_LN_conmat_14\n", "resample_LN_conmat_15\n", "resample_LN_conmat_16\n", "resample_LN_conmat_17\n", "resample_LN_conmat_18\n", "resample_LN_conmat_19\n", "resample_PN_conmat_20\n", "resample_PN_conmat_21\n", "resample_PN_conmat_22\n", "resample_PN_conmat_23\n", "resample_PN_conmat_24\n", "resample_PN_conmat_25\n", "resample_PN_conmat_26\n", "resample_PN_conmat_27\n", "resample_PN_conmat_28\n", "resample_PN_conmat_29\n", "resample_PN_densityconmat_30\n", "resample_PN_densityconmat_31\n", "resample_PN_densityconmat_32\n", "resample_PN_densityconmat_33\n", "resample_PN_densityconmat_34\n", "resample_PN_densityconmat_35\n", "resample_PN_densityconmat_36\n", "resample_PN_densityconmat_37\n", "resample_PN_densityconmat_38\n", "resample_PN_densityconmat_39\n", "resample_ORN_LN_PN_conmat_40\n", "resample_ORN_LN_PN_conmat_41\n", "resample_ORN_LN_PN_conmat_42\n", "resample_ORN_LN_PN_conmat_43\n", "resample_ORN_LN_PN_conmat_44\n" ] }, { "ename": "MemoryError", "evalue": "Unable to allocate 24.6 MiB for an array with shape (25745476,) and data type bool", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mMemoryError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 50\u001b[0m \u001b[0mneur_sets\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mfinal_ORN_ids\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal_LN_ids\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal_upn_order\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfinal_mpn_order\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 51\u001b[0m \u001b[0mneur_set_names\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[1;34m'ORN'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'LN'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'uPN'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m'mPN'\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 52\u001b[1;33m cmap='plasma_r')\n\u001b[0m\u001b[0;32m 53\u001b[0m plt.savefig(os.path.join(plot_dir, savetag + '.png'), \n\u001b[0;32m 54\u001b[0m \u001b[1;31m#dpi=400, bbox_inches='tight')\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\deBivort\\projects\\ALVariability\\utils\\plot_utils.py\u001b[0m in \u001b[0;36mplot_scaled_hmap\u001b[1;34m(fig, conmat, neur_sets, neur_set_names, cmap)\u001b[0m\n\u001b[0;32m 95\u001b[0m \u001b[0max\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd_subplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mgs\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 96\u001b[0m \u001b[0mmat\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mconmat\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mneur_sets\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mi\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mneur_sets\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 97\u001b[1;33m \u001b[0mplot_mat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcbar_ax\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcmap\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 98\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 99\u001b[0m \u001b[1;31m# remove tick labels\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\deBivort\\projects\\ALVariability\\utils\\plot_utils.py\u001b[0m in \u001b[0;36mplot_mat\u001b[1;34m(mat, ax, cbar_ax, cmap)\u001b[0m\n\u001b[0;32m 65\u001b[0m \u001b[0mvmin\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mvmax\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 66\u001b[0m \u001b[0mcbar_kws\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;33m{\u001b[0m\u001b[1;34m'label'\u001b[0m\u001b[1;33m:\u001b[0m \u001b[1;34mr'$\\log_{10}$ # synapses'\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 67\u001b[1;33m cbar_ax=cbar_ax)\n\u001b[0m\u001b[0;32m 68\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 69\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mplot_scaled_hmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfig\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mconmat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mneur_sets\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mneur_set_names\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcmap\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;34m'jet'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\Anaconda3\\envs\\ALVar\\lib\\site-packages\\seaborn\\_decorators.py\u001b[0m in \u001b[0;36minner_f\u001b[1;34m(*args, **kwargs)\u001b[0m\n\u001b[0;32m 44\u001b[0m )\n\u001b[0;32m 45\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m{\u001b[0m\u001b[0mk\u001b[0m\u001b[1;33m:\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0marg\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mzip\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparameters\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m}\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 46\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 47\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0minner_f\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 48\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\Anaconda3\\envs\\ALVar\\lib\\site-packages\\seaborn\\matrix.py\u001b[0m in \u001b[0;36mheatmap\u001b[1;34m(data, vmin, vmax, cmap, center, robust, annot, fmt, annot_kws, linewidths, linecolor, cbar, cbar_kws, cbar_ax, square, xticklabels, yticklabels, mask, ax, **kwargs)\u001b[0m\n\u001b[0;32m 546\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0msquare\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 547\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mset_aspect\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"equal\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 548\u001b[1;33m \u001b[0mplotter\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcbar_ax\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 549\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 550\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\Anaconda3\\envs\\ALVar\\lib\\site-packages\\seaborn\\matrix.py\u001b[0m in \u001b[0;36mplot\u001b[1;34m(self, ax, cax, kws)\u001b[0m\n\u001b[0;32m 296\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 297\u001b[0m \u001b[1;31m# Draw the heatmap\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 298\u001b[1;33m \u001b[0mmesh\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0max\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpcolormesh\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot_data\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcmap\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcmap\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkws\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 299\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 300\u001b[0m \u001b[1;31m# Set the axis limits\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\Anaconda3\\envs\\ALVar\\lib\\site-packages\\matplotlib\\__init__.py\u001b[0m in \u001b[0;36minner\u001b[1;34m(ax, data, *args, **kwargs)\u001b[0m\n\u001b[0;32m 1445\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0minner\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mNone\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1446\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 1447\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0mmap\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0msanitize_sequence\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0margs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 1448\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 1449\u001b[0m \u001b[0mbound\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnew_sig\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mbind\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0max\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;32m~\\Anaconda3\\envs\\ALVar\\lib\\site-packages\\matplotlib\\axes\\_axes.py\u001b[0m in \u001b[0;36mpcolormesh\u001b[1;34m(self, alpha, norm, cmap, vmin, vmax, shading, antialiased, *args, **kwargs)\u001b[0m\n\u001b[0;32m 6097\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6098\u001b[0m \u001b[1;31m# convert to one dimensional arrays\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 6099\u001b[1;33m \u001b[0mC\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mC\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mravel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6100\u001b[0m \u001b[0mcoords\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcolumn_stack\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mY\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mastype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfloat\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcopy\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 6101\u001b[0m collection = mcoll.QuadMesh(Nx - 1, Ny - 1, coords,\n", "\u001b[1;32m~\\Anaconda3\\envs\\ALVar\\lib\\site-packages\\numpy\\ma\\core.py\u001b[0m in \u001b[0;36mravel\u001b[1;34m(self, order)\u001b[0m\n\u001b[0;32m 4585\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_update_from\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4586\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_mask\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mnomask\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4587\u001b[1;33m \u001b[0mr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_mask\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mndarray\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mravel\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_mask\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0morder\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0morder\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mreshape\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4588\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4589\u001b[0m \u001b[0mr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_mask\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mnomask\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", "\u001b[1;31mMemoryError\u001b[0m: Unable to allocate 24.6 MiB for an array with shape (25745476,) and data type bool" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "df_neur_ORNs = df_neur_ids.copy()[df_neur_ids.altype == 'ORN']\n", "df_neur_LNs = df_neur_ids.copy()[df_neur_ids.altype == 'LN']\n", "df_neur_PNs = df_neur_ids.copy()[df_neur_ids.altype.isin(['uPN', 'mPN'])]\n", "\n", "for im in range(member_array.shape[0]):\n", " # specify what operations to do on the connectivity matrix\n", " cur_row = member_array[im]\n", " RESAMPLE_ORNs, RESAMPLE_LNs, RESAMPLE_PNs, ADJUST_PN_INPUTS = cur_row\n", " \n", " # get original ordering/IDs of all cell types\n", " final_ORN_ids = df_neur_ORNs.bodyId.values\n", " final_LN_ids = df_neur_LNs.bodyId.values\n", " final_upn_order = og_upn_order.copy()\n", " final_mpn_order = og_mpn_order.copy()\n", " final_PN_ids = np.concatenate((final_upn_order, final_mpn_order))\n", " \n", " savetag = 'resample_'\n", " \n", " # do resampling\n", " if RESAMPLE_ORNs:\n", " final_ORN_ids = resample_ORNs()\n", " savetag += 'ORN_'\n", " if RESAMPLE_LNs:\n", " final_LN_ids = resample_LNs()\n", " savetag += 'LN_'\n", " if RESAMPLE_PNs:\n", " final_upn_order, final_mpn_order = resample_PNs()\n", " savetag += 'PN_'\n", " \n", " # get final bodyIds as a result of resampling\n", " final_bodyIds = np.concatenate((final_ORN_ids, final_LN_ids, final_upn_order, final_mpn_order))\n", " df_neur_ids_resampled = df_neur_ids.set_index('bodyId').loc[final_bodyIds].reset_index()[df_neur_ids.columns]\n", "\n", " # and, reorder al_block\n", " al_block.columns = al_block.columns.astype(np.int64)\n", " al_block_resampled = al_block.copy().loc[final_bodyIds, final_bodyIds]\n", "\n", " # add PN synapse density variation if desired\n", " if ADJUST_PN_INPUTS:\n", " al_block_resampled = adjust_glomerular_synapses_AL_block(df_neur_ids_resampled, al_block_resampled)\n", " savetag += 'PN_density'\n", " \n", " savetag += 'conmat_' + '{}'.format(im)\n", " print(savetag)\n", " \n", " # plot \n", " fig = plt.figure(figsize=(13,13))\n", " plot_scaled_hmap(fig=fig,\n", " conmat = al_block_resampled,\n", " neur_sets = [final_ORN_ids, final_LN_ids, final_upn_order, final_mpn_order],\n", " neur_set_names = ['ORN', 'LN', 'uPN', 'mPN'],\n", " cmap='plasma_r')\n", " plt.savefig(os.path.join(plot_dir, savetag + '.png'), \n", " #dpi=400, bbox_inches='tight')\n", " dpi=40, bbox_inches='tight')\n", " plt.close()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" } }, "nbformat": 4, "nbformat_minor": 5 }